Mga webhook at integration
Mga webhook para sa identity verification, isang hosted page at isang widget.
Ipadala ang aplikante sa hosted verification page o ilagay ang widget sa sarili ninyong flow, makakuha ng signed webhook sa sandaling dumating ang resulta, at hayaan ang sinumang may link na kumpirmahin ito sa pampublikong pahina ng credential-check. Isang KYC API integration na binuo para mag-live sa loob ng isang hapon.
- Mga callback na pinirmahan ng HMAC-SHA256
- QR hand-off mula desktop papuntang telepono
- Hindi kailanman sinisingil ang mga sandbox session
Hosted verification page
Isang link para sa buong flow.
Lumikha ng session sa pamamagitan ng API at makakakuha ka ng verification URL. Ipadala ito sa email, text o sa sarili mong app — ang page na ang bahala sa iba.
Desktop
Binubuksan ng applicant ang link sa kanyang mesa.
QR hand-off
Ipinapakita ng page ang isang QR code at isang maikling instruction card.
Phone capture
Kapag na-scan ito, lilipat ang parehong session sa pag-capture ng dokumento at selfie.
Na-verify
Aabot ang session sa VERIFIED, nasa phone pa rin.
Balik sa iyo
Isang redirect sa iyong return URL, kasama ang isang signed na webhook, sa alinmang kaso.
Gumagana tulad ng payment redirect
Mapupunta ang aplikante sa isang page sa mismong URL ng iyong session. Walang account, walang app na i-install.
QR hand-off, mula desktop papuntang telepono
Kapag binuksan sa desktop, nagpapakita ang page ng QR code at maikling instruction card sa halip na humingi ng access sa camera. Kapag na-scan ito, bubuksan ang parehong link sa telepono, na dederetso sa document at selfie capture.
Bumabalik sa iyo, dala ang sagot
Kapag naabot na ng session ang VERIFIED, magre-redirect ang page sa iyong return URL na may kalakip na session ID at status, kaya alam ng iyong app ang nangyari nang hindi naghihintay ng iba pa.
May branding, sa mga kwalipikadong plan
Ang pangalan ng iyong kumpanya, logo, accent colour at mga link sa terms at privacy, na inilalapat sa hosted page at sa credential-check page.
Mga webhook
Isang naka-sign na callback, sa sandaling dumating ang resulta.
Magbigay ng webhook URL kapag lumikha ka ng session at ipo-post namin ang resulta rito pagkatapos mismong matapos ang session, hindi na kailangan ng polling.
Naka-sign, hindi basta ipinadala
Bawat delivery ay may X-Bio-Signature header: isang HMAC-SHA256 ng request body, para mapatunayan mong galing ito sa amin bago mo ito pagkatiwalaan.
May retry, hindi fire-and-forget
Ang delivery na pumalya ay inuulit nang tatlong beses, na may mas mahabang paghihintay bago ang bawat pagtatangka.
Itinatala ang bawat pagtatangka
Matagumpay man o hindi, nagtatago kami ng tala ng pagtatangka sa aming panig.
Malapit na Malapit nang dumating ang delivery log sa loob ng portal, para makita mo mismo ang bawat pagtatangka.
Ituring na katotohanan ang pinakabagong VERIFIED
Dahil sa mga retry, maaaring sa bihirang pagkakataon ay dumating nang hindi sunud-sunod ang isang delivery. Huwag nang ibatay ang iyong logic sa pagtanggap ng webhook — ibatay ito sa session ID, at hayaang palitan ng mas bagong VERIFIED ang naunang VERIFIED. Kung may sarili kang state, mag-de-duplicate batay sa session ID sa halip na sa pagtanggap ng webhook.
I-verify ang signature
Pagkatiwalaan ang payload bago kumilos batay dito.
I-recompute ang HMAC-SHA256 sa raw request body at ihambing ito sa X-Bio-Signature bago mag-parse ng anuman.
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
Ang hosted flow, nakalagay mismo sa sarili mong page.
Lumilikha ang widget ng session at nire-render ang parehong hosted flow nang inline, sa isang iframe, kaya hindi umaalis ang mga aplikante sa iyong site.
- Nire-render sa isang iframe na may access sa camera at mikropono, na akma ang laki sa container nito.
- Binabasa ang session status sa parehong paraan ng hosted page: sa pamamagitan ng inyong return URL at webhook, kapag natapos na ang session.
Malapit na Paparating na ang mga in-page completion callback (onComplete, onCancel, onStep, automatic resize). Hanggang doon, gamitin ang return_url at mga webhook para malaman kung kailan natapos ang isang session — gumagana na ang mga ito ngayon.
Bago mo ito i-ship sa production
Sa ngayon, tumatanggap ang widget ng API key nang direkta sa browser. ituring itong sandbox convenience, hindi pattern para sa production: likhain ang session mula sa sarili ninyong backend na nasa server-side lang ang inyong key, at ibigay sa widget ang resultang session lamang, hindi kailanman ang live key na mababasa ng browser ng bisita.
<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>Pahina ng credential-check
Isang pampublikong pahina para sa na-verify na session.
Kapag umabot na sa VERIFIED ang isang session, ang sarili nitong credential-check link ay nagpapakita ng kumpirmasyon sa simpleng wika: ang pangalan ng aplikante, ang uri ng dokumento at ang status. Sinumang may hawak ng link — isang co-signer, isang front-desk clerk, isang katapat na partido — ay makakakumpirma ng resulta nang hindi nagsa-sign in sa inyong dashboard.
Jordan Reyes
Sample dataDriver’s license ng California
Na-verify
- Hindi kailangang mag-sign in para makita ito.
- Walang raw na ID image at walang confidence score na lilitaw rito kailanman — status at pagkakakilanlan lang, wala nang iba.
- May branding na kapareho ng hosted page, sa mga kwalipikadong plano.
Mga pattern ng integration
Paano ito isinasama ng anim na uri ng negosyo.
Pareho ang mga building block saanman: isang session, isang link o widget, isang webhook. Nag-iiba ang angkop na pattern ayon sa kung paano at kailan ninyo kailangan ang sagot.
Legal at mga law firm
Mga asosasyon ng Condo at HOA
Fintech at lending
Mga marketplace at gig platform
E-signature
Mga Tanong
Mga tuwirang sagot tungkol sa integration.
Magsimula
Mag-wire up ng webhook. Panoorin itong mag-fire.
Lumikha ng sandbox session na may webhook URL, magpatakbo ng verification sa sarili mong telepono, at basahin ang naka-sign na callback na ipinapadala nito.