is_ownership_verified: true के रूप में चिह्नित किया जाता है, जिससे जुड़ा हुआ Travel Rule ट्रांसफ़र UNCONFIRMED_OWNERSHIP से आगे बढ़ सकता है।
जब Didit इसे आपके लिए मिंट करता है
आपको शायद ही कभी खुद सत्र मिंट करना पड़ता है। जब आपकी Travel Rule सेटिंग्स मेंauto_wallet_verification चालू हो (जो डिफ़ॉल्ट है), तो Didit लेन-देन बनाते समय, जब भी किसी ट्रांसफ़र को अंतिम उपयोगकर्ता के वॉलेट नियंत्रण के प्रमाण की ज़रूरत हो, अपने-आप एक विजेट सत्र मिंट कर देता है:
- ट्रांसफ़र
UNCONFIRMED_OWNERSHIPमें है - सबमिशन के समय प्रतिपक्ष वॉलेट को स्व-होस्टेड घोषित किया गया था। - ट्रांसफ़र आउटबाउंड है और
COUNTERPARTY_VASP_NOT_FOUNDमें है - कोई प्रतिपक्ष VASP पहचाना नहीं जा सका, इसलिए पूरा होने का बचा हुआ तरीका स्वामित्व प्रमाण ही है।
action_required ब्लॉक में लौटाया जाता है (type: "wallet_ownership", खोलने के लिए url के साथ), और SDK क्लाइंट-साइड सबमिशन पर उसे अपने-आप लॉन्च कर देते हैं।
Didit द्वारा आपके लिए बनाए गए इनबाउंड ट्रांसफ़र (सनराइज़ रजिस्ट्रेशन, इनबाउंड TRP पूछताछ, या INTERNAL रेल का इनबाउंड हिस्सा) को कभी भी अपने-आप मिंट किया गया सत्र नहीं मिलता, भले ही वे UNCONFIRMED_OWNERSHIP में आ जाएँ।
जब आप किसी वॉलेट को किसी ट्रांसफ़र के मौजूद होने से पहले पूर्व-सत्यापित करना चाहें, जब आपने auto_wallet_verification बंद कर रखा हो, या उन इनबाउंड ट्रांसफ़र में से किसी के लिए, तब POST /v3/travel-rule/widget-session/ के साथ सत्र मैन्युअली मिंट करें।
यह क्या साबित करता है
विजेट अधिकतम चार प्रमाण विधियाँ देता है। कौन-सी दिखेंगी, यह इस पर निर्भर करता है कि आपने सत्र कैसे मिंट किया है और आपकी Travel Rule सेटिंग्स क्या हैं:संदेश हस्ताक्षर सत्यापन कॉन्ट्रैक्ट
हस्ताक्षर सबमिट करने पर, जब वह वॉलेट का नियंत्रण सिद्ध कर देता है,200 और status: "VERIFIED" लौटता है।
यह 400 लौटाता है और प्रमाण खुला छोड़ देता है, ताकि ग्राहक फिर से हस्ताक्षर कर सके, इन code मानों में से एक के साथ:
Satoshi टेस्ट सत्यापन कॉन्ट्रैक्ट
Satoshi टेस्ट डिपॉज़िट का सत्यापन असिंक्रोनस है, क्योंकि लेन-देन को ऑन-चेन देखा जाना चाहिए और फिर उसकी पुष्टि होनी चाहिए। डिपॉज़िट काtxid सबमिट करने पर, जब तक डिपॉज़िट ऑन-चेन पुष्ट नहीं होता, 200 और status: "PENDING" लौटता है। txid सुरक्षित रखा जाता है, त्यागा नहीं जाता।
डिपॉज़िट पुष्ट होने पर 200 और status: "VERIFIED" लौटता है।
वास्तव में गलत डिपॉज़िट के लिए 400 और status: "REJECTED" लौटता है: किसी दूसरे वॉलेट से भेजा गया, डिपॉज़िट पते पर अपेक्षित राशि से अलग, चुनौती से पुराना, या ऐसा लेन-देन जो पहले ही किसी दूसरे वॉलेट को सिद्ध कर चुका है। प्रमाण बंद हो जाता है, और जब तक सत्र में प्रयास बचे हैं, ग्राहक नया प्रमाण शुरू कर सकता है।
जो डिपॉज़िट अभी तक इंडेक्स नहीं हुआ है, वह भी 200 और status: "PENDING" लौटाता है, और Didit की ओर से लुकअप विफल होने पर 400 और code DEPOSIT_LOOKUP_FAILED लौटता है: दोनों स्थितियों में प्रमाण खुला रहता है और Didit जाँच जारी रखता है।
यदि मान्य डिपॉज़िट देखे जाने से पहले टेस्ट विंडो समाप्त हो जाती है, तो 410 लौटता है।
txid सबमिट होने के बाद, एक बैकग्राउंड जॉब हर पाँच मिनट में लंबित डिपॉज़िट की फिर से जाँच करता है और लेन-देन पुष्ट होने पर प्रमाण पूरा कर देता है, इसलिए ग्राहक को txid फिर से सबमिट करने की जरूरत नहीं होती।
जब आप satoshi_deposit_address पास करते हैं, तो विजेट सत्र का अपना expires_at कम से कम 24 घंटे की Satoshi टेस्ट विंडो तक बढ़ा दिया जाता है, ताकि सत्र समाप्त होने से पहले डिपॉज़िट को पुष्ट होने का समय मिले।
प्रवाह
1
विजेट सत्र बनाएँ
POST /v3/travel-rule/widget-session/ को कॉल करें, जिसमें वह वॉलेट दें जिसे आपको सत्यापित करवाना है। चाहें तो इसे किसी ट्रांसफ़र से लिंक करें, ताकि स्वामित्व सिद्ध होते ही वह ट्रांसफ़र अपने-आप आगे बढ़ जाए।2
लौटाया गया URL खोलें
अपने ग्राहक को रिस्पॉन्स में मिला
url भेजें। वे वहाँ एक प्रमाण पूरा करते हैं - इसके लिए Didit खाते या API कुंजी की ज़रूरत नहीं है; URL में मौजूद टोकन ही प्रमाणीकरण है।3
पूरा होने का पता लगाएँ
जब कोई प्रमाण सत्यापित होता है, तो विजेट एड्रेस-बुक प्रविष्टि को सत्यापित चिह्नित करता है और, अगर सत्र किसी ट्रांसफ़र से लिंक है, तो उसे आगे बढ़ाता है। लिंक किए गए ट्रांसफ़र के लिए
travel_rule.status.updated पर नज़र रखें, या विजेट संदर्भ को पोल करें।विजेट सत्र बनाएँ
यह उदाहरण सत्र को Travel Rule गाइड के घोषित स्व-होस्टेड ट्रांसफ़र से लिंक करता है, इसलिएwallet_address उस ट्रांसफ़र का गंतव्य वॉलेट है।
किसी ट्रांसफ़र से लिंक सत्र केवल उस ट्रांसफ़र के प्रतिपक्ष वॉलेट के लिए प्रमाण स्वीकार करता है।
url से ही खोलें - इसे स्वयं न बनाएँ।
लौटाया गया URL खोलें
पूरा होने का पता लगाएँ
विजेट एक सार्वजनिक endpoint देता है, जिसकी पहचान टोकन से होती है - प्रगति देखने के लिए उसे पोल करें, या जब सत्र किसी ट्रांसफ़र से लिंक हो तो webhooks पर भरोसा करें:- कोई प्रमाण सत्यापित होते ही
completed_atका मान शून्य नहीं रहता। proofsकी हर प्रविष्टि में उसकी विधि के लिए ज़रूरी फ़ील्ड होते हैं:SATOSHI_TESTप्रमाणdeposit_address,expected_amountऔर अपनाexpires_atजोड़ता है;MESSAGE_SIGNINGप्रमाणchallengeजोड़ता है, वह स्ट्रिंग जिस पर ग्राहक हस्ताक्षर करता है।SATOSHI_TESTप्रमाणstatus: "PENDING"पर रह सकता है, जब उसका डिपॉज़िट चेन पर दिखे पर अभी पुष्ट न हुआ हो; इसमें आपकी या ग्राहक की ओर से कोई कार्रवाई ज़रूरी नहीं है - ऊपर Satoshi टेस्ट सत्यापन अनुबंध देखें।- जब सत्र
transaction_idके साथ बनाया गया हो, तो प्रमाण सत्यापित होने पर लिंक किया गया ट्रांसफ़र आगे बढ़ता है, और लाइव एप्लिकेशन परtravel_rule.status.updatedwebhook फ़ायर होता है। पोल करने के बजाय webhook को प्राथमिकता दें। आने वालीTRPपूछताछ के लिए भेजने वाले को स्वीकृति वापस भेजी जाती है और वह स्वीकृति डिलीवर होने परCOMPLETEDहो जाती है।UNCONFIRMED_OWNERSHIPमें कोई भी दूसरा ट्रांसफ़र (याON_HOLDआने वाला ट्रांसफ़र)COMPLETEDहो जाता है, या जब लाभार्थी का नाम वॉलेट धारक से मेल नहीं खाता तोCOUNTERPARTY_MISMATCHED_DATAहो जाता है, और पूरा हुआ सेटल्ड sunrise डिपॉज़िटFINISHEDकी ओर बढ़ता रहता है।COUNTERPARTY_VASP_NOT_FOUNDमें मौजूद आउटबाउंड ट्रांसफ़रCOMPLETEDहो जाता है। - इस संदर्भ में
SCREENSHOTप्रमाण स्वामित्व की पुष्टि करने के बाद भीstatus: "PENDING"रहता है। आप इसेPOST .../travel-rule/ownership/से स्वीकृत करते हैं, जो केवल स्वामित्व पुष्टि की प्रतीक्षा कर रहे ट्रांसफ़र को स्वीकार करता है। इसलिए जिस सत्र से कोई ट्रांसफ़र लिंक न हो, उस पर, याCOUNTERPARTY_VASP_NOT_FOUNDमें मौजूद आउटबाउंड ट्रांसफ़र से लिंक सत्र पर, स्क्रीनशॉट प्रमाण की कोई स्वीकृति का रास्ता नहीं है: यदि ऐसे सत्रों पर यह विकल्प नहीं होना चाहिए, तोallow_screenshot_proofबंद करें। - अस्वीकृत प्रमाण के बाद, जब तक प्रयास बचे हों, सत्र को नया प्रयास मिलता है।
max_attempts,attempts_used, औरattempts_remainingगिनती बताते हैं, अस्वीकृत प्रमाण के साथrejection_reasonआता है, और जबattempts_remaining0हो, तो एक और प्रमाण शुरू करने पर409मिलता है और आपको नया सत्र बनाना होगा। - संदर्भ endpoint अज्ञात टोकन के लिए
404लौटाता है, और जो सत्र बिना पूरा हुए समाप्त हो गया हो, उसके लिए410लौटाता है।
यहाँ कोई एकबारगी निर्भरता नहीं है: विजेट और आपका बैकएंड दोनों एक ही टिकाऊ स्थिति पर पहुँचते हैं (सत्यापित एड्रेस-बुक प्रविष्टि और ट्रांसफ़र की स्थिति), इसलिए छूटा हुआ webhook या बंद टैब हमेशा ट्रांसफ़र या विजेट संदर्भ को दोबारा पढ़कर ठीक किया जा सकता है।
स्थानीयकरण और ब्रांडिंग
विजेट 54 भाषाओं में रेंडर होता है। भाषा लिंक के भाषा पथ से तय होती है, या ब्राउज़र की डिफ़ॉल्ट भाषा से। जब आपके एप्लिकेशन के लिए व्हाइट लेबल सक्षम होता है, तो विजेट आपके सत्यापन-फ़्लो की ब्रांडिंग अपने-आप ले लेता है: लोगो, ब्रांड रंग, बटन और पैनल की स्टाइलिंग, कस्टम फ़ॉन्ट, फ़ेविकॉन, और शीर्षक में आपके एप्लिकेशन का सार्वजनिक नाम। इसके लिए कोई अलग कॉन्फ़िगरेशन नहीं करना होता - KYC सत्रों के लिए आपने जो कस्टमाइज़ेशन सेट किया है, वही यहाँ लागू होता है। जो उपयोगकर्ता पहले से पूरे हो चुके लिंक पर वापस आता है, उसे फिर से पूर्णता स्क्रीन दिखती है; यदि आपनेcallback_url पास किया है, तो विजेट उसे वहीं वापस भेज देता है। समय-सीमा समाप्त हो चुके लिंक पर एक ब्रांडेड समाप्ति स्क्रीन दिखती है, जो उपयोगकर्ता से नया लिंक माँगने को कहती है। उसके लिए POST /v3/travel-rule/widget-session/ के साथ नया सत्र बनाएँ: action: "resend" के साथ ट्रांसफ़र दोबारा भेजने से कोई सत्र नहीं बनता।
अगले चरण
Travel Rule
पूरा एक्सचेंज जीवनचक्र, रेल्स, सेटिंग्स और प्राप्ति फ़्लो।
वॉलेट की पता पुस्तिका
अपने नियंत्रण वाले वॉलेट रजिस्टर करें, ताकि इनबाउंड ट्रांसफ़र उनसे मिलान हो सकें।
webhook
travel_rule.status.updated की सदस्यता लें, ताकि किसी प्रमाण से ट्रांसफ़र आगे बढ़ने पर आप प्रतिक्रिया दे सकें।
Native SDKs
विजेट URL को सिस्टम ब्राउज़र में खोलें, SDK वेबव्यू में नहीं।