支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)

支付宝小程序获取手机号码跟微信小程序的不一样,所以获取的流程也有很多的不同,所以第一步并不是直接写代码。

流程如下:

一、登录支付宝小程序开发管理平台 ->开发中心->小程序应用->选择你的小程序(点击查看)->设置->开发设置

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第1张图片

 上图中的接口加签方式、IP白名单、应用网关、接口内容加密方式都需要设置。

二、接口加签方式,点击后需要授权短信验证码验证身份,然后如下图:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第2张图片

这里我模拟使用官方提供的支付宝密钥生成器生成密钥就行,步骤如下:

1.下载安装密钥生成器:传送门

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第3张图片

 2.下载后直接傻瓜式安装就行,安装完毕后运行,进行如下设置:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第4张图片

这里我们使用的是默认的配置就行,直接点击生成密钥,等几秒钟密钥生成后,点击上传公钥。

我们的服务器会需要csr文件,直接点击获取csr文件获取,然后点击打开文件位置,将csr文件保存到服务器上面(后端验证签名和解密需要)。

这时我们就得到了密钥了,我们复制应用公钥回到上一步的接口加签方式页面。

三、将公钥粘贴到表单,然后点击保存设置

设置成功如下:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第5张图片

四、接下来我们需要配置IP白名单

点击设置->点击添加规则->选择配置全量接口

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第6张图片

点击下一步->添加IP地址:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第7张图片

可添加多个IP地址,使用英文逗号隔开->确认添加->二次确认

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第8张图片

配置ip白名单完成,接着进行下一步配置

五、配置应用网关

点击设置:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第9张图片

这里的网关可以使用域名,同样可以添加多个网关,使用英文逗号隔开,点击确定就OK了

六、设置接口内容加密方式

点击设置:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第10张图片

直接点击生成就行了。

全部设置后:

支付宝小程序获取手机号码的的详细流程。(配置开发设置,具体流程)_第11张图片

七、完成敏感信息申请

开发管理 -> 功能列表 -> 添加功能  -> 获取会员手机号 -> 用户信息申请

 

八、小程序获取手机号码

获取支付宝用户绑定的手机号。因为需要用户主动触发才能发起获取手机号,所以该功能不由 API 直接调用,需用 button 组件 的点击来触发。

///axml


  
  
    
      授权信息
      小程序需要您的授权才能获得更好的服务哦。
    
    
      
    
  



///js
getUserPhone(e){
    let that = this;
    my.getPhoneNumber({
      success: (res) => {
        let encryptedData = res.response;
        that.setData({
          ['userInfo.phone']: "18290261572",
          alertPhone: false
        })
         my.request({
             url: '你的后端服务端',
             data: encryptedData,
                success: function(result){

             }
         });
      },
      fail: (res) => {
          console.log("获取失败",res);
      },
    });
  },

九、java后端解密数据

String response = "小程序前端提交的";

//1. 获取验签和解密所需要的参数
Map openapiResult = JSON.parseObject(response,
            new TypeReference>() {
            }, Feature.OrderedField);
String signType = "RSA2";
String charset = "UTF-8";
String encryptType = "AES";
String sign = openapiResult.get("sign");
String content = openapiResult.get("response");

//如果密文的
boolean isDataEncrypted = !content.startsWith("{");
boolean signCheckPass = false;

//2. 验签
String signContent = content;
String signVeriKey = "你的小程序对应的支付宝公钥(为扩展考虑建议用appId+signType做密钥存储隔离)";
String decryptKey = "你的小程序对应的加解密密钥(为扩展考虑建议用appId+encryptType做密钥存储隔离)"
;
//如果是加密的报文则需要在密文的前后添加双引号
if (isDataEncrypted) {
    signContent = "\"" + signContent + "\"";
}
try {
    signCheckPass = AlipaySignature.rsaCheck(signContent, sign, signVeriKey, charset, signType);
} catch (AlipayApiException e) {
    //验签异常, 日志
}
if(!signCheckPass) {
    //验签不通过(异常或者报文被篡改),终止流程(不需要做解密)
    throw new Exception("验签失败");
}

//3. 解密
String plainData = null;
if (isDataEncrypted) {
    try {
        AlipayEncrypt.decryptContent(content, encryptType, decryptKey, charset);
    } catch (AlipayApiException e) {
        //解密异常, 记录日志
       throw new Exception("解密异常");
    }
} else {
    plainData = content;
}

 

你可能感兴趣的:(支付宝小程序)