支付宝小程序:人脸采集
小编:啊南 3705阅读 2020.12.28
产品介绍
人脸识别是解决在公共服务场所提升商家效率和用户体验的新方式,其中人脸采集是指在获得用户充分授权和认可,且充分保护用户隐私的前提下,获取到符合质量要求的活体人脸图片,用于后续的对比、识别等操作,以此来提升商家的服务质量。核心功能包括:
-
活体检测:证明当前用户是真人。采用全球首创非配合式活体检测技术,无需用户做任何动作,极速通过检测。
-
图像质量检测:判断采集到的人脸是否符合标准质量要求。采用多维度质量判断模型,找出一张高质量的人脸照片。该质量监测模型,通过遮挡(人脸各部位的遮挡比例)、模糊度(人脸的清晰度)、光照(人脸的光照强度)、完整性(人脸的完整性)、姿态(人脸在三维空间的角度分布)、表情(人脸表情的正常度)等多个维度进行综合判断。
调用流程
应用场景
人脸应用广泛,可适用于以下多个场景:
场景 |
描述 |
拍摄证件照 |
小程序提供拍摄光照角度良好的证件照的功能。 |
团餐 | 校园点餐场景录入学生人脸,用于刷脸代扣点餐。 |
通过人脸采集小程序返回给开发者的活体照片,不建议使用在安全性较差的比对算法下,和开发者自有的比对源图片进行比对,用于核实本人。如果开发者有核实本人的场景需求,请使用 支付宝身份验证?或者其他开放渠道的刷脸认证产品。因为 支付宝身份验证 产品在后端具备完善的风控体系以及更加安全的活体检测算法,具有非常强的防攻击防误识能力。
注意:
小程序“刷脸认证”开放能力已经全面升级为“支付宝身份验证”,推荐开发者使用“支付宝身份验证”能力;已经签约并上线“刷脸认证”的小程序可以继续使用。
准入条件-
该能力仅对企业支付宝账户开放。
-
申请前必须拥有经过实名认证的支付宝账户。
-
需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致。
注意:
-
若支付宝发现信息存在超出约定范围使用或者不合理使用等情况,支付宝有权永久收回该小程序的人脸采集接口权限。
免费
接入指引第一步:创建小程序要在您的小程序内使用?人脸采集功能,您需要首先完成 开发者入驻 并 创建小程序。
第二步:添加能力小程序创建完成后,开发者在?能力列表?部分可以点击?添加能力?来给创建的小程序添加能力,如下图所示;开发者勾选 人脸采集 能力后,点击右下角 确定 即完成添加。
第三步:签约能力
人脸采集 功能需要签约才能生效,请点击功能列表右侧“立即签约”,签约成功后,状态置为“已生效”,即可调用人脸采集接口。
第四步:集成并配置 SDK服务端 SDK 需要商户集成在自己的服务端系统中,用于后续的服务端接口调用。
下载服务端 SDK为了帮助开发者调用开放接口,我们提供了 开放平台服务端 SDK ,包含 JAVA、PHP、NodeJS、Python 和 .NET 五种语言,封装了签名 & 验签、HTTP 接口请求等基础功能。请先下载对应语言版本的 SDK 并引入您的开发工程。
接口调用配置在 SDK 调用前需要进行初始化,以 JAVA 代码为例:
AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
关键参数说明:
配置参数 | 示例值解释 | 获取方式/示例值 |
URL | 支付宝网关(固定) | ?https://openapi.alipay.com/gateway.do? |
APPID | APPID 即创建应用后生成 | 获取见创建应用 |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取见配置密钥 |
FORMAT | 参数返回格式,只支持 json | json(固定) |
CHARSET | 编码集,支持 GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2 | RSA2 |
接下来,就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。
注意:
ISV /开发者可以通过 第三方应用授权 得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力。
第五步:调用接口调用流程图
-
调用 JSAPI(faceVerify)唤起人脸采集,整个采集过程完全由人脸内部实现,采集完成后,通过回调函数返回采集结果。采集过程中,客户端完成人脸采集过程以及活体检测,然后将采集的人脸特征数据上传到服务端进行进一步的活体检测,最终返回采集结果到客户端。
-
调用查询接口(zoloz.identification.user.web.query)获取可信的采集结果,如果采集成功,可通过此接口获取采集的人脸照片。
主要步骤
版本要求:
-
支付宝最低版本要求:10.1.52
-
小程序 基础库 最低版本要求:1.14.0
-
调用接口 my.ap.faceVerify,传入参数 bizId 和 bizType 唤起人脸采集,采集结束后,通过回调函数得到采集结果。
请注意,在一次 my.ap.faceVerify 调用没有返回之前,切记不能发起第二次 faceVerify 调用,否则会产生异常。例如,在你的小程序中通过点击一个页面上的按钮来触发 my.ap.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"}undefined
注意,retCode代表的是刷脸可用性成功,刷脸可用,才可进行人脸采集。
-
调用人脸采集查询接口(zoloz.identification.user.web.query)获取人脸照片,以下请求示例代码以 JAVA 为例:
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("调用失败");}undefined
成功响应示例
如果采集成功,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="}
接口英文名称 |
接口描述 |
my.ap.faceVerify |
人脸采集 |
zoloz.identification.user.web.query |
人脸采集结果查询 |
A:会优先返回用户最近一次使用的支付宝账号对应的 user_id 。
Q:真机调试报错 "retMessageSub":"{"error":4,"errorMessage":"无权调用","message":"无权调用","signature":"N22104"} 怎么办?
A:人脸采集功能需要在小程序后台添加 人脸采集 功能包并 签约 通过才能使用。请参本文档 接入指引
相关推荐