1.需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。
2.返回参数是加密数据,需要通过加密数据解密算法来解密。下面上代码
js:
getPhoneNumber:function(e){
var that=this;
wx.showLoading({
title: '加载中',
})
wx.request({
url: util.baseurl +'User/getWxMobile',
data:{
session_key: wx.getStorageSync('sessionKey'),//用微信登录凭证code换取
encryptedData: e.detail.encryptedData,
iv: e.detail.iv
},
method:'post',
success:function(rel){
console.log('返回结果',rel);
}
})
}
后台php代码:
//获取微信绑定的手机号
public function getWxMobile(){
$sessionKey=input('session_key');
$encryptedData=input('encryptedData');
$iv=input('iv');
$aesKey = base64_decode($sessionKey);
$aesIV = base64_decode($iv);
$aesCipher = base64_decode($encryptedData);
$result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$result = json_decode($result,true);
return json($result);
}