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

क्विकस्टार्ट

पहचान सत्यापन क्विकस्टार्ट।

Sandbox की से पहले साइन किए गए webhook तक, क्रम से। हर चरण में एक काम करने वाला उदाहरण है — उसे कॉपी करें, अपनी की और URL डालें, और चलाएँ।

चरण-दर-चरण

सात चरण, एक दोपहर।

  1. sandbox की प्राप्त करें

    Sandbox keys (प्रीफ़िक्स vk_sand_) सेल्फ़-सर्व साइनअप बनने तक अनुरोध पर जारी की जाती हैं। संपर्क फ़ॉर्म के माध्यम से पूछें — ज़्यादातर अनुरोधों पर उसी कार्य-दिवस में कार्रवाई हो जाती है। Sandbox सेशन का कभी बिल नहीं बनता, इसलिए शुरू करने के लिए इंतज़ार करने की कोई वजह नहीं है।

  2. अपना पहला session बनाएँ

    बस एक कॉल। एक return_url भेजें (जहाँ आवेदक प्रक्रिया पूरी करने के बाद पहुँचता है) और एक webhook_url (जहाँ हस्ताक्षरित परिणाम भेजा जाता है)। बदले में आपको एक session_id और एक verification_url मिलता है।

    bash
    curl -X POST https://api.shieldid.ca/v1/sessions \
      -H "X-Api-Key: vk_sand_your_key" \
      -H "Content-Type: application/json" \
      -d '{
        "return_url": "https://yourapp.example/verified",
        "webhook_url": "https://yourapp.example/hooks/shieldid",
        "expected_name": "Jordan Smith",
        "locale": "en",
        "metadata": { "application_id": "app_9182" }
      }'

  3. आवेदक को लिंक दें

    verification_url खोलें और आपको होस्टेड पेज दिखेगा। डेस्कटॉप ब्राउज़र पर यह एक QR कोड दिखाता है — उसे स्कैन करने पर वही लिंक फ़ोन पर खुल जाता है, जहाँ दस्तावेज़ की असली फ़ोटो, liveness चैलेंज और सेल्फ़ी होती है। इसे अभी अपने फ़ोन पर आज़माएँ।

  4. webhook endpoint तैयार करें

    webhook_url को ऐसे route पर सेट करें जो POST स्वीकार करे, raw request body पढ़े (हस्ताक्षर जाँचने के लिए यह बिना parse किए चाहिए) और 2xx स्टेटस लौटाए। इसके अलावा कुछ भी होने पर ShieldID डिलीवरी को अधिकतम तीन बार दोबारा भेजता है।

    javascript
    import express from "express";
    const app = express();
    
    app.post("/hooks/shieldid", express.raw({ type: "application/json" }), (req, res) => {
      // Verify the signature before you trust this body — see the next step.
      console.log("Received a webhook:", req.body.toString());
      res.status(200).send("ok");
    });
    
    app.listen(3000);

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

    जब तक आप यह न जाँच लें कि webhook body वाकई ShieldID से आई है, उस पर कोई कार्रवाई न करें। अपने webhook secret से raw body पर HMAC-SHA256 निकालें और उसकी तुलना X-Bio-Signature हेडर से करें।

    javascript
    import crypto from "node:crypto";
    
    function isValidShieldIdSignature(rawBody, signatureHeader, secret) {
      const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
      const provided = signatureHeader || "";
      const a = Buffer.from(expected, "hex");
      const b = Buffer.from(provided, "hex");
      return a.length === b.length && crypto.timingSafeEqual(a, b);
    }
    
    // rawBody must be the exact, unparsed request body
    app.post("/hooks/shieldid", express.raw({ type: "application/json" }), (req, res) => {
      const ok = isValidShieldIdSignature(req.body, req.headers["x-bio-signature"], process.env.SHIELDID_WEBHOOK_SECRET);
      if (!ok) return res.status(401).send("invalid signature");
    
      const result = JSON.parse(req.body);
      // result.session_id, result.status, result.checks, …
      res.status(200).send("ok");
    });

  6. परिणाम पढ़ें

    webhook payload में आपकी ज़रूरत की हर चीज़ पहले से मौजूद है। अगर आप परिणाम खुद लेना चाहें — मसलन redirect के बाद — तो result endpoint को सीधे कॉल करें।

    bash
    curl https://api.shieldid.ca/v1/sessions/ses_9f2c1a/result \
      -H "X-Api-Key: vk_sand_your_key"
    
    # → { "session_id": "ses_9f2c1a", "status": "VERIFIED", "checks": { "document": "PASS", … }, … }

  7. FAILED और दोबारा प्रयास को संभालें

    जो session FAILED पर पहुँचता है उसमें एक failure_reason होता है। आवेदक को कुछ उपयोगी दिखाएँ। जल्द आ रहा है: FAILED session को दोबारा प्रयास में PENDING पर रीसेट करना। आज के लिए FAILED को अंतिम स्थिति मानें और आवेदक दोबारा कोशिश करना चाहे तो नया session बनाएँ।

स्विच चालू करने से पहले

प्रोडक्शन पर जाएँ।

sandbox और प्रोडक्शन के बीच request का स्वरूप कभी नहीं बदलता — केवल key बदलती है। किसी असली आवेदक को vk_live_ session से गुज़ारने से पहले इन बातों की पुष्टि करें।

  • vk_sand_ की जगह vk_live_ key लगाएँ। request में इसके अलावा कुछ नहीं बदलता।
  • webhook_url को ऐसे असली, हमेशा चालू endpoint पर सेट करें जो हस्ताक्षर सत्यापित करता हो — किसी request-bin या लैपटॉप पर नहीं।
  • अपने ऐप में तीनों अंतिम स्थितियों को संभालें: VERIFIED, FAILED और EXPIRED, केवल सफल रास्ते को नहीं।
  • पुष्टि करें कि आपका return_url उन session_id और status query parameters को पढ़ता है जो ShieldID redirect के समय जोड़ता है।
  • GET /v1/pricing/{country} या pricing पेज से मौजूदा कीमतें जाँचें, ताकि प्रोडक्शन के शुल्क चौंकाएँ नहीं।
  • sandbox keys को ऐसी किसी भी जगह से दूर रखें जहाँ कोई असली आवेदक पहुँच सके — sandbox session मुफ़्त है क्योंकि वह असली नहीं है।

प्रश्न

क्विकस्टार्ट FAQ।

शुरू करें

पहला चरण अभी चलाएँ।

sandbox की का अनुरोध करें, पहला cURL कमांड टर्मिनल में पेस्ट करें, और आप पहले ही ज़्यादातर इंटीग्रेशन से आगे हैं।