本期主题:三方场景如何获取用户手机号
前言: 相关专用术语:商户、ISV、小程序应用、三方应用、小程序模板、PID、APPID、app_auth_token、AES,参考 专用术语解释。
在三方场景下获取用户手机号经常遇到这样困惑:自研小程序获取手机号需要配置AES秘钥、接口加签、应用网关、申请手机号敏感信息,但是三方应用下如何代商户设置这些呢,总不能让商户去设置吧。其实在三方应用场景下并不需要商户或者代商户配置接口加签方式和应用网关,只需要帮商户申请手机号敏感信息和设置AES秘钥就可以了(当然这些都不需要商户来配置)。
回顾: 因为三方场景下代商户获取手机号在自研小程序基础上进行的,我们先回顾下自研小程序如何获取用户手机号的。
创建小程序并设置接口加签方式 设置AES秘钥和应用网关 挂载获取会员手机号功能包并进行用户信息申请 小程序前端使用button按钮唤起用户手机号授权 服务端进行解密获取用户手机号
三方场景获取用户手机号: 1、在开发小程序模板时,集成获取用户手机号功能,由于小程序模板后台不能配置AES秘钥,所以需要只能通过接口的方式设置;商户小程序也建议使用接口方式配置AES秘钥,具体参考下方 : 5 .获取商户小程序/小程序模板AES秘钥 。
2、本流程对商家/小程序模板都适用。
3、小程序模板和商家小程序一样,都可以授权给三方应用,实现三方应用带调用,详见【小程序模板授权】。
下面介绍三方场景下小程序模板和商户小程序获取手机号流程:
创建三方应用并配置接口加签方式、AES秘钥、挂载获取用户手机号功能包 创建小程序模板(三方授权模式忽略此步骤) 商户小程序和小程序模板授权给三方应用(此外商户小程序除使用授权链接授权外,三方模板模式还可以使用订购服务进行授权) 代商户小程序/小程序模板进行用户信息申请 获取商户小程序/小程序模板AES秘钥 商户小程序/小程序模板上使用button唤起用户手机号授权 注: 三方模式下my.getPhoneNumber必须传入protocols-isvAppId参数 前端必须在用户点击button进行授权后的onGetAuthorize回调中进行调用my.getPhoneNumber否则会报无效的授权关系 <button open-type="getAuthorize" onGetAuthorize="onGetAuthorize" onError="onAuthError" scope=\'phoneNumber\'> 授权手机号n</button> onGetAuthorize: (res) => n my.getPhoneNumber( protocols: // 小程序模板/商户小程序所属的三方应用appId isvAppId: \'2017122xxxxxxxxxxx\' n ,success: (res) => let encryptedData = res.response; //使用my.request传递密文到服务器端 my.request( url: \'你的后端服务端\',//发送给服务端,让服务端对加密数据进行解密 data: encryptedData, ); console.log("getPhoneNumber_success",res); ,fail: (res) => console.log(res); console.log(\'getPhoneNumber_fail\'); ,n );nn , 服务端接收小程序端密文进行解密
获取用户手机号常见问题: my.getPhoneNumber 解密的时候报“无效的授权关系” 小程序使用 my.getPhoneNumber 解密后返回的手机号没有带国籍码如+86,有海外手机号时该怎么区分? 小程序可以同时获取手机号和会员基础信息吗 调用 my.getPhoneNumber,报错“ISV权限不足”