मुख्य कंटेंट पर जाएं
Didit ने पहचान और धोखाधड़ी के लिए इंफ्रास्ट्रक्चर बनाने हेतु $7.5M जुटाए
Didit
ब्लॉग पर वापस जाएँ
ब्लॉग · 6 मार्च 2026

Fastify और PostgreSQL के साथ एक Didit वेबहुक लिसनर बनाना (HI)

Node.js, Fastify और PostgreSQL का उपयोग करके Didit की रीयल-टाइम पहचान सत्यापन सूचनाओं के लिए एक मजबूत और सुरक्षित वेबहुक लिसनर कैसे बनाया जाए, यह जानें।.

द्वारा Diditअपडेट किया गया
building-a-didit-webhook-listener-with-fastify-postgresql.png

सुरक्षित वेबहुक इंटीग्रेशनDidit वेबहुक पेलोड की प्रामाणिकता और अखंडता सुनिश्चित करने, आपके एप्लिकेशन को जाली अनुरोधों से बचाने और डेटा सुरक्षा बनाए रखने के लिए HMAC-SHA256 हस्ताक्षर सत्यापन लागू करना महत्वपूर्ण है।

रीयल-टाइम डेटा प्रोसेसिंगपहचान सत्यापन सत्र स्थिति परिवर्तनों पर तुरंत सूचनाएं प्राप्त करने के लिए वेबहुक का उपयोग करें, जिससे आपका एप्लिकेशन तुरंत प्रतिक्रिया दे सके और उपयोगकर्ता ऑनबोर्डिंग या जोखिम प्रबंधन वर्कफ़्लो को स्वचालित कर सके।

स्केलेबल डेटा स्टोरेजवेबहुक डेटा को कुशलतापूर्वक स्टोर और प्रबंधित करने के लिए PostgreSQL का लाभ उठाएं, जिससे मजबूत क्वेरी, ऑडिटिंग और आपकी मौजूदा उपयोगकर्ता प्रबंधन प्रणालियों के साथ एकीकरण की अनुमति मिलती है, जिससे डेटा की निरंतरता और विश्वसनीयता सुनिश्चित होती है।

Didit का मॉड्यूलर लाभDidit का मॉड्यूलर पहचान प्लेटफ़ॉर्म और व्यापक वेबहुक सिस्टम एकीकरण को सरल बनाता है, डेवलपर्स को स्वच्छ API और रीयल-टाइम डेटा प्रवाह प्रदान करता है ताकि फ्री कोर KYC और कोई सेटअप शुल्क के साथ लचीले, AI-देशी KYC समाधान बनाए जा सकें।

Didit वेबहुक और उनका महत्व समझना

पहचान सत्यापन की दुनिया में, रीयल-टाइम फीडबैक सर्वोपरि है। चाहे आप नए उपयोगकर्ताओं को ऑनबोर्ड कर रहे हों, धोखाधड़ी को रोक रहे हों, या अनुपालन सुनिश्चित कर रहे हों, सत्यापन सत्र की स्थिति को जानना महत्वपूर्ण है। यहीं पर वेबहुक काम आते हैं। Didit के वेबहुक आपकी पहचान सत्यापन वर्कफ़्लो के भीतर होने वाली घटनाओं, जैसे कि सत्र पूरा होना, विफल होना, या आगे की कार्रवाई की आवश्यकता, के बारे में सूचनाएं प्राप्त करने का एक स्वचालित तरीका प्रदान करते हैं।

अपडेट के लिए Didit API को लगातार पोल करने के बजाय, जो अक्षम हो सकता है और देरी का कारण बन सकता है, वेबहुक सीधे आपके कॉन्फ़िगर किए गए एंडपॉइंट पर डेटा भेजते हैं। यह इवेंट-ड्रिवन आर्किटेक्चर सुनिश्चित करता है कि आपके एप्लिकेशन के पास हमेशा सबसे अद्यतित जानकारी हो, जिससे तत्काल प्रसंस्करण और एक सहज उपयोगकर्ता अनुभव की अनुमति मिलती है। उदाहरण के लिए, एक बार जब कोई उपयोगकर्ता सफलतापूर्वक Didit के आईडी सत्यापन और पैसिव और एक्टिव लाइवनैस जांच को पूरा कर लेता है, तो एक वेबहुक आपके ऑनबोर्डिंग प्रवाह में अगले चरण को तुरंत ट्रिगर कर सकता है।

