支付宝小程序:人脸采集

小编:啊南 3705阅读 2020.12.28

产品介绍

人脸识别是解决在公共服务场所提升商家效率和用户体验的新方式,其中人脸采集是指在获得用户充分授权和认可,且充分保护用户隐私的前提下,获取到符合质量要求的活体人脸图片,用于后续的对比、识别等操作,以此来提升商家的服务质量。核心功能包括:

  • 活体检测:证明当前用户是真人。采用全球首创非配合式活体检测技术,无需用户做任何动作,极速通过检测。

  • 图像质量检测:判断采集到的人脸是否符合标准质量要求。采用多维度质量判断模型,找出一张高质量的人脸照片。该质量监测模型,通过遮挡(人脸各部位的遮挡比例)、模糊度(人脸的清晰度)、光照(人脸的光照强度)、完整性(人脸的完整性)、姿态(人脸在三维空间的角度分布)、表情(人脸表情的正常度)等多个维度进行综合判断。

交互界面

调用流程

应用场景

人脸应用广泛,可适用于以下多个场景:

场景

描述

拍摄证件照

小程序提供拍摄光照角度良好的证件照的功能。
团餐 校园点餐场景录入学生人脸,用于刷脸代扣点餐。

通过人脸采集小程序返回给开发者的活体照片,不建议使用在安全性较差的比对算法下,和开发者自有的比对源图片进行比对,用于核实本人。如果开发者有核实本人的场景需求,请使用 支付宝身份验证?或者其他开放渠道的刷脸认证产品。因为 支付宝身份验证 产品在后端具备完善的风控体系以及更加安全的活体检测算法,具有非常强的防攻击防误识能力。

注意:

小程序“刷脸认证”开放能力已经全面升级为“支付宝身份验证”,推荐开发者使用“支付宝身份验证”能力;已经签约并上线“刷脸认证”的小程序可以继续使用。

准入条件
  • 该能力仅对企业支付宝账户开放。

  • 申请前必须拥有经过实名认证的支付宝账户。

  • 需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致。

注意:

  • 若支付宝发现信息存在超出约定范围使用或者不合理使用等情况,支付宝有权永久收回该小程序的人脸采集接口权限。

计费模式

免费

接入指引第一步:创建小程序

要在您的小程序内使用?人脸采集功能,您需要首先完成 开发者入驻 并 创建小程序。

第二步:添加能力

小程序创建完成后,开发者在?能力列表?部分可以点击?添加能力?来给创建的小程序添加能力,如下图所示;开发者勾选 人脸采集 能力后,点击右下角 确定 即完成添加。

image.png

第三步:签约能力

人脸采集 功能需要签约才能生效,请点击功能列表右侧“立即签约”,签约成功后,状态置为“已生效”,即可调用人脸采集接口。

第四步:集成并配置 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)作为请求参数传入,实现代商户发起请求的能力。

第五步:调用接口

调用流程图

人脸采集.png

  1. 调用 JSAPI(faceVerify)唤起人脸采集,整个采集过程完全由人脸内部实现,采集完成后,通过回调函数返回采集结果。采集过程中,客户端完成人脸采集过程以及活体检测,然后将采集的人脸特征数据上传到服务端进行进一步的活体检测,最终返回采集结果到客户端。

  2. 调用查询接口(zoloz.identification.user.web.query)获取可信的采集结果,如果采集成功,可通过此接口获取采集的人脸照片。

主要步骤

版本要求:

  • 支付宝最低版本要求:10.1.52

  • 小程序 基础库 最低版本要求:1.14.0

  1. 调用接口 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代表的是刷脸可用性成功,刷脸可用,才可进行人脸采集。

  1. 调用人脸采集查询接口(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="}




API 列表

接口英文名称

接口描述

my.ap.faceVerify

人脸采集

zoloz.identification.user.web.query

人脸采集结果查询

常见问题Q:若一个用户拥有多个支付宝账户,调用刷脸核身的API时返回的 user_id 是同一个吗?

A:会优先返回用户最近一次使用的支付宝账号对应的 user_id 。

Q:真机调试报错 "retMessageSub":"{"error":4,"errorMessage":"无权调用","message":"无权调用","signature":"N22104"} 怎么办?

A:人脸采集功能需要在小程序后台添加 人脸采集 功能包并 签约 通过才能使用。请参本文档 接入指引



关联标签: