fix: 修改小程序订单参数问题

This commit is contained in:
Gosowong 2023-05-16 15:27:31 +08:00
parent 315569d6fd
commit de1f373004
2 changed files with 78 additions and 8 deletions

View File

@ -12,6 +12,7 @@ class BaseOrder extends AbstractAPI
{
public $config;
public $accessToken;
const BASE_API = 'https://api.weixin.qq.com/';
@ -23,6 +24,7 @@ class BaseOrder extends AbstractAPI
{
parent::__construct($accessToken);
$this->config = $config;
$this->accessToken = $accessToken;
}
private function resultHandle(Collection $result)
@ -38,6 +40,73 @@ class BaseOrder extends AbstractAPI
}
}
/**
* request.
*
* @param string $endpoint
* @param string $method
* @param array $options
* @param bool $returnResponse
*/
public function request(string $method, string $endpoint, array $options = [])
{
if (isset($options['json'])) {
$body = json_encode($options['json']);
$options['body'] = $body;
unset($options['json']);
}
$headers = [
'Content-Type' => 'text/plain',
'User-Agent' => 'curl',
'Accept' => 'text/plain',
];
$options['headers'] = array_merge($headers, ($options['headers'] ?? []));
return $this->_doRequestCurl($method, self::BASE_API . $endpoint, $options);
}
/**
* @param $method
* @param $location
* @param array $options
* @return mixed
*/
private function _doRequestCurl($method, $location, $options = [])
{
//拼接$accessToken
$location .= $this->accessToken->getToken();
var_dump($location);
$curl = curl_init();
// POST数据设置
if (strtolower($method) === 'post') {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $options['data'] ?? $options['body'] ?? '');
}
// CURL头信息设置
if (!empty($options['headers'])) {
$headers = [];
foreach ($options['headers'] as $k => $v) {
$headers[] = "$k: $v";
}
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
curl_setopt($curl, CURLOPT_URL, $location);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$content = curl_exec($curl);
$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
curl_close($curl);
return json_decode(substr($content, $headerSize), true);
}
/**
* 发货
* @param $params
@ -49,8 +118,7 @@ class BaseOrder extends AbstractAPI
*/
public function shipping($params)
{
return $this->resultHandle($this->parseJSON('POST', [self::BASE_API . self::ORDER . 'upload_shipping_info', json_encode($params)]));
return $this->resultHandle($this->parseJSON('POST', [self::BASE_API . self::ORDER . 'upload_shipping_info', json_encode($params, JSON_UNESCAPED_UNICODE)]));
}
/**
@ -126,6 +194,6 @@ class BaseOrder extends AbstractAPI
*/
public function getDeliveryList()
{
return $this->resultHandle($this->parseJSON('POST', [self::BASE_API . self::EXPRESS . 'get_delivery_list']));
return $this->resultHandle($this->parseJSON('POST', [self::BASE_API . self::EXPRESS . 'get_delivery_list', "{}"]));
}
}

View File

@ -70,9 +70,11 @@ class OrderClient extends BaseOrder
*/
public function shippingByTradeNo(string $out_trade_no, int $logistics_type, array $shipping_list, string $payer_openid, int $delivery_mode = 1, bool $is_all_delivered = true)
{
if (!$this->checkManaged()) {
throw new AdminException('开通小程序订单管理服务后重试');
}
// $this->setMesJumpPath('demo');
// if (!$this->checkManaged()) {
// throw new AdminException('开通小程序订单管理服务后重试');
// }
$params = [
@ -234,7 +236,7 @@ class OrderClient extends BaseOrder
$list = $this->getDeliveryList();
if ($list) {
$key = self::redis_prefix . '_delivery_list';
$date = array_column($list, 'delivery_id', 'delivery_name');
$date = array_column($list['delivery_list'], 'delivery_id', 'delivery_name');
// 创建缓存
$this->getRedis()->hMSet($key, $date);
@ -263,7 +265,7 @@ class OrderClient extends BaseOrder
}
$express_company = $date[$company_name];
} else {
$express_company = $this->getRedis()->hMGet($key, $company_name);
$express_company = $this->getRedis()->hMGet($key, [$company_name])[$company_name] ?? '';
}
if (empty($express_company)) {
throw new AdminException('物流公司异常2');