Didit कॉन्फ़िगर करने योग्य वेबहुक संस्करण प्रदान करता है, जिसमें v3 अपनी व्यापक पेलोड संरचना के लिए अनुशंसित मानक है। आप Didit बिजनेस कंसोल के माध्यम से या API के माध्यम से अपना वेबहुक URL, संस्करण सेट कर सकते हैं, और यहां तक कि डेटा प्रतिधारण नीतियों को भी परिभाषित कर सकते हैं, जिससे आपको अपने डेटा प्रवाह और अनुपालन दायित्वों पर पूर्ण नियंत्रण मिलता है।

अपने Fastify वेबहुक लिसनर को स्थापित करना

Fastify Node.js के लिए एक तेज़ और कम ओवरहेड वाला वेब फ्रेमवर्क है, जो इसे प्रदर्शनकारी वेबहुक लिसनर बनाने के लिए एक उत्कृष्ट विकल्प बनाता है। यहां बताया गया है कि कैसे शुरुआत करें:

1. प्रोजेक्ट सेटअप और निर्भरताएँ

सबसे पहले, अपना Node.js प्रोजेक्ट आरंभ करें और आवश्यक पैकेज स्थापित करें:

mkdir didit-webhook-listener
cd didit-webhook-listener
npm init -y
npm install fastify dotenv pg crypto

अपनी Didit वेबहुक गुप्त कुंजी और PostgreSQL कनेक्शन विवरण संग्रहीत करने के लिए एक .env फ़ाइल बनाएँ:

DIDIT_WEBHOOK_SECRET=your_didit_webhook_secret_key
DATABASE_URL=postgresql://user:password@host:port/database

आप अपनी DIDIT_WEBHOOK_SECRET को Didit बिजनेस कंसोल में ऐप सेटिंग्स के तहत या Didit API के GET /v3/webhook/ एंडपॉइंट के माध्यम से प्राप्त कर सकते हैं।

2. Fastify सर्वर कॉन्फ़िगरेशन

एक app.js फ़ाइल बनाएँ। Fastify को हस्ताक्षर सत्यापन के लिए रॉ बॉडी की आवश्यकता होती है, इसलिए हम इसे अपने वेबहुक रूट के लिए स्वचालित रूप से JSON को पार्स न करने के लिए कॉन्फ़िगर करेंगे।

require('dotenv').config();
const fastify = require('fastify')({ logger: true });
const crypto = require('crypto');
const { Client } = require('pg');

const DIDIT_WEBHOOK_SECRET = process.env.DIDIT_WEBHOOK_SECRET;
const DATABASE_URL = process.env.DATABASE_URL;

const pgClient = new Client({ connectionString: DATABASE_URL });

// 'application/json' के लिए एक सामग्री पार्सर पंजीकृत करें जो विशिष्ट मार्गों के लिए बॉडी को कच्चा छोड़ देता है
fastify.addContentTypeParser('application/json', { parseAs: 'buffer' }, function (req, body, done) {
  if (req.raw.url === '/webhooks/didit') {
    done(null, body); // वेबहुक एंडपॉइंट के लिए कच्चा छोड़ दें
  } else {
    try {
      const json = JSON.parse(body.toString());
      done(null, json);
    } catch (error) {
      error.statusCode = 400;
      done(error, undefined);
    }
  }
});

