将微信提供的解密包下载放入extend目录中
修改:ErrorCode.php文件,添加命名空间
修改WXBizDataCrypt.php
在控制器中引入:
后台:
public function getSee(Request $request) { $code = $request::param('code'); $encryptedData = $request::param('encryptedData'); $iv = $request::param('iv'); // 小程序ID 注意开发者工具也要使用该id $appid = 'wx46f1608e8baf03d5'; // 小程序密码 $secret = 'b1154a72a24edc956ada6ce2a681d546'; $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code'; $res = file_get_contents($url); $res = json_decode($res,true); $ret =$this->decryUser($iv,$res['session_key'],$encryptedData); return json($ret); }
private function decryUser($iv,$sessionKey,$encryptedData) { $data = null; $appid = 'wx46f1608e8baf03d5'; $pc = new WXBizDataCrypt($appid, $sessionKey); $errCode = $pc->decryptData($encryptedData, $iv, $data ); return $data; }
小程序:
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
wx.login({ success:function(res){ var code = res.code; if(e.detail.errMsg == "getPhoneNumber:ok"){ wx.request({ url:'xxx/index/index/getSee', data:{ encryptedData: e.detail.encryptedData, iv: e.detail.iv, code:code }, method:"post", success:function(res){ console.log(res.data) let data = JSON.parse(res.data) console.log(data.phoneNumber) that.setData({ phone:data.phoneNumber }) that.requestPostData() } }) } } })
参考:
https://www.jb51.net/article/229956.htm
https://www.cnblogs.com/yehuisir/p/13729836.html