मुख्य सामग्री पर जाएं

इवेंट कैटलॉग

लेन-देन निगरानी तीन webhook इवेंट भेजता है, जो मिलकर पूरे लेन-देन के जीवनचक्र को कवर करते हैं, और एक वैकल्पिक चौथा इवेंट, जो नए नियम सुझावों की घोषणा करता है। ये सभी Didit के मानक webhook इंफ़्रास्ट्रक्चर पर चलते हैं और HMAC-SHA256 साइनिंग का उपयोग करते हैं। गंतव्यों, साइनिंग और परीक्षण के लिए webhook संदर्भ देखें। इकाई-स्तर के इवेंट (user.status.updated, business.status.updated) भी लेन-देन की गतिविधि के परिणामस्वरूप फ़ायर हो सकते हैं। देखें इकाई webhook।
सैंडबॉक्स एप्लिकेशन transaction.created या transaction.status.updated webhooks नहीं भेजते। इन इवेंट्स का परीक्षण करने के लिए लाइव एप्लिकेशन का उपयोग करें, या कंसोल में API & Webhooks → Try Webhook का उपयोग करें। Travel Rule सैंडबॉक्स एक्सचेंज environment: sandbox के साथ travel_rule.status.updated webhooks भेजते हैं; लाइव जाने से पहले किसी एक्सचेंज का परीक्षण करने के लिए Didit Test VASP का उपयोग करें।

एनवेलप

Didit webhooks एक फ़्लैट बॉडी का उपयोग करते हैं: इवेंट फ़ील्ड्स एनवेलप फ़ील्ड्स के साथ सबसे ऊपरी स्तर पर रहते हैं, और कोई नेस्टेड data ऑब्जेक्ट नहीं होता। हर डिलीवरी में ये फ़ील्ड्स होते हैं:

Payload के स्वरूप

transaction.created और transaction.status.updated

दोनों इवेंट एक ही payload साझा करते हैं: एक संक्षिप्त सार, साथ में action_required ब्लॉक (या null):
Payload जानबूझकर हल्का रखा गया है। प्राप्त होने पर, पूरा रिकॉर्ड GET /v3/transactions/{transaction_id}/ से लाएँ। यह पूरा विवरण लौटाता है (पक्ष, rule_runs, provider_results, travel_rule, cost_breakdown, decision_reason_code), जिसमें स्टेटस बदलने का कारण भी शामिल है।

transaction_rule_suggestions.created

यह इवेंट आपके नियम सेट के बारे में है, किसी एक लेन-देन के बारे में नहीं, इसलिए इसमें कोई लेन-देन ID नहीं होता। इसमें कभी व्यक्तिगत डेटा नहीं होता: केवल सुझाव ID, प्रकार, शीर्षक और गिनती।
सामान्य एनवेलप फ़ील्ड्स (event_id, timestamp, application_id, environment) बॉडी में जोड़े जाते हैं।

travel_rule.status.updated

यह हर ट्रांज़िशन पर भेजा जाता है, जिसमें FINISHED, CANCELLED, या EXPIRED में जाना भी शामिल है। एक बार ट्रांसफ़र इनमें से किसी स्थिति तक पहुँच जाए, तो उसके लिए आगे कोई Travel Rule इवेंट नहीं भेजा जाता। कोई इवेंट पिछले इवेंट का स्टेटस दोहरा सकता है, उदाहरण के लिए जब दोबारा भेजने पर भी कोई रेल नहीं मिलती और ट्रांसफ़र COUNTERPARTY_VASP_NOT_FOUND पर ही रहता है। rail इनमें से कोई एक होता है: INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP (एक सैंडबॉक्स ट्रांसफ़र जिसका जवाब Didit Test VASP ने दिया, और जिसमें test_vasp: true और test_vasp_scenario भी होते हैं), या "" जब तक कोई रेल नहीं चुनी गई हो (sunrise रजिस्ट्रेशन पर यह हमेशा "" होता है)। लेन-देन बनने पर, sunrise रजिस्ट्रेशन पर, इनबाउंड TRP पूछताछ पर, या INTERNAL रेल के इनबाउंड लेग पर, Didit पहले transaction.created भेजता है और उसके बाद लेन-देन के travel_rule.status.updated इवेंट। उस चरण के दौरान कोई नियम लेन-देन का स्टेटस बदले, तो transaction.status.updated भी transaction.created से पहले भेजा जा सकता है। जो sunrise रजिस्ट्रेशन उस डिपॉज़िट लेन-देन से जुड़ता है जिसे आप पहले ही बना चुके हैं, वह कोई transaction.created नहीं भेजता। हर webhook अलग से डिलीवर और पुनः प्रयास किया जाता है, इसलिए दोबारा भेजा गया इवेंट बाद के इवेंट के बाद भी पहुँच सकता है। अपना हैंडलर transaction_id के आधार पर रखें, और जब भी वर्तमान स्थिति चाहिए हो, लेन-देन को दोबारा पढ़ें।

