Webhook 與整合
身分驗證 webhook、託管頁面與小工具。
將申請人導向託管的驗證頁面,或將小工具嵌入您自己的流程,結果一出爐就收到已簽署的 webhook,並讓任何持有連結的人在公開的憑證查驗頁面上確認結果。這是一套可在一個下午內上線的 KYC API 整合方案。
- 以 HMAC-SHA256 簽署的回呼
- 從桌面電腦到手機的 QR 轉接
- Sandbox 工作階段絕不計費
託管驗證頁面
一個連結,完成整個流程。
透過 API 建立工作階段,即可取得驗證 URL。可透過電子郵件、簡訊或在您自己的應用程式中傳送——其餘交給頁面處理。
桌面端
申請人在桌前開啟連結。
QR 轉接
頁面會顯示 QR code 與一張簡短的說明卡。
手機拍攝
掃描後,同一個工作階段會切換為證件與自拍拍攝。
已驗證
工作階段達到 VERIFIED,仍在手機上完成。
回到您這裡
無論結果如何,都會導向您的返回網址,並送出一則已簽章的 webhook。
運作方式類似付款轉址
申請人會進入您工作階段專屬 URL 的頁面。無需帳號,也無需安裝應用程式。
QR 碼交接,從桌機到手機
在桌機上開啟時,頁面會顯示 QR 碼與簡短的說明卡,而不是要求相機存取權限。掃描後會在手機上開啟相同連結,並直接切換到證件與自拍拍攝。
帶著答案回到您這裡
工作階段一旦達到 VERIFIED,頁面就會轉址至您的 return URL,並附加工作階段 ID 與狀態,讓您的應用程式不必等待任何其他資訊,就能知道發生了什麼事。
可套用品牌,適用於符合資格的方案
您的公司名稱、標誌、強調色,以及條款與隱私權連結,會套用於託管頁面和憑證檢查頁面。
Webhooks
結果一出,立即送出已簽章的回呼。
建立工作階段時提供 webhook URL,工作階段一結束,我們就會把結果 POST 到該 URL,無需輪詢。
不只是送出,還有簽章
每次傳送都帶有 X-Bio-Signature 標頭:即請求內文的 HMAC-SHA256,讓您在信任之前,能先證明它確實來自我們。
會重試,而非發出後就不管
傳送失敗時會重試三次,每次嘗試之前的等待時間會逐次加長。
每次嘗試都會記錄
不論成功或失敗,我們都會在我們這端保留該次嘗試的紀錄。
即將推出 入口網站內的傳送紀錄(讓您可以自行查看每一次嘗試)即將推出。
以最新的 VERIFIED 為準
由於會重試,傳送在少數情況下可能亂序送達。請完全不要以是否收到 webhook 作為邏輯依據——請以工作階段 ID 為依據,並讓較晚的 VERIFIED 覆寫較早的。若您自行保存狀態,請以工作階段 ID 去重,而非依 webhook 接收紀錄。
驗證簽章
先確認資料可信,再採取行動。
在解析任何內容之前,先對原始請求本文重新計算 HMAC-SHA256,並與 X-Bio-Signature 比對。
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 小工具
託管流程,直接嵌入您自己的頁面。
小工具會建立工作階段,並在 iframe 中以內嵌方式呈現相同的託管流程,讓申請人無需離開您的網站。
- 在 iframe 中呈現,具備相機與麥克風存取權限,尺寸隨容器調整。
- 以與託管頁面相同的方式讀取工作階段狀態:在工作階段結束後,透過您的 return URL 與 webhook。
即將推出 頁面內的完成回呼(onComplete、onCancel、onStep、自動調整大小)即將推出。在此之前,請使用 return_url 與 webhook 來得知工作階段何時結束——這兩者現在就能使用。
在正式上線之前
此小工具目前接受直接在瀏覽器中填入 API 金鑰。請將其視為 sandbox 的便利做法,而非正式環境的作法:請從您自己的後端建立工作階段,並將金鑰保存在伺服器端,只將建立後的工作階段交給小工具,切勿提供訪客瀏覽器能讀取的正式金鑰。
<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
範例資料加州駕照
已驗證
- 檢視時不需要登入。
- 頁面上絕不會出現原始身分證件影像或信賴分數——只有狀態與身分資訊,別無其他。
- 在符合條件的方案中,品牌樣式與託管頁面一致。
整合模式
六種類型的企業如何串接。
基本組件在各處都一樣:工作階段、連結或小工具,以及 webhook。適合的模式會隨您需要答案的方式與時機而不同。
法律與律師事務所
共管公寓與 HOA 社區協會
金融科技與放貸
市集與零工平台
E-signature
常見問題
關於整合的直接解答。
開始使用
串接 webhook,看著它觸發。
建立一個附有 webhook URL 的 sandbox 工作階段,用您自己的手機執行驗證,並讀取它送出的已簽章回呼。