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 processingpassedfailedexpiredcancelled;旧会话被新人像面重传取消后固定返回 cancelled
data.identity object 与实名认证状态接口相同的完整脱敏结构,表示账号当前实名流程;旧会话取消后可能已进入新 OCR 草稿流程,不要求与 data.verification_status 相同

服务端使用创建会话时绑定的百度令牌查询 result/getall,只认可百度后验结果。百度明确返回认证未通过时以 200 返回 verification_status=failedidentity.status=3identity.failed_reason 为经过长度限制的安全中文原因;百度 messagecode 或风险等级结构异常时使用统一安全文案,不透传原始结构。百度尚未生成结果、网络失败或服务临时不可用时返回可重试的 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