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,
      "invalid_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": "活体检测未通过",
      "invalid_reason": null,
      "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,
      "invalid_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 完全一致;返回脱敏身份时可见字符必须一致;明显冲突则认证失败。同一身份证同一时间只能归属一个有效实名,但允许被新的百度人脸认证转移:同用户重认时旧版本标记 reauthenticated;其他账号认证同一身份证成功时,原账号标记 identity_reassigned 并收到艺人端系统消息。成功、失败、过期或取消后,服务端清除会话中的百度 Token、Access Token 和 OCR 身份密文。

身份证正反面上传、创建/恢复会话和确认结果共享用户级 Redis 锁 tieup:baidu-identity:user:{user_id},OCR 入口锁 45 秒、创建入口 90 秒、完成入口 60 秒;确认通过时额外使用身份证摘要锁串行化同证件归属转移。抢锁失败或 Redis 异常均返回 422,客户端应稍后重试,服务端不会降级为无锁执行。数据库状态变更在短事务内按实名档案主键升序加行锁,避免两个账号互换身份证时形成死锁。重传与完成并发时,先取得用户锁者决定当前会话结果;重复认证成功后旧实名才失效,后续仍可再次上传证件发起新版本认证。