微信小程序获取用户绑定手机号

在开发小程序中,经常遇到获取用户手机号,所以在此记录一个获取用户手机号的例子,方便日后使用
获取手机号,需要提前获取用户的sessionKey。因为获取到手机是加密的需要后端解密手机号,就需要微信官方提供类来解密,这里后端使用的PHP。

下载地址及下载位置

地址:微信手机号码解密后端文件地址
在这里插入图片描述
下载后选择对应的后端

前端

页面中的按钮需要特殊的加上open-type='getPhoneNumber',完整按钮如下

<button wx:else class="tel_btn" size="mini"  open-type='getPhoneNumber' bindgetphonenumber="getPhoneNumber">获取手机号</button>

从上代码中的bindgetphonenumber="getPhoneNumber"可以看到,是需要一个getPhoneNumber函数,代码如下

var requesurl = "http://xxx.xxxxxxxxxx.com/wxapp/kq.php";
getPhoneNumber (e) {
    var that =this;
    wx.showLoading({
      title: '加载中',
    });
    if(e.detail.errMsg == "getPhoneNumber:ok"){
      // console.log(that.data.sessionKey); //手机号需要sessionKey
      wx.request({
        url: requesurl+'?action=wxtel',
        method: "post",
        header: {'content-type':'application/x-www-form-urlencoded'},
        dataType: 'json',
        responseType: 'text',
        data: {
          encryptedData: e.detail.encryptedData,
          iv: e.detail.iv,
          sessionKey: that.data.sessionKey,
          uid: "",
        },
        success: function (res) {
          console.log(res.data.data.wxteldata.phoneNumber);
          that.setData({
            wxtel:res.data.data.wxteldata.phoneNumber,
            usertel:res.data.data.wxteldata.phoneNumber
          });          
          // console.log(that.data.wxtel);
          wx.hideLoading();
        }
      })
    }else{
      wx.showToast({
        title: '获取失败',
        icon: 'none',
        duration: 2000
      })
      
    }
  },

后端

include_once "wxphp/wxBizDataCrypt.php"; //首先引入从微信官网下载好的文件

if($action === 'wxtel'){
    $encryptedData = $_POST['encryptedData'];
    $iv = $_POST['iv'];
    $sessionKey = $_POST['sessionKey'];
    $wxteldata = "";
    $pc = new WXBizDataCrypt($AppId, $sessionKey); //调用微信官方类
    $errCode = $pc->decryptData($encryptedData, $iv, $wxteldata); //调用微信官方函数
    if ($errCode == 0) {
        echoResult(1, '获取成功', array("wxteldata"=>json_decode($wxteldata,true)), 1);
        // print($wxteldata . "\n");
    } else {
        echoResult(0, '获取失败', array(), 1);
        // print($errCode . "\n");
    }
}

返回结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗松鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值