Pārlūkot izejas kodu

修复:快递100查询顺丰物流时报错

萤火科技 1 gadu atpakaļ
vecāks
revīzija
e8a1a1c2c2

+ 4 - 3
app/common/library/express/provider/Driver.php

@@ -38,11 +38,12 @@ abstract class Driver
 
     /**
      * 查询物流轨迹
-     * @param string $code
-     * @param string $expressNo
+     * @param string $code 快递公司的编码
+     * @param string $expressNo 查询的快递单号
+     * @param array $extra 附加数据
      * @return array
      */
-    abstract function query(string $code, string $expressNo): array;
+    abstract function query(string $code, string $expressNo, array $extra = []): array;
 
     /**
      * 设置api配置参数

+ 4 - 3
app/common/library/express/provider/driver/Aliyun.php

@@ -28,12 +28,13 @@ class Aliyun extends Driver
 
     /**
      * 查询物流轨迹
-     * @param string $code
-     * @param string $expressNo
+     * @param string $code 快递公司的编码
+     * @param string $expressNo 查询的快递单号
+     * @param array $extra 附加数据
      * @return array
      * @throws BaseException
      */
-    public function query(string $code, string $expressNo): array
+    public function query(string $code, string $expressNo, array $extra = []): array
     {
         // 授权参数
         $appCode = $this->options['appCode'];

+ 8 - 4
app/common/library/express/provider/driver/Kd100.php

@@ -19,6 +19,7 @@ use cores\exception\BaseException;
 /**
  * 快递100物流查询驱动
  * Class Kd100
+ * 接口文档: https://api.kuaidi100.com/document/5f0ffb5ebc8da837cbd8aefc
  * @package app\common\library\express\provider\driver
  */
 class Kd100 extends Driver
@@ -28,12 +29,13 @@ class Kd100 extends Driver
 
     /**
      * 查询物流轨迹
-     * @param string $code
-     * @param string $expressNo
+     * @param string $code 快递公司的编码
+     * @param string $expressNo 查询的快递单号
+     * @param array $extra 附加数据
      * @return array
      * @throws BaseException
      */
-    public function query(string $code, string $expressNo): array
+    public function query(string $code, string $expressNo, array $extra = []): array
     {
         // 参数设置
         $param = [
@@ -41,7 +43,9 @@ class Kd100 extends Driver
             'param' => helper::jsonEncode([
                 'resultv2' => '1',
                 'com' => $code,
-                'num' => $expressNo
+                'num' => $expressNo,
+                // 顺丰参数 (需传参收、寄件人的电话号码)
+                'phone' =>  $code === 'shunfeng' ? $extra['phone']: ''
             ])
         ];
         $param['sign'] = strtoupper(md5($param['param'] . $this->options['key'] . $param['customer']));

+ 2 - 2
app/common/service/Express.php

@@ -50,13 +50,13 @@ class Express extends BaseService
         }
         // 使用阿里云查询顺丰时 物流单号需要加上手机尾号
         if ($config['default'] == 'aliyun' && $code === 'SF') {
-            $lastPhoneNumber = mb_substr($address['phone'], -4);
+            $lastPhoneNumber = \mb_substr($address['phone'], -4);
             $expressNo = "{$expressNo}:$lastPhoneNumber";
         }
         // 请求API查询物流轨迹
         $result = ExpressFacade::store($config['default'])
             ->setOptions($config['providerConfig'][$config['default']])
-            ->query($code, $expressNo);
+            ->query($code, $expressNo, ['phone' => $address['phone']]);
         // 记录缓存, 有效期60分钟
         Cache::set($cacheIndex, $result, 60 * 60);
         return $result;