Szybki start
Szybki start weryfikacji tożsamości.
Od klucza sandbox do pierwszego podpisanego webhooka, krok po kroku. Każdy krok zawiera działający przykład — proszę go skopiować, podstawić własny klucz i adresy URL i uruchomić.
Krok po kroku
Siedem kroków, jedno popołudnie.
Uzyskaj klucz sandbox
Klucze sandbox (prefiks vk_sand_) są wydawane na żądanie, dopóki trwają prace nad samodzielną rejestracją. Proszę o niego poprosić za pomocą formularza kontaktowego — większość próśb jest realizowana tego samego dnia roboczego. Sesje sandbox nigdy nie są rozliczane, więc nie ma powodu, aby zwlekać z rozpoczęciem.
Utworzenie pierwszej sesji
Jedno wywołanie. Przekazują Państwo return_url (adres, na który trafia wnioskodawca po zakończeniu) oraz webhook_url (adres, na który trafia podpisany wynik). W odpowiedzi otrzymują Państwo session_id oraz verification_url.
bashcurl -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" } }'Przekazanie wnioskodawcy linku
Po otwarciu verification_url zobaczą Państwo stronę hostowaną. W przeglądarce na komputerze wyświetla ona kod QR — jego zeskanowanie przekazuje identyczny link na telefon, na którym odbywa się właściwe zdjęcie dokumentu, test żywotności i selfie. Proszę wypróbować to od razu na własnym telefonie.
Uruchomienie punktu końcowego webhooka
Proszę wskazać w webhook_url trasę, która przyjmuje żądanie POST, odczytuje surową treść żądania (potrzebują ją Państwo nieprzetworzoną, aby sprawdzić podpis) i zwraca status 2xx. W każdym innym przypadku ShieldID ponawia dostarczenie do trzech razy.
javascriptimport 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);Weryfikacja podpisu
Nie należy podejmować działań na podstawie treści webhooka, dopóki nie sprawdzą Państwo, że faktycznie pochodzi od ShieldID. Proszę obliczyć HMAC-SHA256 z surowej treści przy użyciu sekretu webhooka i porównać wynik z nagłówkiem X-Bio-Signature.
javascriptimport 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"); });Odczyt wyniku
Ładunek webhooka zawiera już wszystko, czego Państwo potrzebują. Jeśli wolą Państwo samodzielnie pobrać wynik — na przykład po przekierowaniu — mogą Państwo wywołać bezpośrednio punkt końcowy wyniku.
bashcurl 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", … }, … }Obsługa statusu FAILED i ponowna próba
Sesja, która kończy ze statusem FAILED, zawiera failure_reason. Proszę pokazać wnioskodawcy coś użytecznego. Wkrótce: ponowna próba dla sesji FAILED, resetująca ją do PENDING. Obecnie FAILED należy traktować jako stan końcowy i utworzyć nową sesję, jeśli wnioskodawca chce spróbować ponownie.
Zanim przełączą Państwo na produkcję
Przejście na produkcję.
Kształt żądania nie zmienia się między sandbox a produkcją — zmienia się tylko klucz. Proszę to potwierdzić, zanim prawdziwy wnioskodawca przejdzie przez sesję vk_live_.
- Proszę zamienić klucz vk_sand_ na klucz vk_live_. Nic więcej w żądaniu się nie zmienia.
- Proszę wskazać w webhook_url rzeczywisty, stale działający punkt końcowy, który weryfikuje podpis — a nie request-bin ani laptop.
- Proszę obsłużyć w aplikacji wszystkie trzy stany końcowe: VERIFIED, FAILED i EXPIRED, a nie tylko scenariusz pomyślny.
- Proszę upewnić się, że return_url odczytuje parametry zapytania session_id i status, które ShieldID dołącza podczas przekierowania.
- Proszę sprawdzić aktualny cennik za pomocą GET /v1/pricing/{country} lub na stronie cennika, aby opłaty produkcyjne nie były niespodzianką.
- Kluczy sandbox należy trzymać z dala od wszystkiego, do czego mógłby dotrzeć prawdziwy wnioskodawca — sesja sandbox jest bezpłatna, ponieważ nie jest prawdziwa.
Pytania
FAQ do krótkiego przewodnika.
Rozpocznij
Wykonajcie Państwo pierwszy krok już teraz.
Proszę zamówić klucz sandbox, wkleić pierwsze polecenie cURL do terminala, a już będą Państwo przed większością integracji.