Просмотр исходного кода

fix(address): 更新地址解析API配置和请求方式

- 更改API网关地址从 kzaddress2 到 slyparcel
- 更新API路径从 /api/address/parse 到 /v2/express_address/query
- 将请求方式从GET改为POST
- 修改请求参数名称从 address 到 rawAddress
- 使用postRequest方法替换getRequest方法
- 添加对新接口返回格式的数据提取逻辑
- 增加接口错误码处理和日志记录
shichen месяцев назад: 2
Родитель
Сommit
b0d262dafb
2 измененных файлов с 20 добавлено и 6 удалено
  1. 18 4
      app/common/repositories/user/UserAddressRepository.php
  2. 2 2
      config/third_party.php

+ 18 - 4
app/common/repositories/user/UserAddressRepository.php

@@ -145,7 +145,7 @@ class UserAddressRepository extends BaseRepository
145
      * 调用阿里云市场地址解析接口,将完整的地址文本解析为省/市/区/街道等结构化信息
145
      * 调用阿里云市场地址解析接口,将完整的地址文本解析为省/市/区/街道等结构化信息
146
      *
146
      *
147
      * 接口文档: https://market.aliyun.com/detail/cmapi00067026
147
      * 接口文档: https://market.aliyun.com/detail/cmapi00067026
148
-     * 请求方式: GET
148
+     * 请求方式: POST
149
      * 认证方式: Authorization:APPCODE
149
      * 认证方式: Authorization:APPCODE
150
      *
150
      *
151
      * @param string $address 待解析的地址文本,如 "北京市朝阳区建国路88号SOHO现代城A座1508室"
151
      * @param string $address 待解析的地址文本,如 "北京市朝阳区建国路88号SOHO现代城A座1508室"
@@ -170,13 +170,13 @@ class UserAddressRepository extends BaseRepository
170
             return ['code' => -2, 'msg' => $msg, 'data' => []];
170
             return ['code' => -2, 'msg' => $msg, 'data' => []];
171
         }
171
         }
172
 
172
 
173
-        $url = rtrim($config['gatewayUrl'] ?? 'https://kzaddress2.market.alicloudapi.com', '/')
174
-             . ($config['apiPath'] ?? '/api/address/parse');
173
+        $url = rtrim($config['gatewayUrl'] ?? 'https://slyparcel.market.alicloudapi.com', '/')
174
+             . ($config['apiPath'] ?? '/v2/express_address/query');
175
 
175
 
176
         $header = ['Authorization:APPCODE ' . $appCode];
176
         $header = ['Authorization:APPCODE ' . $appCode];
177
 
177
 
178
         try {
178
         try {
179
-            $res = HttpService::getRequest($url, ['address' => $address], $header);
179
+            $res = HttpService::postRequest($url, ['rawAddress' => $address], $header);
180
             if ($res === false) {
180
             if ($res === false) {
181
                 $msg = '地址解析请求失败';
181
                 $msg = '地址解析请求失败';
182
                 Log::error($msg . ':' . $url . ',地址:' . $address);
182
                 Log::error($msg . ':' . $url . ',地址:' . $address);
@@ -190,6 +190,20 @@ class UserAddressRepository extends BaseRepository
190
                 return ['code' => -4, 'msg' => $msg, 'data' => []];
190
                 return ['code' => -4, 'msg' => $msg, 'data' => []];
191
             }
191
             }
192
 
192
 
193
+            // 接口返回格式:{"msg":"成功","success":true,"code":200,"data":{"orderNo":"...","data":{...}}}
194
+            // 提取内层 data.data 作为解析结果
195
+            if (isset($result['code']) && $result['code'] == 200 && isset($result['data']['data'])) {
196
+                return ['code' => 200, 'msg' => '成功', 'data' => $result['data']['data']];
197
+            }
198
+
199
+            // 如果外层 code 不是 200,返回接口的错误信息
200
+            if (isset($result['code']) && $result['code'] != 200) {
201
+                $msg = $result['msg'] ?? '地址解析失败';
202
+                Log::error($msg . ',原始数据:' . $res);
203
+                return ['code' => $result['code'], 'msg' => $msg, 'data' => []];
204
+            }
205
+
206
+            // 兜底:返回原始结果
193
             return ['code' => 200, 'msg' => '成功', 'data' => $result];
207
             return ['code' => 200, 'msg' => '成功', 'data' => $result];
194
         } catch (\Throwable $e) {
208
         } catch (\Throwable $e) {
195
             $msg = '地址解析异常:' . $e->getMessage();
209
             $msg = '地址解析异常:' . $e->getMessage();

+ 2 - 2
config/third_party.php

@@ -32,8 +32,8 @@ return [
32
         // 阿里云市场 AppCode(从阿里云市场控制台获取)
32
         // 阿里云市场 AppCode(从阿里云市场控制台获取)
33
         'appCode' => '10e4d1cae6c245049d0ec51bc079a3d6',
33
         'appCode' => '10e4d1cae6c245049d0ec51bc079a3d6',
34
         // API 网关地址
34
         // API 网关地址
35
-        'gatewayUrl' => 'https://kzaddress2.market.alicloudapi.com',
35
+        'gatewayUrl' => 'https://slyparcel.market.alicloudapi.com',
36
         // API 路径
36
         // API 路径
37
-        'apiPath' => '/api/address/parse',
37
+        'apiPath' => '/v2/express_address/query',
38
     ]
38
     ]
39
 ];
39
 ];