[NEW]人脸采集
1. 产品介绍
人脸识别是解决在公共服务场所提升商家效率和用户体验的新方式,其中人脸采集是指在获得用户充分授权和认可,且充分保护用户隐私的前提下,获取到符合质量要求的活体人脸图片,用于后续的对比、识别等操作,以此来提升商家的服务质量。核心功能包括:
- 活体检测:证明当前用户是真人。采用全球首创非配合式活体检测技术,无需用户做任何动作,极速通过检测。
- 图像质量检测:判断采集到的人脸是否符合标准质量要求。采用多维度质量判断模型,找出一张高质量的人脸照片。该质量监测模型,通过遮挡(人脸各部位的遮挡比例)、模糊度(人脸的清晰度)、光照(人脸的光照强度)、完整性(人脸的完整性)、姿态(人脸在三维空间的角度分布)、表情(人脸表情的正常度)等多个维度进行综合判断。
交互界面
应用场景人脸应用广泛,可适用于以下多个场景:
场景 | 描述 |
---|---|
拍摄证件照 | 小程序提供拍摄光照角度良好的证件照的功能。 |
团餐 | 校园点餐场景录入学生人脸,用于刷脸代扣点餐。 |
|
2. 准入条件
该产品使用者需要签约,具体签约要求如下。
- 申请前必须拥有经过实名认证的支付宝账户;
- 仅企业工商户可申请(个人开发者暂不可申请);
需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致;
注意:
3. 计费模式
该产品的调用目前处于免费期,商户无须支付费用。
4. 接入指引
4.1 完成开发者入驻请参考这里完成开发者入驻并创建小程序应用
4.2 添加人脸采集功能在小程序详情页的功能列表中添加“人脸采集”4.3 签约人脸采集人脸采集功能需要签约才能生效,请点击功能列表右侧“立即签约”,签约成功后,状态置为“已生效”,即可调用人脸采集接口。
- 调用JSAPI(faceVerify)唤起人脸采集,整个采集过程完全由人脸内部实现,采集完成后,通过回调函数返回采集结果。采集过程中,客户端完成人脸采集过程以及活体检测,然后将采集的人脸特征数据上传到服务端进行进一步的活体检测,最终返回采集结果到客户端。
调用查询接口(zoloz.identification.user.web.query)获取可信的采集结果,如果采集成功,可通过此接口获取采集的人脸照片。
主要步骤前提:请先了解小程序框架版本要求:支付宝最低版本要求:10.1.52
- 小程序框架最低版本要求:1.14.0
- 调用接口 faceVerify,传入入參bizId和bizType唤起人脸采集,采集结束后,通过回调函数得到采集结果。
请注意,在一次faceVerify调用没有返回之前,切记不能发起第二次faceVerify调用,否则会产生异常。例如,在你的小程序中通过点击一个页面上的按钮来触发faceVerify的调用,请确保在该次调用返回之前,将按钮禁用,不允许用户进行多次点击。
代码示例
my.ap.faceVerify({
bizId: '545689787654767653', //业务流水号,商户自行生成,需要保证唯一性,不超过64位
bizType: '1', //业务场景参数,‘1’代表人脸采集,请务必填写
useBackCamera: true, //传入此参数会唤起后置摄像头;非必填,不传默认唤起前置摄像头
success: (res) => {
my.alert({
content: JSON.stringify(res),
});
},
fail: (res) => {
my.alert({
content: JSON.stringify(res),
});
}
});
认证成功结果示例faceRetCode = 1000 代表人脸采集成功,并且调用 查询接口(zoloz.identification.user.web.query)能够成功获取照片,证明人脸采集成功。
{
faceRetCode: "1000",
retCode: "OK_SUCCESS",
retCodeSub: "Z5100",
retMessageSub: "成功 (Z5100)",
zimId: "7b6b72be1493cab72dd0a25877de329dd00"
}
注意,retCode代表的是刷脸可用性成功,刷脸可用,才可进行人脸采集。
- 调用人脸采集查询接口(zoloz.identification.user.web.query)获取人脸照片
请求示例
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
ZolozIdentificationUserWebQueryRequest request = new ZolozIdentificationUserWebQueryRequest();
request.setBizContent("{" +
"\"biz_id\":\"5456897876546767654\"," +
"\"zim_id\":\"731be7f204a962b0486a9b64ea3050ae\"," +
"\"extern_param\":\"{\\\"bizType\\\":\\\"1\\\"}\"" +
"}");
ZolozIdentificationUserWebQueryResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
成功响应示例如果采集成功,imgStr对象中的值即为人脸照片的base64编码字符串。
{
"zoloz_identification_user_web_query_response": {
"code": "10000",
"msg": "Success",
"extern_info": "{\"imgStr\":\"ApA4VVwOP1rqp8sotrcimna3c__9k\",\"bizId\":\"5456897876546767654-doucao.wjp\",\"zimMsg\":\"成功\",\"zimCode\":\"Z5130\"}"
},
"sign": "SL1dSiE6XKKIta5w3ge3VSZE+71CdBtr8Ocw9WvRSZD3Tz6/vNaA2pWLBYdZcvrAHaMYa6J8V9c4nY3kdBK0EeU2afh+8CLTw6dnZfkO8tR5NOtJUb+M6qhxl0xKhpE+2GUonpCcJg1MHS0aMVXa/b6dhK/yZJQCdO1YnVNuzs8="
}
失败响应示例
{
"zoloz_identification_user_web_query_response": {
"code": "40004",
"msg": "Business Failed",
"sub_code": "INVALID_PARAMETER",
"sub_msg": "参数有误抱歉,系统出错了,请您稍后再试 (Z5132)"
},
"sign": "v/DjkviKs2ja3HO9ZZ94W8bcfAsLyRuGrZT/TlFm6FgGQv4qSm/94o1FjOaMCl/t8XIm89bBhk03PBJ099alDzjnj4RD6S9FYDV7CfjvHYjrzvVJzn47Gc1mWdOHZ38DFQLWIg1IbNKFmYdoR+NdY5nY/cwz3Al2wfEylvN1cbs="
}
5. API列表
接口英文名称 | 接口描述 |
---|---|
my.ap.faceVerify | 人脸采集 |
zoloz.identification.user.web.query | 人脸采集结果查询 |