| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | <?phpnamespace App\Service\Wx;use Illuminate\Support\Facades\Redis;class WxService extends Service{//    public $appid = 'wx4e1324c600df37a6';//    public $secret = '72f8c912d462b0f4ff46cbedac0c80bf';    public $appid = 'wx4e1324c600df37a6';    public $secret = 'cec65770bf168a57dc8e5a012d4c9537';    public function getOpenid($code){        $appid = $this->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];    }}
 |