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

Webhooks और इंटीग्रेशन

पहचान सत्यापन webhooks, एक hosted पेज और एक विजेट।

आवेदक को hosted सत्यापन पेज पर भेजें या विजेट को अपने ही फ़्लो में जोड़ें, नतीजा आते ही एक हस्ताक्षरित webhook पाएँ, और लिंक रखने वाले किसी भी व्यक्ति को सार्वजनिक क्रेडेंशियल-जाँच पेज पर उसकी पुष्टि करने दें। एक KYC API इंटीग्रेशन जो एक दोपहर में लाइव होने के लिए बना है।

  • HMAC-SHA256 से हस्ताक्षरित callbacks
  • डेस्कटॉप से फ़ोन पर QR हैंड-ऑफ़
  • Sandbox सेशन का कभी बिल नहीं बनता

होस्टेड सत्यापन पेज

एक लिंक पूरा फ़्लो संभालता है।

API के ज़रिए सेशन बनाएँ और आपको एक वेरिफ़िकेशन URL मिलता है। इसे ईमेल, टेक्स्ट या अपने ऐप में भेजें — बाकी सब पेज संभाल लेता है।

डेस्कटॉप

आवेदक अपनी डेस्क पर लिंक खोलता है।

QR hand-off

पेज पर एक QR कोड और एक छोटा निर्देश कार्ड दिखता है।

फ़ोन से कैप्चर

इसे स्कैन करते ही वही सेशन दस्तावेज़ और सेल्फ़ी कैप्चर पर चला जाता है।

सत्यापित

सेशन VERIFIED तक पहुँचता है, अब भी फ़ोन पर ही।

आपके पास वापस

आपके रिटर्न URL पर रीडायरेक्ट, साथ में एक हस्ताक्षरित webhook, दोनों ही स्थितियों में।

पेमेंट रीडायरेक्ट की तरह काम करता है

आवेदक आपके सेशन के अपने URL वाले पेज पर पहुँचता है। न कोई अकाउंट, न कोई ऐप इंस्टॉल करना।

QR हैंड-ऑफ़, डेस्कटॉप से फ़ोन तक

डेस्कटॉप पर खोलने पर पेज कैमरा एक्सेस माँगने के बजाय QR कोड और एक छोटा निर्देश कार्ड दिखाता है। इसे स्कैन करने पर वही लिंक फ़ोन पर खुलता है, जो सीधे दस्तावेज़ और सेल्फ़ी कैप्चर पर चला जाता है।

नतीजे के साथ आपके पास लौटता है

सेशन के VERIFIED होते ही पेज आपके रिटर्न URL पर रीडायरेक्ट करता है, जिसमें सेशन ID और स्थिति जुड़ी होती है, ताकि आपके ऐप को किसी और चीज़ का इंतज़ार किए बिना पता चल जाए कि क्या हुआ।

ब्रांडेड, योग्य प्लान पर

आपकी कंपनी का नाम, लोगो, एक्सेंट रंग, तथा नियम और गोपनीयता के लिंक, जो होस्टेड पेज और क्रेडेंशियल-जाँच पेज पर लागू होते हैं।

Webhooks

नतीजा आते ही एक हस्ताक्षरित कॉलबैक।

सेशन बनाते समय हमें webhook URL दें और सेशन पूरा होते ही हम नतीजा उस पर भेज देते हैं, poll करने की कोई ज़रूरत नहीं।

सिर्फ़ भेजा नहीं, हस्ताक्षरित भी

हर डिलीवरी के साथ X-Bio-Signature header आता है: रिक्वेस्ट बॉडी का HMAC-SHA256, ताकि भरोसा करने से पहले आप साबित कर सकें कि वह हमसे ही आया है।

रिट्राई होता है, भेजकर भूला नहीं जाता

विफल डिलीवरी को तीन बार दोबारा आज़माया जाता है, और हर प्रयास से पहले प्रतीक्षा का समय बढ़ता जाता है।

हर प्रयास दर्ज होता है

सफल हो या विफल, हम अपनी ओर से प्रयास का रिकॉर्ड रखते हैं।

जल्द आ रहा है पोर्टल के भीतर डिलीवरी लॉग, ताकि आप हर प्रयास खुद देख सकें, जल्द आ रहा है।

सबसे नए VERIFIED को ही सच मानें

रिट्राई के कारण, दुर्लभ मामलों में, कोई डिलीवरी क्रम से बाहर आ सकती है। अपना लॉजिक webhook मिलने पर आधारित न रखें — उसे सेशन ID पर आधारित रखें, और बाद वाले VERIFIED को पहले वाले को अधिलेखित करने दें। अगर आप अपनी स्टेट रखते हैं, तो webhook की प्राप्ति के बजाय सेशन ID के आधार पर डुप्लिकेट हटाएँ।

हस्ताक्षर सत्यापित करें

कार्रवाई करने से पहले पेलोड पर भरोसा करें।

कुछ भी पार्स करने से पहले, रॉ रिक्वेस्ट बॉडी पर HMAC-SHA256 दोबारा निकालें और उसकी तुलना X-Bio-Signature से करें।

javascript
const crypto = require("crypto");

