appid; $secret = $this->secret; // $code = '0b1tFv100Sm91Q1kko0004vZGu0tFv12'; $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code'; list($status,$res) = $this->wx_return($url); if($status) return [true,$res['openid']]; else return [false,$res]; } public function getToken(){ $token_key = $this->appid.'_wx_token'; $token = Redis::get($token_key); if(!empty($token)){ return [true,$token]; } $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->secret; list($status,$res) = $this->wx_return($url); if($status) { Redis::setex($token_key,7100,$res['access_token']); return [true,$res['access_token']]; } else return [false,$res]; } public function getMobile($code){ list($status,$token) = $this->getToken(); $url = 'https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token='.$token; $post = [ 'post'=>json_encode([ 'code' => $code, ]), ]; $post['header'][] = "Content-Type:application/json"; list($status,$res) = $this->wx_return($url,$post); if($status) return [true,$res['phone_info']['phoneNumber']]; else return [false,$res]; } private function wx_return($url,$data=[]){ $res = $this->curlOpen($url,$data); $res = json_decode($res,true); if(isset($res['errcode'])&&$res['errcode'] !== 0) return [false,$res['errmsg']]; return [true,$res]; } }