| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | <?phpnamespace Cas\Module;use KIF\Core\Config;use KIF\String\String;use KIF\Curl;use KIF\Cache\Memcached;use KIF\Data\ResultWrapper;/** *  * 刷新 access_token * @author lishumingoo@gmail.com */class RefreshAccessToken {		/**	 * 获取access token接口地址	 * @var string	 */	private $requestAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token";		/**	 * 刷新access_token的key	 * @var string	 */	const ACCESS_TOKEN_KEY = 'jyD#HNCB%2';		/**	 * 刷新JsApiTicket的key	 * @var String	 */	const JSAPI_TICKET_KEY = 'yD#sdfasd#asdfa%2';			public function run() {		$wechat_cfg = Config::getInstance()->get('wechat_cfg');		if (!$wechat_cfg) {			return ResultWrapper::fail('获取微信开发者ID失败');		}				$appid = $wechat_cfg['appId'];		$secret = $wechat_cfg['appSecret'];		$args = array(				'grant_type'	=> 'client_credential',				'appid'		=> $appid,				'secret'	=> $secret,		);				$url = String::jointUrl($this->requestAccessTokenUrl, $args);				$objCurl = new Curl($url);		$json = $objCurl->get();		if (!$json) {			return ResultWrapper::fail('接口未返回数据');		}				$result = json_decode($json, true);		if ($result['errcode']) {			return ResultWrapper::fail("原因:{$json}");		}				$access_token = $result['access_token'];		$expires = $result['expires_in'];				$objMemcached = new Memcached();		$setResult = $objMemcached->set(self::ACCESS_TOKEN_KEY, $access_token);		if (!$setResult) {			return ResultWrapper::fail("将access_token存入memcache失败");		}				# 新增: 获取微信 JsApiTicket 存入 Memcached		$this->getJsApiTicket($access_token);				return ResultWrapper::success($access_token);	}			/**	 * 获取微信 JsApiTicket 存入 Memcached	 */	public function getJsApiTicket($accessToken){		$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";		$res = json_decode($this->httpGet($url));		$jsApiTicket = $res->ticket;		$objMemcached = new Memcached();		$objMemcached->set(self::JSAPI_TICKET_KEY, $jsApiTicket);		return $jsApiTicket;	}			/**	 * curl 请求	 */	private function httpGet($url) {		$curl = curl_init();		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);		curl_setopt($curl, CURLOPT_TIMEOUT, 500);		curl_setopt($curl, CURLOPT_URL, $url);		$res = curl_exec($curl);		curl_close($curl);		return $res;	}			}
 |