| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Service\Wx;
- use Illuminate\Support\Facades\Redis;
- class WxService extends Service
- {
- public $appid = '';
- public $secret = '';
- public function __construct()
- {
- $this->appid = config("wx_msg.appid");
- $this->secret = config("wx_msg.appSecret");
- }
- 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();
- if(! $status) return [false, $token];
- $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];
- }
- }
|