微信小程序部分
getPhoneNumber: function (e) {
if (e.detail.errMsg != 'getPhoneNumber:ok') {
wx.showModal({
showCancel: false,
title: '授权失败',
content: '你将不能完成登录'
})
} else {
wx.login({
success: function (res) {
if (res.errMsg != 'login:ok') {
wx.showModal({
showCancel: false,
title: '登录失败',
content: '你将不能完成登录'
})
} else {
//console.log(res)
//console.log(e.detail)
wx.request({
url: 'https://www.aaa.com/demo.php',
method: 'POST',
data: {
'code': res.code,
'iv': e.detail.iv,
'encryptedData': e.detail.encryptedData
},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function (res) {
if (!(res.errMsg == 'request:ok' && res.data.errMsg == 0)) {
wx.showModal({
showCancel: false,
title: '获取手机号失败',
content: res.errMsg+':'+res.data.errMsg
})
} else {
//获取手机号成功
console.log(res)
}
}
})
}
}
})
}
},
PHP部分
include_once "wxBizDataCrypt.php";
$appid = 'xxxxxxxxxxxxxxxxxxxxx'; // 小程序APPID
$secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; // 小程序secret
$code=$_POST['code'];
$iv=$_POST['iv'];
$encryptedData=$_POST['encryptedData'];
if(strlen($code)>2 && strlen($iv)>2 && strlen($encryptedData)>2)
{
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' . $appid . '&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 5000);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
$so=json_decode($res,true);
//print_r($so['session_key']);
//print_r($so['openid']);
$sessionKey =$so['session_key'];
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
if ($errCode == 0) {
$data=json_decode($data,true);
$data['errMsg']=$errCode;
print(json_encode($data));
} else {
print("{errMsg:".$errCode."}");
}
die();
}