1. 修改app/controller/admin/system/serve/Export.php中的 getExportTemp 方法,如下
public function getExportTemp(CrmebServeServices $services){
$com = $this->request->param('com');
if (!$com) return app('json')->fail('請輸入快遞公司編號');
$siid = merchantConfig($this->request->merId(),'mer_config_siid');
$func = $siid ? 'temp' : 'tempV2';
return app('json')->success($services->express()->{$func}($com));
}
通過商戶siid判斷是走新的電子面單方法還是舊的方法
2. 修改crmeb/services/express/storage/Express.php的 temp 方法,如下
public function temp(string $com)
{
$param = ['com' => $com];
return $this->accessToken->httpRequest(self::EXPRESS_TEMP, $param,'post',true);
}
去掉版本參數 ['version:v1.1']
3. crmeb/services/express/storage/Express.php中添加 tempV2 方法和 EXPRESS_TEMP_V2 常量,如下
const EXPRESS_TEMP_V2 = 'expr_dump/temp';
public function tempV2(string $com)
{
$param = ['com' => $com];
return $this->accessToken->httpRequest(self::EXPRESS_TEMP_V2, $param,'get',true, ['version:v1.1']);
}
新增一個常量和方法,沒啥好說的
4. 修改crmeb/services/HttpService.php中的 request 方法,添加處理get請求參數邏輯,如下
public static function request($url, $method = 'get', $data = array(), $header = false, $timeout = 15)
{
self::$status = null;
self::$curlError = null;
self::$headerStr = null;
$method = strtoupper($method);
if ($method == 'GET' && !empty($data)) $url .= "?". http_build_query($data);
$curl = curl_init($url);
//請求方式
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
//post請求
if ($method == 'POST') curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//超時時間
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
//設置header頭
if ($header !== false) curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
//返回抓取數據
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//輸出header頭信息
curl_setopt($curl, CURLOPT_HEADER, true);
//TRUE 時追蹤句柄的請求字符串,從 PHP 5.1.3 開始可用。這個很關鍵,就是允許你查看請求header
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
//https請求
if (1 == strpos("$" . $url, "https://")) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
self::$curlError = curl_error($curl);
list($content, $status) = [curl_exec($curl), curl_getinfo($curl), curl_close($curl)];
self::$status = $status;
self::$headerStr = trim(substr($content, 0, $status['header_size']));
$content = trim(substr($content, $status['header_size']));
return (intval($status["http_code"]) === 200) ? $content : false;
}
將 $method = strtoupper($method); 代碼前移,添加get請求是處理參數的邏輯
5. 修改crmeb/services/express/storage/Express.php 中 express方法
return $this->accessToken->httpRequest(self::EXPRESS_LIST, $param,'get');