| 123456789101112131415161718192021222324252627282930313233343536373839 |
- <?php
- namespace addons\WechatVideoShop\common\helper;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\model\basic\AccessTokenModel;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\request\basic\AccessTokenRequest;
- use GuzzleHttp\Exception\GuzzleException;
- use yii\helpers\Json;
- class WechatAccessTokenHelper
- {
- /**
- * @param array $config
- * @return mixed
- * @throws GuzzleException
- * @throws \Exception
- */
- public static function getAccessToken(array $config)
- {
- $key = "wechat:video:shop:access_token:{$config['wechat_appid']}";
- $access_token = \Yii::$app->redis->get($key);
- if (empty($access_token)) {
- $accessTokenModel = new AccessTokenModel();
- $accessTokenModel->grant_type = 'client_credential';
- $accessTokenModel->appid = $config['wechat_appid'];
- $accessTokenModel->secret = $config['wechat_secret'];
- $resp = WechatRequestHelper::execute(new AccessTokenRequest($config), $accessTokenModel, false);
- $ret = $resp->toArray();
- if (empty($ret['access_token'])) throw new \Exception("access token为空");
- $access_token = $ret['access_token'];
- // 每个小时一次
- \Yii::error("WechatAccessTokenHelper 微信视频号小店access token-> " . Json::encode($ret));
- \Yii::$app->redis->setex($key, !empty($ret['expires_in']) ? intval($ret['expires_in']) - 1000 : 3600, $access_token);
- }
- return $access_token;
- }
- }
|