code2session($this->code); if($res['code'] != 0) return $res; $session_key = $res['data']['session_key']; $res = $this->decrypted_data($session_key); if($res['code'] != 0){ return $res; } $res['data'] = json_decode($res['data'],true); if(!isset($res['data']['purePhoneNumber'])){ return [ 'code' => 1, 'msg' => '数据解析失败', 'data' => $res['data'] ]; } $mobile = $res['data']['purePhoneNumber'];//不带区号的手机号 $mobile_prefix = $res['data']['countryCode']; $data = [ 'code' => 0, 'msg' => 'ok', 'data' => [ 'mobile' => $mobile, 'mobile_prefix' => $mobile_prefix ] ]; return $data; } /*** * 用户数据解密 */ private function decrypted_data($session_key){ $pc = new WxBizDataCrypt($this->wechat_mp->appId, $session_key); $errCode = $pc->decryptData($this->encrypted_data, $this->iv, $data ); if ($errCode == 0) { return [ 'code' => 0, 'msg' => 'success', 'data' => $data ]; } else { return [ 'code' => 1, 'msg' => $errCode, ]; } } private function code2session($code) { $api = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->wechat_mp->appId}&secret={$this->wechat_mp->appSecret}&js_code={$code}&grant_type=authorization_code"; $this->wechat_mp->curl->get($api); if($this->wechat_mp->curl->error_code != 0){ return [ 'code' => 1, 'msg' => "err_code:{$this->wechat_mp->curl->error_code}err_msg:{$this->wechat_mp->curl->error_msg}" ]; } $resp = $this->wechat_mp->curl->response; $res = json_decode($resp, true); if(!isset($res['openid'])){ return [ 'code' => 1, 'msg' => isset($res['errmsg']) ? $res['errmsg'] : 'error' ]; } return [ 'code' => 0, 'msg' => 'ok', 'data' => $res ]; } }