Webhooks en integraties
Webhooks voor identiteitsverificatie, een gehoste pagina en een widget.
Stuur een aanvrager naar een gehoste verificatiepagina of plaats de widget in uw eigen proces, ontvang een ondertekende webhook zodra een resultaat binnen is, en laat iedereen met de link het bevestigen op een openbare pagina voor referentiecontrole. Een KYC API-integratie die is gebouwd om binnen een middag live te gaan.
- Met HMAC-SHA256 ondertekende callbacks
- QR-overdracht van desktop naar telefoon
- Sandbox-sessies worden nooit gefactureerd
Gehoste verificatiepagina
Eén link doet de hele flow.
Maak een sessie aan via de API en u krijgt een verificatie-URL terug. Verstuur deze per e-mail, sms of in uw eigen app — de pagina regelt de rest.
Desktop
De aanvrager opent de link aan zijn bureau.
QR-overdracht
De pagina toont een QR-code en een korte instructiekaart.
Opname met de telefoon
Door te scannen schakelt dezelfde sessie over op het vastleggen van document en selfie.
Geverifieerd
De sessie bereikt VERIFIED, nog steeds op de telefoon.
Terug naar u
Een redirect naar uw return-URL, plus een ondertekende webhook, in beide gevallen.
Werkt als een betalingsredirect
De aanvrager komt terecht op een pagina op de eigen URL van uw sessie. Geen account, geen app om te installeren.
QR-overdracht, van desktop naar telefoon
Wanneer de pagina op een desktop wordt geopend, toont deze een QR-code en een korte instructiekaart in plaats van om cameratoegang te vragen. Door de code te scannen opent dezelfde link op de telefoon, die direct overschakelt naar het vastleggen van het document en de selfie.
Keert terug naar u, met het antwoord
Zodra de sessie VERIFIED bereikt, stuurt de pagina door naar uw return-URL met het sessie-ID en de status toegevoegd, zodat uw app weet wat er is gebeurd zonder ergens anders op te hoeven wachten.
Met uw huisstijl, bij in aanmerking komende abonnementen
Uw bedrijfsnaam, logo, accentkleur en links naar voorwaarden en privacybeleid, toegepast op de gehoste pagina en de pagina voor de controle van inloggegevens.
Webhooks
Een ondertekende callback, zodra er een resultaat is.
Geef ons een webhook-URL op wanneer u een sessie aanmaakt en wij sturen het resultaat ernaartoe zodra de sessie is afgerond, zonder dat polling nodig is.
Ondertekend, niet alleen verzonden
Elke levering bevat een X-Bio-Signature-header: een HMAC-SHA256 van de request body, zodat u kunt aantonen dat deze van ons afkomstig is voordat u hem vertrouwt.
Opnieuw geprobeerd, niet fire-and-forget
Een mislukte levering wordt drie keer opnieuw geprobeerd, met telkens een langere wachttijd vóór elke poging.
Elke poging wordt vastgelegd
Succes of mislukking, wij houden aan onze kant een registratie van de poging bij.
Binnenkort beschikbaar Een leveringslogboek in de portal, zodat u zelf elke poging kunt inzien, volgt binnenkort.
Beschouw de meest recente VERIFIED als de waarheid
Door nieuwe pogingen kan een levering in zeldzame gevallen in een andere volgorde aankomen. Laat uw logica niet afhangen van het ontvangen van een webhook, maar van het sessie-ID, en laat een latere VERIFIED een eerdere overschrijven. Als u uw eigen status bijhoudt, ontdubbel dan op basis van het sessie-ID in plaats van op basis van de ontvangst van de webhook.
Controleer de handtekening
Vertrouw de payload voordat u erop handelt.
Bereken de HMAC-SHA256 opnieuw over de ruwe request body en vergelijk deze met X-Bio-Signature voordat u iets parseert.
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
De gehoste flow, geplaatst in uw eigen pagina.
De widget maakt een sessie aan en toont dezelfde gehoste flow inline, in een iframe, zodat aanvragers uw site nooit verlaten.
- Wordt weergegeven in een iframe met toegang tot camera en microfoon, afgestemd op de grootte van de container.
- Leest de sessiestatus op dezelfde manier uit als de gehoste pagina: via uw return-URL en uw webhook, zodra de sessie is afgerond.
Binnenkort beschikbaar Callbacks voor voltooiing binnen de pagina (onComplete, onCancel, onStep, automatisch aanpassen van de grootte) volgen binnenkort. Gebruik tot die tijd return_url en webhooks om te weten wanneer een sessie is afgerond — die werken vandaag al.
Voordat u dit in productie neemt
De widget accepteert momenteel een API-sleutel rechtstreeks in de browser. Beschouw dat als een gemak voor de sandbox, niet als patroon voor productie: maak de sessie aan vanuit uw eigen backend met uw sleutel aan de serverzijde, en geef de widget alleen de resulterende sessie, nooit een live sleutel die de browser van een bezoeker kan lezen.
<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>Pagina voor referentiecontrole
Een openbare pagina voor een geverifieerde sessie.
Zodra een sessie VERIFIED bereikt, toont de eigen referentiecontrolelink een bevestiging in duidelijke taal: de naam van de aanvrager, het documenttype en de status. Iedereen met de link — een medeondertekenaar, een baliemedewerker, een wederpartij — kan het resultaat bevestigen zonder in te loggen op uw dashboard.
Jordan Reyes
VoorbeeldgegevensRijbewijs uit Ontario
Geverifieerd
- Aanmelden is niet nodig om de pagina te bekijken.
- Er verschijnt nooit een ruwe ID-afbeelding of betrouwbaarheidsscore op — alleen een status en de identiteit, niets meer.
- In dezelfde huisstijl als de gehoste pagina, bij daarvoor in aanmerking komende abonnementen.
Integratiepatronen
Hoe zes soorten bedrijven dit aansluiten.
De bouwstenen zijn overal hetzelfde: een sessie, een link of een widget, een webhook. Welk patroon past, hangt af van hoe en wanneer u het antwoord nodig hebt.
Juridisch en advocatenkantoren
Condominiumverenigingen
Fintech en kredietverlening
Marktplaatsen en gigplatforms
E-signature
Vragen
Duidelijke antwoorden over de integratie.
Aan de slag
Koppel een webhook. Zie hem afgaan.
Maak een sandbox-sessie aan met een webhook-URL, voer een verificatie uit op uw eigen telefoon en lees de ondertekende callback die wordt verzonden.