初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\library\app\physical\express\adapter;
|
||||
|
||||
use fast\Http;
|
||||
|
||||
class Kdniao
|
||||
{
|
||||
const REQURL = "https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";
|
||||
const SUBURL = "https://api.kdniao.com/api/dist";
|
||||
const EORDER = "https://api.kdniao.com/api/EOrderService";
|
||||
|
||||
protected $sender = [];
|
||||
|
||||
protected $config = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->config = $this->getConfig();
|
||||
}
|
||||
|
||||
public function search($data)
|
||||
{
|
||||
$requestParams = $this->getRequestParams($data);
|
||||
$requestData = $this->getRequestData($requestParams);
|
||||
$requestData['RequestType'] = $this->config['type'] == 'free' ? '1002' : '8001';
|
||||
|
||||
$result = Http::post(self::REQURL, $requestData);
|
||||
|
||||
$result = $this->getResponse($result, '没有物流信息');
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function subscribe($data)
|
||||
{
|
||||
$requestParams = $this->getRequestParams($data);
|
||||
$requestData = $this->getRequestData($requestParams);
|
||||
$requestData['RequestType'] = $this->config['type'] == 'free' ? '1008' : '8008';
|
||||
|
||||
$result = Http::post(self::SUBURL, $requestData);
|
||||
|
||||
$result = $this->getResponse($result, '订阅失败');
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function cancel($data)
|
||||
{
|
||||
$requestData = $data;
|
||||
|
||||
$requestData = $this->getRequestData($data);
|
||||
$requestData['RequestType'] = '1147';
|
||||
|
||||
$result = Http::post(self::EORDER, $requestData);
|
||||
|
||||
$result = $this->getResponse($result, '电子面单取消失败');
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function eOrder($data)
|
||||
{
|
||||
$requestData = $this->getRequestData($data);
|
||||
$requestData['RequestType'] = '1007';
|
||||
|
||||
$result = Http::post(self::EORDER, $requestData);
|
||||
|
||||
$result = $this->getResponse($result, '电子面单下单失败');
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function pushResult($success, $reason)
|
||||
{
|
||||
$result = [
|
||||
"EBusinessID" => $this->config['ebusiness_id'],
|
||||
"UpdateTime" => date('Y-m-d H:i:s'),
|
||||
"Success" => $success,
|
||||
'Reason' => $reason
|
||||
];
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function getRequestData($requestParams)
|
||||
{
|
||||
$requestParams = is_array($requestParams) ? json_encode($requestParams, JSON_UNESCAPED_UNICODE) : $requestParams;
|
||||
|
||||
$requestData = [
|
||||
'EBusinessID' => $this->config['ebusiness_id'],
|
||||
'RequestData' => urlencode($requestParams),
|
||||
'DataType' => '2',
|
||||
];
|
||||
$requestData['DataSign'] = $this->encrypt($requestParams, $this->config['app_key']);
|
||||
|
||||
return $requestData;
|
||||
}
|
||||
|
||||
private function getRequestParams($data = [])
|
||||
{
|
||||
$params = [
|
||||
'ShipperCode' => $data['express_code'],
|
||||
'LogisticCode' => $data['express_no'],
|
||||
];
|
||||
|
||||
if ($data['express_code'] == 'JD') {
|
||||
$params['CustomerName'] = $this->config['jd_code'] ?? '';
|
||||
} else {
|
||||
$params['CustomerName'] = $data['mobile'] ?? '';
|
||||
}
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
private function getResponse($result, $msg = '')
|
||||
{
|
||||
$result = json_decode($result, true);
|
||||
if (!$result['Success']) {
|
||||
throw new \Exception($result['Reason'] ?: $msg);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function encrypt($data, $app_key)
|
||||
{
|
||||
return urlencode(base64_encode(md5($data . $app_key)));
|
||||
}
|
||||
|
||||
protected function getConfig()
|
||||
{
|
||||
return [
|
||||
'type' => 'free',
|
||||
'ebusiness_id' => '1914053',
|
||||
'app_key' => 'f583d954-1709-4e34-9ac0-73f5079e2452',
|
||||
'jd_code' => ''
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user