支付宝小程序:模板模式接入获取会员手机号
小编:啊南 1596阅读 2020.12.28
获取会员手机号旨在帮助商家便捷获取用户联系方式,在获得用户充分授权和认可,且充分保护用户隐私的前提下快速创建会员体系或开展其他业务。有关获取会员手机号能力的详细介绍,请参见 获取会员手机号。
准入条件-
开发者需充分尊重用户个人隐私,妥善使用手机号码的使用范围,不得随意打扰用户。若发现信息存在超出约定范围使用或者不合理使用等情况,平台有权永久收回接口权限。
-
为进一步规约和确认安全资质,开发者需加入 蚂蚁数据安全与隐私保障联盟,并严格遵守《支付宝开放平台用户信息处理规范》、《开放平台第三方应用安全开发指南》。
免费。
接入流程接入准备第一步:创建应用及模板
系统服务商(ISV)需 创建第三方应用 并 创建小程序模板 后才可接入获取会员手机号能力。
第二步:添加能力登录 开放平台控制台 >选择相应的第三方应用并点击进入管理后台 > 在 能力列表 中点击 添加能力 > 选择添加 获取会员手机号 和 应用AES密钥管理 能力。
第三步:配置应用
接入获取会员手机号能力前,ISV 需为模板所属第三方应用配置 应用网关、接口内容加密方式 。
配置应用网关-
登录 开放平台控制台 >选择相应的第三方应用并点击进入管理后台 > 开发管理,在 开发信息 > 应用网关 中,点击 设置。
-
输入 ISV 服务器的网关,选择加签方式,点击 确定。应用网关应符合以下要求:
-
支持所设置的加签方式;
-
外网可访问;
-
可接收 post 数据 。
配置接口内容加密方式
-
登录 开放平台控制台 >选择相应的第三方应用并点击进入管理后台 > 设置 > 开发信息 > 在 接口内容加密方式 中,点击 设置。
-
确认提示内容,点击 生成新密钥,即完成配置。
模板开发第一步:接口调用
-
ISV 在小程序端调用 my.getPhoneNumber 接口,再将接口返回的结果通过 my.request 接口传入第三方应用的网关地址。
注意:
-
ISV 代商家获取用户手机号信息时需传入 isvAppID(第三方应用 AppID)。
-
使用 protocols 要求 基础库 版本为 1.22.0 及以上;支付宝客户端版本为 10.1.72 及以上。请使用my.canIUse('getPhoneNumber.object.protocols')进行 兼容处理。
示例代码:
my.canIUse('getPhoneNumber.object.protocols')//兼容性处理my.getPhoneNumber({ protocols:{ // 小程序模板所属的第三方应用APPID isvAppId: '第三方应用APPID' }, success: (res) => { let encryptedData = res.response; // 手机号及签名加密信息 my.request({ url: 'ISV服务端地址', data: encryptedData, }); }, fail: (res) => { console.log(res); console.log('getPhoneNumber_fail'); },});
-
-
ISV 需在服务端解密小程序端返回的手机号信息,更多语言验签及解密示例详情参见 内容加密指引。
注意:
-
服务端解密时,需使用商家小程序 AES 密钥。
-
调试小程序模板时,使用模板 AES 密钥。
示例代码:
public void decryptPhoneNum(){ String response ="";// 前端接口返回的加密信息 //1. 获取解密所需要的参数 Map
openapiResult = JSON.parseObject(response, new TypeReference -
ISV 完成模板开发后,在提审模板前需在本地进行功能调试,完成调试后即可提审发布为服务,供商家订购使用。
模板授权ISV 将小程序模板授权给第三方应用,详情参见 将模板授权给所属第三方应用。
配置 AES 密钥
ISV 需调用 alipay.open.auth.app.aes.set(授权应用aes密钥设置) 接口,以第三方应用自调用(即不传 app_auth_token)方式为小程序模板设置 接口内容加密方式(即 AES 密钥)
示例代码:
//encryptKey填入当前第三方应用的AES密钥,encryptType为"AES" AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","第三方应用APPID","your private_key","json","GBK","alipay_public_key","RSA2","encryptKey","encryptType");AlipayOpenAuthAppAesSetRequest request = new AlipayOpenAuthAppAesSetRequest();request.setBizContent ("{" + //为模板设置就填写小程序模板APPID,为商家设置就填写商家小程序APPID ""merchant_app_id":"20191223601234500"" + "}");AlipayOpenAuthAppAesSetResponse response = alipayClient.execute(request);if (response.isSuccess ()){ System.out.println ( response.getAesKey()); System.out.println ("调用成功");} else { System.out.println ("调用失败");}
注意:
-
配置 AES 密钥场景构造 alipayClient 时,构造方法中需传入 encryptKey 和 encryptType,encryptKey 为当前第三方应用的 AES 密钥,encryptType 为固定值 ?AES。
-
merchant_app_id:应用的 APPID,代模板设置时传入小程序模板 APPID,代商家小程序设置时传入商家小程序 APPID。
ISV 还可调用 alipay.open.auth.app.aes.get(授权应用aes密钥查询)接口(不传 app_auth_token),查询已授权给第三方应用的小程序模板或小程序应用的 AES 密钥。
//encryptKey填入当前第三方应用的AES密钥,encryptType为"AES" AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","第三方应用APPID","your private_key","json","GBK","alipay_public_key","RSA2","encryptKey","encryptType");AlipayOpenAuthAppAesGetRequest request = new AlipayOpenAuthAppAesGetRequest();request.setBizContent ("{" + ""merchant_app_id":"20191223601234500"" + //填写需查询密钥的应用APPID "}" );AlipayOpenAuthAppAesGetResponse response = alipayClient.execute(request);if (response.isSuccess ()){ System.out.println(response.getAesKey()); System.out.println( "调用成功" );} else { System.out.println( "调用失败" );}代模板申请用户信息
代模板申请用户信息后,模板才有权限获取会员手机号。
-
登录 开放平台控制台 >选择相应的第三方应用并点击进入管理后台 > 功能管理 > 获取会员手机号,点击 代申请用户信息。
?
-
选择需要申请用户信息的小程序模板,点击 下一步。
-
选择类目和用户信息,点击 下一步。
-
阅读了解相关规范,并如实详细填写申请信息。确认无误后,点击 提交申请。
-
审核时长约为 2~3 个工作日,审核通过后可获得该信息字段的权限。可登录 支付宝开放平台,进入 控制台 > 第三方应用详情 > 功能管理 > 获取会员手机号,点击 代申请用户信息 ,点击 已提交的申请,进入页面后,查看 状态 列,即可获取当前审核状态。
ISV 需代商家申请用户信息、设置商家小程序 AES 密钥后,再 构建商家小程序版本,否则商家小程序将无法正常运行获取会员手机号能力。
设置商家小程序 AES 密钥的操作,请参见 模板代码实现。
第一步:商家订购商家完成 订购服务 或者 线下授权 后,商家小程序会授权给 ISV 的第三方应用。
第二步:构建商家小程序版本开发者需为商家小程序设置 内容加密方式(即 AES 密钥)再 构建商家小程序版本,否则商家小程序将无法正常运行获取会员手机号能力。
-
AES 密钥配置详情参见上文 模板开发 > 第二步:模板调试 > 配置 AES 密钥。
-
构建商家小程序版本详情参见 构建商家小程序版本。
ISV 代商家小程序申请用户信息前,需调用 alipay.open.mini.category.query(小程序类目树查询)接口查询商家小程序可用类目,再调用 alipay.open.mini.baseinfo.modify(小程序修改基础信息)接口,代商家小程序设置 mini_category_ids(前台类目即小程序主营行业类目)。详情参见上文 模板开发 > 第二步:模板调试 > 配置模板前台类目。
商家小程序后台效果:
第四步:代商家小程序申请用户信息
-
登录 开放平台控制台 >选择相应的第三方应用并点击进入管理后台 > 功能管理 > 获取会员手机号,点击 代申请用户信息。
-
选择需要申请用户信息的商家小程序,后续步骤与上文 ?模板开发 > 第二步:模板调试 > 代模板申请用户信息?一致。
第五步:进行测试
实例化商家小程序 后,在体验版中测试商家小程序是否能成功获取会员手机号,如不能,可参见下方 FAQ。若体验版正常无误,可进行 提审商家小程序。
FAQQ1:一个第三方应用最多只能代多少个授权的商家应用获取手机号?A:ISV 在界面申请时单次最多可代 50 个已授权的应用申请用户信息,其余无数量限制。
Q2:提示 isv.missing-encrypt-key 缺少加密配置的报错?A:需要调用 ?接口给模板小程序设置 AES 密钥。
Q3:代商户获取手机号,获取手机号时,没有传回 sign,什么原因?A:检查小程序后台是否配置接口加签方式、AES 密钥、应用网关。
Q4:模板代申请用户手机号屡次被拒,驳回原因应用名称被释放,如何解决?A:建议提交审核时做修改。或登录 商家中心,点击首页右侧“蚂蚁哥”头像在线咨询。
Q5:代商户申请手机号,有的商户不可以申请,什么原因?A:并不是所有小程序都可以获取用户手机号的,和小程序行业、商家风险等相关。
相关推荐