Commit 4f52db95 4f52db95e97eaf8947e776b4cca0374bf1f1a35b by lemon

下载授权书归档

1 parent 462a1cec
......@@ -13,6 +13,13 @@ use Illuminate\Support\Facades\Log;
class BaseController extends Controller
{
/**
* @var string[]
*/
protected $filterTmeBrandIdUri = [
'queryAuthResources'
];
/**
* 基础变量
* @var string
*/
......@@ -54,24 +61,30 @@ class BaseController extends Controller
/**
* 重组请求数据,返回headers
* @return array
* @param array $params
* @return mixed
*/
private function parseHeaders(array $params)
{
if (!$accessToken = Cache::get(CacheKeyTools::tmeAccessToken())) {
$accessToken = $this->getToken();
}
$heaers['appId'] = $this->appId;
$heaers['accessToken'] = $accessToken;
$heaers['timestamp'] = (string)date('YmdHis');
$heaers['traceId'] = 'hk_'.(string)time();
$heaers['signMethod'] = 'md5';
$heaers['sign'] = $this->getSign($heaers,$params);
return $heaers;
if (!$accessToken = Cache::get(CacheKeyTools::tmeAccessToken())) {$accessToken = $this->getToken();}
$headers['appId'] = $this->appId;
$headers['accessToken'] = $accessToken;
$headers['timestamp'] = (string)date('YmdHis');
$headers['traceId'] = 'hk_'.(string)time();
$headers['signMethod'] = 'md5';
$headers['sign'] = $this->getSign($headers, $params);
return $headers;
}
/**
* 请求接口
* @param string $uri
* @param array $reqData
* @param string $method
* @param bool $isLocal
* @return array
* @throws \GuzzleHttp\Exception\GuzzleException
*/
protected function doApi(string $uri, array $reqData = [], string $method = 'POST', bool $isLocal = false)
......@@ -85,29 +98,18 @@ class BaseController extends Controller
} else {
$params = $reqData;
}
$params['tmeBrandId'] = $params['tmeBrandId'] ?? 8888888;
Log::channel('api')->info(__METHOD__, ['token'=>$token, 'url'=>$url, 'params'=>$params]);
$headers = $this->parseHeaders($params);
switch (strtoupper($method)) {
case 'GET':
/*
$data = [
"businessId"=>194159,
"queryType"=>"album",
"brandId"=>7389
];
*/
if (!$this->filterTmeBrandId($uri)) {
$params['tmeBrandId'] = $params['tmeBrandId'] ?? 8888888;
}
$headers = $this->parseHeaders($params);
//Log::channel('api')->info(__METHOD__.'get请求参数', ['token'=>$token, 'url'=>$url, 'data'=>$data]);
$response = $this->client->request('GET', $url, ['query' => [
"businessId"=>(int)$params["businessId"],
"queryType"=>$params["queryType"],
"brandId"=>(int)$params["brandId"]
],'headers'=>$headers]);
Log::channel('api')->info(__METHOD__, ['token'=>$token, 'url'=>$url, 'params'=>$params]);
switch (strtoupper($method)) {
case 'GET':
$response = $this->client->request('GET', $url, ['query' => $params, 'headers'=>$headers]);
break;
case 'POST':
default:
......@@ -117,33 +119,48 @@ class BaseController extends Controller
$respArr = json_decode($response->getBody()->getContents(), true);
Log::channel('api')->info(__METHOD__, ['token'=>$token,'respArr'=>$respArr]);
if ($respArr['code'] == '0'){
return [(int)$respArr['code'],$respArr['message'] ?? '操作失败',$respArr['data'] ?? []];
} else {
return [(int)$respArr['code'],$respArr['message'] ?? '操作失败',[$respArr['traceId']]];
}
} catch (\Exception $e) {
Log::channel('api')->error(__METHOD__, ['token'=>$token, 'msg'=>$e->getMessage()]);
return [-1,'接口请求失败',[]];
}
}
/**
* 过滤tmeBrandId字段
* @param $uri
* @return bool
*/
protected function filterTmeBrandId($uri): bool
{
foreach ($this->filterTmeBrandIdUri as $item) {
if (strpos($uri, $item) !== false) {
return true;
}
}
return false;
}
/**
* 获取签名和去空的参数
* @param array $array
* @param $headers
* @param $params
* @return string
*/
protected function getSign($heaers,$params)
protected function getSign($headers, $params)
{
$common_params = array_merge($params,$heaers);
unset($common_params['tmeBrandId']);
$common_params = array_merge($params, $headers);
//排序
ksort($common_params);
$params = '';
//print_r($common_params);
foreach ($common_params as $k=>$v)
{
if ('' === $v || null === $v || [] === $v) {
......@@ -156,8 +173,6 @@ class BaseController extends Controller
}
}
// Log::channel('api')->info($params);
return strtoupper(md5($this->appSecret . $params . $this->appSecret));
}
......