50 lines
1.6 KiB
PHP
50 lines
1.6 KiB
PHP
<?php
|
||
/**
|
||
* @copyright (C)2016-2099 Hnaoyun Inc.
|
||
* @author XingMeng
|
||
* @email hnxsh@foxmail.com
|
||
* @date 2019年05月27日
|
||
* 微信网页授权
|
||
*/
|
||
namespace core\weixin;
|
||
|
||
use core\basic\Config;
|
||
|
||
class WxAccessToken
|
||
{
|
||
|
||
// 获取全局access_token
|
||
public static function get()
|
||
{
|
||
if (! self::check()) {
|
||
$appid = Config::get('weixin_appid');
|
||
$secret = Config::get('weixin_secret');
|
||
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret;
|
||
$result = json_decode(get_url($url));
|
||
if (isset($result->errcode) && $result->errcode) {
|
||
error('获取微信AccessToken发生错误:' . $result->errmsg . '(' . $result->errcode . ')');
|
||
return false;
|
||
} else {
|
||
$data['weixin_access_token'] = $result->access_token;
|
||
$data['weixin_expires_in'] = $result->expires_in;
|
||
$data['weixin_timestamp'] = time();
|
||
Config::set(sha1('weixin_access_token'), $data); // 缓存数据
|
||
return $result->access_token;
|
||
}
|
||
} else {
|
||
return Config::get('weixin_access_token');
|
||
}
|
||
}
|
||
|
||
// 检查access_token是否可用
|
||
private static function check()
|
||
{
|
||
Config::assign(RUN_PATH . '/config/' . sha1('weixin_access_token') . '.php');
|
||
if (Config::get('weixin_access_token') && time() - Config::get('weixin_timestamp') < Config::get('weixin_expires_in')) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
}
|