fastify.post('/webhooks/didit', async (request, reply) => {
  const signature = request.headers['x-signature'];
  const timestamp = request.headers['x-timestamp'];
  const rawBody = request.body;

  if (!signature || !timestamp || !rawBody) {
    reply.code(400).send({ message: 'Missing signature, timestamp, or body' });
    return;
  }

  // 1. HMAC-SHA256 हस्ताक्षर सत्यापित करें
  const expectedSignature = crypto
    .createHmac('sha256', DIDIT_WEBHOOK_SECRET)
    .update(`${timestamp}.${rawBody.toString()}`)
    .digest('hex');

  if (expectedSignature !== signature) {
    reply.code(403).send({ message: 'Invalid signature' });
    return;
  }

  // 2. टाइमस्टैम्प को मान्य करें (उदा., रिप्ले हमलों को रोकने के लिए 5 मिनट के भीतर)
  const fiveMinutesAgo = Date.now() - (5 * 60 * 1000);
  if (parseInt(timestamp) < fiveMinutesAgo) {
    reply.code(403).send({ message: 'Timestamp too old' });
    return;
  }

  // 3. सत्यापन के बाद JSON बॉडी को पार्स करें
  let payload;
  try {
    payload = JSON.parse(rawBody.toString());
  } catch (error) {
    reply.code(400).send({ message: 'Invalid JSON payload' });
    return;
  }

  fastify.log.info('Received Didit webhook:', payload);

  // 4. वेबहुक पेलोड को संसाधित करें (उदा., डीबी में संग्रहीत करें, उपयोगकर्ता स्थिति अपडेट करें)
  try {
    await pgClient.query(
      'INSERT INTO webhooks (event_id, event_type, payload, received_at) VALUES ($1, $2, $3, NOW())',
      [payload.id, payload.event, JSON.stringify(payload)]
    );
    // उदाहरण: पेलोड.स्टेटस के आधार पर उपयोगकर्ता स्थिति अपडेट करें
    // await pgClient.query(
    //   'UPDATE users SET verification_status = $1 WHERE didit_session_id = $2',
    //   [payload.status, payload.session_id]
    // );
    reply.code(200).send({ message: 'Webhook received and processed' });
  } catch (dbError) {
    fastify.log.error('Database error:', dbError);
    reply.code(500).send({ message: 'Internal server error' });
  }
});

