Table of Contents
8.31.5 确认百度人脸实名认证结果
POST /tieup/api/v1/user/identity/face-verifications/{verification_no}/complete
Authorization: Bearer <access_token>
鉴权:需要 Authorization: Bearer <access_token>。请求体为空,APP 的 SDK 回调只表示采集流程结束,不能提交或声明认证结果。
完整请求示例:
{}
路径字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
verification_no |
string | 是 | 创建接口返回的 Tieup 业务认证号;只能确认当前登录用户自己的记录 |
认证通过完整响应示例:
{
"code": 200,
"message": "成功",
"data": {
"verification_no": "BFV202608031425309C03D8E8979C71F3EAA1",
"verification_status": "passed",
"identity": {
"status": 2,
"status_label": "已认证",
"real_name_masked": "测***",
"id_card_type": "idcard",
"id_card_masked": "110***********002X",
"verified_at": "2026-08-03 14:30:00",
"failed_reason": null,
"flow_status": "passed",
"next_action": "none",
"identity_draft_no": null,
"draft_expires_at": null,
"verification_no": null,
"verify_token": null,
"verification_expires_at": null
}
}
}
认证失败完整响应示例:
{
"code": 200,
"message": "成功",
"data": {
"verification_no": "BFV202608031425309C03D8E8979C71F3EAA1",
"verification_status": "failed",
"identity": {
"status": 3,
"status_label": "认证失败",
"real_name_masked": null,
"id_card_type": "idcard",
"id_card_masked": null,
"verified_at": null,
"failed_reason": "活体检测未通过",
"flow_status": "failed",
"next_action": "upload_front",
"identity_draft_no": null,
"draft_expires_at": null,
"verification_no": "BFV202608031425309C03D8E8979C71F3EAA1",
"verify_token": null,
"verification_expires_at": "2026-08-03 16:25:30"
}
}
}
认证取消完整响应示例:
{
"code": 200,
"message": "成功",
"data": {
"verification_no": "BFV202608041425426AFE8640B16BC00C0304",
"verification_status": "cancelled",
"identity": {
"status": 1,
"status_label": "待核验",
"real_name_masked": null,
"id_card_type": "idcard",
"id_card_masked": null,
"verified_at": null,
"failed_reason": null,
"flow_status": "draft",
"next_action": "upload_back",
"identity_draft_no": "BID202608041430006AFE8640B16BC00C0305",
"draft_expires_at": "2026-08-04 14:45:00",
"verification_no": null,
"verify_token": null,
"verification_expires_at": null
}
}
}
响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
data.verification_no |
string | Tieup 业务认证号 |
data.verification_status |
string | processing、passed、failed、expired 或 cancelled;旧会话被新人像面重传取消后固定返回 cancelled |
data.identity |
object | 与实名认证状态接口相同的完整脱敏结构,表示账号当前实名流程;旧会话取消后可能已进入新 OCR 草稿流程,不要求与 data.verification_status 相同 |
服务端使用创建会话时绑定的百度令牌查询 result/getall,只认可百度后验结果。百度明确返回认证未通过时以 200 返回 verification_status=failed,identity.status=3,identity.failed_reason 为经过长度限制的安全中文原因;百度 message、code 或风险等级结构异常时使用统一安全文案,不透传原始结构。百度尚未生成结果、网络失败或服务临时不可用时返回可重试的 422,APP 应保留原业务认证号并稍后重试;终态重复提交幂等返回已有结果。
认证通过后,服务端使用会话中由百度 OCR 得到并加密保存的完整姓名和身份证号写入实名档案,不依赖百度后验返回完整身份字段。后验返回完整身份时必须与 OCR 完全一致;返回脱敏身份时可见字符必须一致;明显冲突则认证失败。一张身份证只能绑定一个 Tieup 账号。成功、失败、过期或取消后,服务端清除会话中的百度 Token、Access Token 和 OCR 身份密文。
身份证正反面上传、创建/恢复会话和确认结果共享用户级 Redis 锁 tieup:baidu-identity:user:{user_id},OCR 入口锁 45 秒、创建入口 90 秒、完成入口 60 秒;抢锁失败或 Redis 异常均返回 422,客户端应稍后重试,服务端不会降级为无锁执行。数据库状态变更在短事务内依次锁定 tieup_user 用户记录和人脸认证会话记录;百度 OCR、Token 生成、两要素上报和结果查询均不进入数据库事务。重传与完成并发时,先取得锁者决定结果:完成先成功则实名落库,后续重传被拒绝;重传先成功则旧会话转为 cancelled 并清除敏感数据,旧百度失败或通过结果均不得覆盖取消终态,完成接口幂等返回 cancelled。