function verifySignature(rawBody, signatureHeader, secret) {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(signatureHeader || "", "hex");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

// Read the raw body — don't let a JSON body-parser touch it first.
app.post("/hooks/shieldid", express.raw({ type: "application/json" }), (req, res) => {
  const signature = req.header("X-Bio-Signature") || "";
  if (!verifySignature(req.body, signature, process.env.SHIELDID_WEBHOOK_SECRET)) {
    return res.status(401).send("invalid signature");
  }
  const event = JSON.parse(req.body);
  // Treat the latest VERIFIED status as authoritative; de-duplicate by session_id.
  res.status(200).send("ok");
});

JS widget

hosted फ़्लो, आपके अपने पेज में समाया हुआ।

widget एक सेशन बनाता है और वही hosted फ़्लो iframe में इनलाइन दिखाता है, ताकि आवेदक कभी आपकी साइट से बाहर न जाएँ।

  • कैमरा और माइक्रोफ़ोन एक्सेस के साथ iframe में दिखता है, और अपने कंटेनर के आकार के अनुसार ढल जाता है।
  • सत्र की स्थिति उसी तरह पढ़ता है जैसे hosted पेज पढ़ता है: सत्र पूरा होने पर आपके return URL और आपके webhook के ज़रिए।

जल्द आ रहा है पेज के भीतर पूर्णता callbacks (onComplete, onCancel, onStep, स्वचालित resize) जल्द आ रहे हैं। तब तक, सत्र कब पूरा होता है यह जानने के लिए return_url और webhooks का उपयोग करें — वे आज काम करते हैं।

इसे प्रोडक्शन में भेजने से पहले

विजेट फ़िलहाल ब्राउज़र में सीधे API key स्वीकार करता है। इसे sandbox की सुविधा समझें, production का तरीका नहीं: सत्र अपने ही बैकएंड से बनाएँ और अपनी key सर्वर-साइड रखें, और विजेट को केवल परिणामी सत्र दें, कभी ऐसी live key नहीं जिसे किसी विज़िटर का ब्राउज़र पढ़ सके।

html
<script src="https://cdn.shieldid.ca/sdk/v1/widget.js"></script>
<div id="shieldid-verify"></div>
<script>
  TLVerify.init({
    apiKey: "vk_sand_your_key", // sandbox only — see the note above for production
    containerId: "shieldid-verify",
    returnUrl: "https://yourapp.example/verified",
    webhookUrl: "https://yourapp.example/hooks/shieldid",
    locale: "en",
  });
</script>

क्रेडेंशियल-जाँच पेज

सत्यापित सत्र के लिए एक सार्वजनिक पेज।

सत्र के VERIFIED होते ही, उसका अपना क्रेडेंशियल-जाँच लिंक सरल भाषा में पुष्टि दिखाता है: आवेदक का नाम, दस्तावेज़ का प्रकार और स्थिति। लिंक रखने वाला कोई भी — सह-हस्ताक्षरकर्ता, फ़्रंट-डेस्क क्लर्क, प्रतिपक्ष — आपके डैशबोर्ड में साइन इन किए बिना नतीजे की पुष्टि कर सकता है।

Jordan Reyes

नमूना डेटा

कैलिफ़ोर्निया ड्राइविंग लाइसेंस

सत्यापित

  • इसे देखने के लिए साइन-इन ज़रूरी नहीं।
  • इस पर कभी कोई कच्ची ID तस्वीर या कॉन्फ़िडेंस स्कोर नहीं दिखता — बस एक स्थिति और पहचान, इससे ज़्यादा कुछ नहीं।
  • योग्य प्लान पर, hosted पेज जैसी ही ब्रांडिंग के साथ।

इंटीग्रेशन पैटर्न

छह तरह के कारोबार इसे कैसे जोड़ते हैं।

बुनियादी हिस्से हर जगह एक ही हैं: एक सत्र, एक लिंक या विजेट, एक webhook। कौन-सा पैटर्न फ़िट बैठता है, यह इस पर निर्भर करता है कि आपको जवाब कैसे और कब चाहिए।

किराया और प्रॉपर्टी प्रबंधन

hosted लिंक को किराये के आवेदन वाले ईमेल में ही भेजें। फ़ाइल की समीक्षा से पहले ही webhook आपके सिस्टम में आवेदक को सत्यापित कर देता है।

कानूनी और लॉ फ़र्म

क्लाइंट इनटेक के दौरान लिंक भेजें और webhook की रसीद फ़ाइल के साथ रखें, ताकि रिटेनर शुरू होने से पहले क्लाइंट की पहचान रिकॉर्ड में हो।

कॉन्डो और HOA एसोसिएशन

मालिक या किरायेदार के उस पंजीकरण फ़ॉर्म से लिंक करें जो बोर्ड पहले से इस्तेमाल करता है; यूनिट को रजिस्टर में जोड़े जाने से पहले नतीजा आ जाता है।

फ़िनटेक और ऋण

webhook आपके अपने underwriting चरण को अपने-आप शुरू कर देता है, ताकि आवेदक को कभी इस बात का इंतज़ार न करना पड़े कि कोई व्यक्ति नोटिस करे कि नतीजा आ गया है।

मार्केटप्लेस और गिग प्लेटफ़ॉर्म

सेलर या ड्राइवर ऑनबोर्डिंग में widget को एम्बेड करें, ताकि फ़्लो कभी आपके ऐप से बाहर न जाए; सेशन अपने backend से बनाएँ, जैसा ऊपर सुझाया गया है।

E-signature

साइनिंग प्रक्रिया शुरू होने से पहले hosted फ़्लो चलाएँ, और दस्तावेज़ जारी करने का फ़ैसला webhook के आधार पर करें, आवेदक के अपने कहने के आधार पर नहीं।

प्रश्न

इंटीग्रेशन पर सीधे जवाब।

शुरू करें

webhook जोड़ें। उसे चलते देखें।

webhook URL के साथ sandbox सेशन बनाएँ, अपने फ़ोन पर वेरिफ़िकेशन चलाएँ, और उसके भेजे हस्ताक्षरित कॉलबैक को पढ़ें।