<?php
require_once("../log4php.php");
$logger = init_log("accessToken");
class AcessToken
{
private $appid;
private $secret;
private $url = "https://api.weixin.qq.com/cgi-bin/token";
private $cache_key = "wx_access_token";
private function check_token_exist()
{
global $cache;
if ($cache->check_cache($this->cache_key)) {
return true;
}
return false;
}
/从数据库中/获取accesstoken,如果过期或者不存在则重新获取
public function get_token()
{
global $cache;
if ($this->check_token_exist()) {
return $cache->getCacheValue($this->cache_key);
} else {
return $this->set_token();
}
}
//accesstoken每2个小时过期一次,需要保存,每1.5小时自动获取一次并保存
public function set_token()
{
global $cache, $logger;
$grant_type = "client_credential";
$appid = $this->appid;
$secret = $this->secret;
$this->url .= "?grant_type=" . $grant_type . "&appid=" . $appid . "&secret=" . $secret;
$data = $this->doget($this->url);
$token = json_decode($data, true);
if ($token && empty($token['errcode']) && !isset($token['errcode'])) {
$cache->setCache($this->cache_key, $token['access_token'], 7200);
}
return $token;
}
//请求微信公众号
public function doget($url)
{
global $logger;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
if (!$data) {
$logger->error("请求失败失败", curl_error($ch));
}
curl_close($ch);
return $data;
}
//构造
public function __construct($appid, $secret)
{
$this->appid = $appid;
$this->secret = $secret;
}
}
样例下载地址:https://download.youkuaiyun.com/download/jsrdweiting/13685098