/v2/identity/selfie_idnumber_verification
1.接口描述
(v2版本带签名认证)该接口在身份核验的基础上,结合用户的活体检测动作,基于模型算法的能力,优先进行图片质量检测,判断用户图片是否清晰,是否过度曝光等;再对照片进行人像定位,特征提取;并最终判断是否为用户本人。
(注:此接口只提供比对相似度分数,不提供比对照片)
- 普通人脸图片要求
- 格式为 JPG(JPEG),BMP,PNG,GIF,TIFF
- 宽和高大于 8px,小于等于4000px
- 小于等于 2 MB,建议100KB以内
- 人脸双眼间距不小于30像素,建议90像素以上
- 图像中人脸图像较清晰,不因镜头散焦或运动而模糊
- 眼睛的瞳孔清晰可见,镜面无反光,禁止戴墨镜,且眼镜框不得遮挡眼睛,不要带宽框眼镜
- 人脸光线均匀且无阴影,亮度在200-800Lux,面部无明显反光、逆光、侧光
- 要求头发及饰物不能遮挡人脸,禁止戴口罩,帽子
- 表情自然、放松、无夸张动作,脸部区域完整、轮廓清晰、人脸比例不失真
- 照片中只允许有1张人脸,且背景简单,无复杂场景
- 人脸姿态要求,平面旋转(roll)±15°,俯仰变化(pitch)±10°,姿态偏转(yaw)±15°
- 支持自动识别人脸方向
- 上传的图片中包含有 exif 方向信息,先按此信息旋转、翻转后再做识别人脸方向并调整。
- 如果照片方向混乱且 exif 方向信息不存在或不正确,自动识别人脸方向并调整
请求方式:
POST
请求URL:
https://cloudapi.linkface.cn/v2/identity/selfie_idnumber_verification
2.请求参数
字段 | 类型 | 必需 | 描述 |
---|---|---|---|
api_id | string | 是 | API 账户。 |
sequence_id | string | 是 | 客户请求流水号,建议唯一性 |
id_number | string | 是 | 身份证号。用以查询近照 |
name | string | 是 | 与身份证号相对应的姓名。身份证号及姓名相匹配才能查询近照 |
selfie_file | file | 见下方注释 | 需上传的图片文件。上传本地图片可选取此参数 |
selfie_url | string | 见下方注释 | 图片网络地址。采用抓取网络图片方式可选取此参数 |
selfie_image_id | string | 见下方注释 | 图片的id。在云端上传过的图片可选取此参数 |
selfie_image_base64 | string | 见下方注释 | 采用base64编码的二进制图片数据可选此参数 |
selfie_auto_rotate | boolean | 否 | 开启图片自动旋转功能。开通:true,不开通:false。默认不开通 |
timestamp | string | 是 | 时间戳 |
sign | string | 是 | 签名(api_id+api_secret+timestamp使用SHA256算法获取) |
参数
selfie_file
,selfie_url
,selfie_image_id
与selfie_image_base64
必四选一,如同时传入多个参数,本API使用顺序为selfie_image_id
优先,其次selfie_file
、selfie_image_base64
、selfie_url
。若将 URL 放入 Query String 中则需要对特殊字符进行转义,所有中文和特殊字符必需以UTF-8编码转义。 目前支持 http/https 等协议的网络地址。下载限时 5s,超时后仍未下载完成则属于失败。 参数
selfie_file
需把图片文件的内容以 multipart/form-data 的形式放到 POST 消息体中。 打开自动旋转功能会增加运算时间,请酌情考虑是否开通此功能所有中文和特殊字符必需以UTF-8编码转义。
签名sign说明:
我们会为每位公有云用户分配一个账户API ID和对应秘钥API SECRET。为了保证安全性,用户的每次接口调用都需要上传一个签名(基于API ID和API SECRET获取)。
Java示例代码:
SHA256Util.getSHA256Str(LF_APP_ID + LF_APP_SECRET + timeStamp) /** * 利用java原生的摘要实现SHA256加密 * * @param str 加密后的报文 */ public static String getSHA256Str(String str) { MessageDigest messageDigest; String encodeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(str.getBytes("UTF-8")); encodeStr = byte2Hex(messageDigest.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encodeStr; } /** * 将byte转为16进制 */ private static String byte2Hex(byte[] bytes) { StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i = 0; i < bytes.length; i++) { temp = Integer.toHexString(bytes[i] & 0xFF); if (temp.length() == 1) { //1得到一位的进行补0操作 stringBuffer.append("0"); } stringBuffer.append(temp); } return stringBuffer.toString(); }
3.返回参数
字段 | 类型 | 描述 |
---|---|---|
request_id | string | 本次请求的 id |
code | string | 业务响应码。正常为 0000 ,其他值表示失败。详见业务响应码 |
msg | string | 消息说明 |
data | object | 消息体,详见data数组中字段的结构(只有code: 0000调用成功时返回) |
charge | int | 是否收费,1收费,2不收费 |
data
的结构如下:
字段 | 类型 | 描述 |
---|---|---|
check_result | int | 查询结果 1人证比对查得 2图片质量校验不合格 |
id_name_result | int | 身份核验结果 1姓名身份证号一致 2姓名身份证号不一致 3库无 |
photo_result | int | 图片校验结果 1比对成功 2库中无照片 3特征提取失败 |
certificate_score | double | 人脸和证件照比对结果系统判断为不同人:[0,40) 不确定是否为同一人:[40,60) 系统判断为同一人:[60,100] |
selfie_image_id | string | 请求参数中使用file、url方式会返回图片的id |
收费标准: code为0000且check_result为1时,charge为1,收费; code不为0000,或者code为0000且check_result为2时,charge为2,不收费。
成功返回示例:
{
"code": "0000",
"msg": "调用成功",
"charge": 1,
"data": {
"photo_result": 1,
"check_result": 1,
"selfie_image_id": "f950dc6b8116459d99969bcaf9d7a437",
"certificate_score": 9.000000000000002,
"id_name_result": 1
},
"request_id": "TIDabc8426e508a5ced3a92715779bedabc"
}
失败返回示例:
{
"request_id": "TID2af751b4bff24be781d60af10bf84101",
"code": "1000",
"msg": "验签失败",
"charge": 2
}
4.业务响应码
code | msg 字段 |
---|---|
0000 |
调用成功 |
1000 |
验签失败 |
1001 |
参数非UTF-8编码 |
1002 |
请求参数错误,具体原因见 reason 字段内容 |
1003 |
liveness_data 出错 |
1004 |
图片未检测出人脸 。对应图片见字段 image 所反馈的值 |
1005 |
从网络获取图片超时 |
1006 |
网络地址图片获取失败 |
1007 |
账号或密钥错误 |
1008 |
账号过期,具体情况见 reason 字段内容 |
1009 |
调用频率超出限额 |
1010 |
调用次数超出限额 |
1011 |
无调用权限 |
1012 |
请求路径错误 |
1013 |
图片体积过大。对应图片见字段 image 所反馈的值 |
1014 |
图片不存在。对应图片见字段 image 所反馈的值。 |
1015 |
文件不是图片文件或已经损坏。对应图片见字段 image 所反馈的值 |
1016 |
图片大小或格式不符合要求。对应图片见字段 image 所反馈的值 |
9999 |
服务器内部错误 |