Преглед изворни кода

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

Gosowong пре 2 година
родитељ
комит
de1f373004

+ 71 - 3
crmeb/crmeb/services/easywechat/orderShipping/BaseOrder.php

@@ -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', "{}"]));
     }
 }

+ 7 - 5
crmeb/crmeb/services/easywechat/orderShipping/OrderClient.php

@@ -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');