www.legu.cc/simplewind/Lib/Extend/ThinkSDK/sdk/WeixinSDK.class.php
2021-09-06 11:50:33 +08:00

97 lines
2.8 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class WeixinSDK extends ThinkOauth{
/**
* 获取requestCode的api接口
* @var string
*/
protected $GetRequestCodeURL = 'https://open.weixin.qq.com/connect/qrconnect';
/**
* 获取access_token的api接口
* @var string
*/
protected $GetAccessTokenURL = 'https://api.weixin.qq.com/sns/oauth2/access_token';
/**
* API根路径
* @var string
*/
protected $ApiBase = 'https://api.weixin.qq.com/';
public function getRequestCodeURL(){
$this->config();
$params = array(
'appid' => $this->AppKey,
'redirect_uri'=>$this->Callback,
'response_type'=>'code',
'scope'=>'snsapi_login'
);
return $this->GetRequestCodeURL . '?' . http_build_query($params);
}
/**
* 获取access_token
* @param string $code 上一步请求到的code
*/
public function getAccessToken($code, $extend = null){
$this->config();
$params = array(
'appid' => $this->AppKey,
'secret' => $this->AppSecret,
'grant_type' => $this->GrantType,
'code' => $code,
);
$data = $this->http($this->GetAccessTokenURL, $params, 'POST');
$this->Token = $this->parseToken($data, $extend);
return $this->Token;
}
/**
* 组装接口调用参数 并调用接口
* @param string $api 微博API
* @param string $param 调用API的额外参数
* @param string $method HTTP请求方法 默认为GET
* @return json
*/
public function call($api, $param = '', $method = 'GET', $multi = false){
/* 腾讯微博调用公共参数 */
$params = array(
'access_token' => $this->Token['access_token'],
'openid' => $this->openid(),
);
$vars = $this->param($params, $param);
$data = $this->http($this->url($api), $vars, $method, array(), $multi);
return json_decode($data, true);
}
/**
* 解析access_token方法请求后的返回值
*/
protected function parseToken($result, $extend){
$data = json_decode($result,true);
//parse_str($result, $data);
if($data['access_token'] && $data['expires_in']){
$this->Token = $data;
$data['openid'] = $this->openid();
return $data;
} else
throw new Exception("获取微信 ACCESS_TOKEN 出错:{$result}");
}
/**
* 获取当前授权应用的openid
*/
public function openid(){
$data = $this->Token;
if(!empty($data['openid']))
return $data['openid'];
else
exit('没有获取到微信用户ID');
}
}