स्टेटस के उदाहरण क्रम

सीधी स्वीकृति

समीक्षा के बाद स्वीकृति

स्टेप-अप सत्यापन

Travel Rule ट्रांसफ़र

पहले दो इवेंट एक ही अनुरोध से आते हैं, और transaction.created पहले कतार में डाला जाता है। हर webhook अलग से डिलीवर होता है, इसलिए आगमन के क्रम पर भरोसा न करें। TRUST के ज़रिए भेजे गए ट्रांसफ़र को कभी COMPLETED इवेंट नहीं मिलता, क्योंकि TRUST कुछ वापस नहीं भेजता जिसे Didit पढ़ सके। ट्रांसफ़र पुष्टि की समय-सीमा तक AWAITING_COUNTERPARTY पर रहता है और फिर EXPIRED पर समाप्त होता है। GTR, VerifyVASP और Sygna Bridge पर Didit नेटवर्क से प्रतिपक्ष का जवाब पढ़ता है, और इवेंट उसके बाद आता है।

हस्ताक्षर सत्यापन

हर डिलीवरी को webhook गंतव्य के साझा सीक्रेट से HMAC-SHA256 से साइन किया जाता है, और उसके साथ तीन सिग्नेचर हेडर और एक टाइमस्टैम्प आता है:
टाइमस्टैम्प की ताज़गी जाँच सहित पूरा सत्यापन कोड देखने के लिए webhooks संदर्भ देखें।

पुनः प्रयास और डिलीवरी की गारंटी

  • 5xx, 404, टाइमआउट, या कनेक्शन विफलता पर Didit अधिकतम 2 बार पुनः प्रयास करता है: पहली विफलता के लगभग 1 मिनट बाद, और उसके लगभग 4 मिनट बाद।
  • पुनः प्रयास की गई डिलीवरी वही event_id इस्तेमाल करती हैं - अपने हैंडलर में उसी के आधार पर डुप्लिकेट की पहचान करें।
  • अंतिम विफलता के बाद उस इवेंट की डिलीवरी रुक जाती है और आपके संगठन को सूचित किया जाता है; गंतव्यों को कभी चुपचाप निष्क्रिय नहीं किया जाता।
  • 2xx जल्दी लौटाएँ (पहले कतार में डालें, फिर प्रोसेस करें) - धीमे ACK से टाइमआउट और डुप्लिकेट डिलीवरी का जोखिम रहता है।

आइडेम्पोटेंसी

हर webhook को ठीक एक बार प्रोसेस करने के लिए event_id को अपने डुप्लिकेट-जाँच स्टोर में सहेजें। जब आपका एंडपॉइंट धीरे ACK करता है या अनुरोध के बीच में डिस्कनेक्ट हो जाता है, तो उसी इवेंट की फिर से डिलीवरी हो सकती है।

सब्सक्राइब करना

अगले चरण

webhook संदर्भ

गंतव्य, हस्ताक्षर, पुनः प्रयास।

स्थितियाँ

पूरी स्थिति मशीन।

इंटीग्रेशन गाइड

प्रोडक्शन में webhook को संभालना।
अंतिम संशोधन 7 नवंबर 2026