const start = async () => {
  try {
    await pgClient.connect();
    fastify.log.info('Connected to PostgreSQL');
    await fastify.listen({ port: 3000, host: '0.0.0.0' });
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();

PostgreSQL में वेबहुक डेटा संग्रहीत करना

वेबहुक डेटा को लगातार बनाए रखना ऑडिटिंग, डीबगिंग और डेटा अखंडता सुनिश्चित करने के लिए महत्वपूर्ण है। PostgreSQL इस कार्य के लिए एक मजबूत संबंधपरक डेटाबेस है।

1. डेटाबेस स्कीमा

सबसे पहले, अपने वेबहुक इवेंट्स को संग्रहीत करने के लिए एक तालिका बनाएँ। यह स्कीमा एक अच्छा प्रारंभिक बिंदु प्रदान करती है:

CREATE TABLE webhooks (
    id SERIAL PRIMARY KEY,
    event_id VARCHAR(255) UNIQUE NOT NULL, -- Didit का अद्वितीय इवेंट आईडी
    event_type VARCHAR(255) NOT NULL,
    payload JSONB NOT NULL, -- पूर्ण JSON पेलोड संग्रहीत करें
    received_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

2. Fastify के साथ एकीकरण

जैसा कि app.js उदाहरण में दिखाया गया है, हम आपके PostgreSQL डेटाबेस से कनेक्ट करने और आने वाले वेबहुक पेलोड को डालने के लिए pg क्लाइंट को एकीकृत करते हैं। payload JSONB NOT NULL कॉलम पूरे JSON ऑब्जेक्ट को संग्रहीत करने के लिए एकदम सही है, जिससे Didit द्वारा पेश किए जा सकने वाले प्रत्येक नए फ़ील्ड के लिए पूर्वनिर्धारित स्कीमा परिवर्तनों के बिना बाद में लचीली क्वेरी की अनुमति मिलती है।

संभावित डेटाबेस त्रुटियों को शालीनता से संभालना याद रखें। उपरोक्त उदाहरण में डेटाबेस संचालन के लिए एक बुनियादी try-catch ब्लॉक शामिल है।

अपने वेबहुक एंडपॉइंट को सुरक्षित करना

संवेदनशील पहचान सत्यापन डेटा के साथ काम करते समय सुरक्षा सर्वोपरि है। Didit यह सुनिश्चित करने के लिए HMAC-SHA256 हस्ताक्षरों का उपयोग करता है कि आने वाले वेबहुक वैध और अक्षुण्ण हैं।

1. HMAC हस्ताक्षर सत्यापन

प्रत्येक Didit वेबहुक अनुरोध में दो महत्वपूर्ण हेडर शामिल होते हैं: X-Signature और X-TimestampX-Signature हेडर में आपकी अद्वितीय वेबहुक गुप्त कुंजी और टाइमस्टैम्प के साथ संयोजित रॉ अनुरोध बॉडी का उपयोग करके उत्पन्न एक HMAC-SHA256 हस्ताक्षर होता है। आपके लिसनर को यह करना होगा:

  1. अपनी DIDIT_WEBHOOK_SECRET प्राप्त करें।
  2. X-Signature और X-Timestamp हेडर निकालें।
  3. हस्ताक्षरित पेलोड को पुनर्निर्मित करें: `${timestamp}.${rawBody}`
  4. अपनी गुप्त कुंजी और पुनर्निर्मित पेलोड का उपयोग करके अपना स्वयं का HMAC-SHA256 हस्ताक्षर उत्पन्न करें।
  5. अपने उत्पन्न हस्ताक्षर की अनुरोध से X-Signature से तुलना करें। यदि वे मेल नहीं खाते हैं, तो अनुरोध को अस्वीकार करें।

प्रदान किया गया Fastify उदाहरण इस सटीक प्रक्रिया को प्रदर्शित करता है, यह सुनिश्चित करता है कि केवल प्रामाणिक Didit वेबहुक ही संसाधित किए जाते हैं।

2. टाइमस्टैम्प सत्यापन

X-Timestamp हेडर रिप्ले हमलों को रोकने के लिए महत्वपूर्ण है। एक रिप्ले हमला तब होता है जब एक हमलावर एक वैध वेबहुक को रोकता है और बाद में उसे फिर से भेजता है। यह जांच कर कि टाइमस्टैम्प हाल का है (उदा., वर्तमान समय के 5 मिनट के भीतर), आप इस जोखिम को कम कर सकते हैं। Fastify कोड स्निपेट में यह सुनिश्चित करने के लिए एक जांच शामिल है कि टाइमस्टैम्प बहुत पुराना नहीं है।

Didit कैसे मदद करता है

Didit का प्लेटफ़ॉर्म पहचान सत्यापन को सहज और सुरक्षित बनाने के लिए डिज़ाइन किया गया है। हमारी मॉड्यूलर वास्तुकला आपको विभिन्न पहचान जांचों को प्लग-एंड-प्ले करने की अनुमति देती है, आईडी सत्यापन से लेकर मजबूत दस्तावेज़ विश्लेषण के लिए एनएफसी सत्यापन उच्च-सुरक्षा ईपासपोर्ट/ईआईडी जांच के लिए, और अनुपालन के लिए एएमएल स्क्रीनिंग और निगरानी तक। वेबहुक सिस्टम इस मॉड्यूलरिटी का एक मुख्य घटक है, जो वास्तविक समय के अपडेट प्रदान करता है जो आपको लगातार पोलिंग के बिना जटिल केवाईसी वर्कफ़्लो को ऑर्केस्ट्रेट करने में सक्षम बनाता है।

Didit का AI-देशी दृष्टिकोण का अर्थ है कि हमारे सिस्टम लगातार सीख रहे हैं और अनुकूलन कर रहे हैं, जो बेहतर सटीकता और धोखाधड़ी का पता लगाने में मदद करते हैं। स्पष्ट API दस्तावेज़ और डेवलपर-फर्स्ट मानसिकता, फ्री कोर KYC और कोई सेटअप शुल्क जैसी सुविधाओं के साथ मिलकर, शुरुआत करना आसान बनाते हैं। हमारे वेबहुक संरचित पहचान डेटा प्रदान करते हैं, जिससे आपका एप्लिकेशन सत्यापन परिणामों पर बुद्धिमानी से प्रतिक्रिया दे सकता है और वैश्विक स्तर पर विश्वास को स्वचालित कर सकता है। चाहे आपको Didit के आयु अनुमान का उपयोग करके आयु सत्यापित करने की आवश्यकता हो या पैसिव और एक्टिव लाइवनैस के साथ यह सुनिश्चित करने की आवश्यकता हो कि उपयोगकर्ता एक जीवित व्यक्ति है, Didit एक मजबूत पहचान समाधान के लिए उपकरण और वास्तविक समय का फीडबैक प्रदान करता है।

शुरू करने के लिए तैयार हैं?

Didit को कार्रवाई में देखने के लिए तैयार हैं? आज ही एक मुफ्त डेमो प्राप्त करें

Didit की मुफ्त टियर के साथ मुफ्त में पहचान सत्यापित करना शुरू करें।

पहचान और धोखाधड़ी के लिए इंफ्रास्ट्रक्चर।

KYC, KYB, ट्रांज़ैक्शन मॉनिटरिंग और वॉलेट स्क्रीनिंग के लिए एक API। 5 मिनट में इंटीग्रेट करें।

इस पेज को समराइज़ करने के लिए AI से पूछें
Didit वेबहुक लिसनर: Fastify और PostgreSQL के साथ निर्माण.