人脸实名认证
更新时间 2025-03-24 16:33:05
最近更新时间: 2025-03-24 16:33:05
提供基于公安权威库的实名认证服务,支持二代居民身份证的三要素(姓名、身份号码+人像正脸照片)核验
接口描述
提供基于权威库的实名认证服务,支持二代居民身份证的三要素(姓名、身份号码+人像正脸照片)核验。
请求方法
POST
接口要求
- 图片格式限制:支持 jpeg格式,BASE64 字符串无需包含格式头,注意去除换行符
- 图片大小限制:原始尺寸需压缩至 10~40KB,否则可能会因为过小或过大而导致人像比对不通,影响比对效率;
请求URI
/v1/aiop/api/348c0ca2pkw0/gcapi/simpauth66
请求参数
1.请求头header参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Content-Type | 是 | String | json 格式 | application/json | |
appkey | 是 | String | 平台应用appkey | 562b89493b1a40e1b97ea05e50dd8170 | |
ctyun-eop-request-id | 是 | String | 用户请求 id,由用户构造,用户可以通过 uuid 等方法自行生成唯一字符串,用于日志请求追踪。 详见文档:Python3调用示例 |
33dfa732-b27b-464f-b15a-21ed6845afd5 | |
eop-date | 是 | String | 请求时间,由用户构造,形如 yyyymmddTHHMMSSZ。 详见文档:Python3调用示例 |
20211221T163014Z | |
host | 是 | String | 终端节点域名,固定字段 | ai-global.ctapi.ctyun.cn | |
Eop-Authorization | 是 | String | 由天翼云官网 accessKey 和 securityKey 经签名后生成,参与签名生成的字段包括天翼云官网 accessKey 、securityKey、平台应用的appkey(非必须),用户请求id(非必须),请求时间,终端节点域名(非必须)以及请求体内容。 签名逻辑详见文档:认证鉴权和Python3调用示例 |
2.请求体body参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
portrait | 是 | String | BASE64 编码的人像图;原始尺寸需压缩至 10~40KB,否则可能会因为过小或过大而导致人像比对不通,影响比对效率; BASE64 字符串无需包含格式头,注意去除换行符 | "_9j_4AAQSkZJRgA..." | |
idNum | 是 | String | 认证的用户身份证号码(号码最后一位 X 约定为大写) | 13x6xx199x07xx98xx | |
fullName | 是 | String | 认证的用户姓名(注意去除空格等非常规字符) | 龙傲天 |
请求代码示例
Curl -X POST
"https://ai-global.ctapi.ctyun.cn/v1/aiop/api/348c0ca2pkw0/gcapi/simpauth66"
-H "Content-Type: application/json"
-H "ctyun-eop-request-id:33dfa732-b27b-464f-b15a-21ed6845afd5"
-H "appkey:XXX"
-H "Eop-Authorization:XXX"
-H "eop-date:20211109T104641Z"
-H "host:ai-global.ctapi.ctyun.cn"
--data '{"portrait": "_9j_4AAQSkZJRgA...","idNum": "13x6xx199x07xx98xx","fullName": "龙傲天"}'
返回值说明
1.请求成功返回响应参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
statusCode | 是 | Lnt | 返回状态,返回 0 表示成功,返回错误代码参考下面的错误代码列表。 | 0 | |
retMessage | 是 | String | 接口调用结果/认证结果文字说明 | "success" | |
certToken | 是 | String | 本次认证的记录凭证,建议记录起来,方便后续定位排查,当code为0、4101、4109时,该字段不为空 | ||
resStr | 是 | String | 本次认证结果的具体说明,详看“认证结果代码说明”;若仅判断认证是否成功,可直接通过code判断,当code为0、4101、4109时,该字段不为空 |
认证结果代码说明
结果字节 | 所表示的结果 |
---|---|
第一字节 | 姓名,身份号码比对结果 |
第二字节 | 人像比对结果 |
第三字节 | 可忽略 |
第四字节 | 可忽略 |
第一字节说明
返回代码 | 代码说明 | 可能出现原因 | 下一步建议 |
---|---|---|---|
0 | 身份信息有效 | -- | -- |
5 | 身份信息无效 | 1.身份信息不存在 2.身份信息不匹配 | 检查身份信息 |
6 | 参数错误 | 身份信息格式不正确 | 检查身份信息 |
7 | 系统错误 | 系统错误或服务异常 | -- |
A | 穿网调用超时 | 公安内部接口穿网调用超时 | -- |
E | 接口调用异常 | 公安内部接口接口调用异常 | -- |
T | 接口调用超时 | 公安内部接口接口调用超时 | -- |
X | 未执行 | 未执行 | -- |
其他代码 | 其他 | 其他 | -- |
第二字节说明
返回代码 | 代码说明 | 可能出现原因 | 下一步建议 |
---|---|---|---|
0 | 同一人 | -- | -- |
1 | 非同一人 | 1.照片为本人,但是照片可能有角度、光线过暗、脸部区域有亮斑;2.照片为本人,但是该照片尺寸太小 | 1.重新拍照; 2.传入合格图片 |
2 | 疑似为本人 | 1.照片为本人,但是照片可能有角度、光线过暗、脸部区域有亮斑;2.照片为本人,但是该照片尺寸太小;3.两人长相类似 | 1.重新拍照;2.传入合格图片 |
A | 数据库操作错误 | 人像比对数据库操作异常 | -- |
B | 人像比对异常 | 人像比对系统异常 | -- |
C | 参数错误 | 身份证号为空或长度不是 18 位 | -- |
D | 无人像信息 | 数据库中无该人像信息 | 检查该人身份信息是否正确 |
E | 图像格式不正式 | 非JPEG格式图像 | 检查传入的图像数据是否为JPEG格式 |
F | 待比对图像建模失败 | 1.照片可能有角度,光线过暗,脸部区域有亮斑,模糊;2.照片尺寸太小 | 1.重新拍照;2.传入合格图片 |
G | 现场照片质量不合格 | 上传照片质量不合格 | 自检上传照片质量 |
J | 现场照片小于5K字节 | 现场照片小于5K字节 | 检查图像原始大小(非BASE64编码)是否小于5K字节,重新拍照 |
K | 公安制证照片质量不佳 | 库内照片质量不佳 | 系统人像信息异常或者未录入认证系统 |
T | 人像引擎超时 | 人像服务所有比对引擎同时超时或一个引擎超时,另一个引擎故障 | 重试 |
W | 系统其他错误 | 认证超时 | 重试 |
X | 未执行 | 未执行 | 重试或者联系运维人员 |
其他代码 | 其他 | 其他 | -- |
返回值示例
1.请求成功返回值示例
{
"certToken": "d182ca85-xxxx-xxxx-xxxx-868cb258ceab",
"resStr": "00XX",
"statusCode": 0,
"retMessage": "成功"
}
2.请求失败返回值示例
{
"statusCode": 1,
"retMessage": "接口调用失败"
"error":"AI_OP_4101"
}
状态码
http状态码 | 描述 |
---|---|
200 | 表示接口调用成功。 |
错误码说明
错误码 | 错误信息 | 错误描述 |
---|---|---|
AI_OP_1 | 接口调用失败 | 接口调用失败 |
AI_OP_2 | 服务器错误 | 服务器错误 |
AI_OP_4002 | 参数错误,见retMessage | 如 portrait字段需为图片转换的base64字符串、portrait字段过长、不是有效的身份号码 等 |
AI_OP_4010 | 认证接口并发已到上限 | QPS达到上限 |
AI_OP_4101 | 身份认证未通过 | 身份认证未通过 |
AI_OP_4103 | 身份认证服务异常 | 身份认证服务异常 |
AI_OP_4104 | 认证接口调用超时 | 认证接口调用超时 |
AI_OP_4109 | 非库内人员 | 非库内人员,该人员身份信息未收录或姓名与身份证号不匹配 |
base64 编码规则:使用常规的 safe base64 编码方式
- python 中推荐使用
base64.urlsafe_b64encode()
函数进行编码。 - java 中推荐使用
BASE64.getUrlEncoder().encodeToString()
函数进行编码。