12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- namespace App\Services;
- use App\Log;
- use App\RedisModel;
- class ZZYService
- {
- const API_KEY = '108198c9419';
- const API_SECRET = 'eb5fafdc146e3cd2327ebc517b638336';
- const API_BASE_URL = 'https://openapi.818tu.com/';
- const CHANNEL_LIST = 'partners/channel/channels';
- const ORDER_LIST = 'partners/channel/orders';
- const ACCESS_TOKEN_GET = 'partners/channel/mp/access_token';
- const MEMBER_LIST_GET = 'partners/channel/members/list';
- const ACCESS_TOKEN_RDS_KEY = 'NOVEL:ZzyAccessToken_';
- const PLATFORM_ID = 1;
- /**
- * 计算签名
- * @param $params array url参数
- * @return string 签名
- * */
- public static function sign($params)
- {
- ksort($params);
- $segments = [];
- foreach ($params as $key => $val) {
- $segments[] = "$key=$val";
- }
- return md5(self::API_SECRET . implode('&', $segments));
- }
- /*
- * 获取AccessToken
- * */
- public static function getAccessToken($channelId)
- {
- # 先从Redis获取,为空则调用掌中云接口
- $accessToken = RedisModel::get(self::ACCESS_TOKEN_RDS_KEY . $channelId);
- if(empty($accessToken)) {
- $param = [
- 'channel_id' => $channelId,
- 'key' => ZZYService::API_KEY,
- ];
- # 获取签名
- $param['sign'] = self::sign($param);
- $requestUri = self::API_BASE_URL . self::ACCESS_TOKEN_GET . '?' . http_build_query($param);
- $response = HttpService::httpGet($requestUri);
- if($response === false)
- Log::logError('掌中云公众账号密钥获取失败' . $requestUri, $param, 'AccessTokenZZY');
- $responseData = json_decode($response, true);
- if(isset($responseData['data']['token'])) {
- # 存入redis
- $accessToken = $responseData['data']['token'];
- RedisModel::set(self::ACCESS_TOKEN_RDS_KEY . $channelId, $accessToken);
- RedisModel::expire(self::ACCESS_TOKEN_RDS_KEY . $channelId, ($responseData['data']['expires_in']-10) >0 ? $responseData['data']['expires_in']-10 : $responseData['data']['expires_in']);
- } else {
- Log::logError('AccessToken请求响应异常,渠道编号:'.$channelId, $responseData, 'AccessTokenZZY');
- }
- }
- return $accessToken;
- }
- }
|