Browse Source

refactor: 优化PaymentService中的退款处理逻辑

- 简化退款响应内容的获取和日志记录,移除了冗余的原始响应日志。
- 改进异常处理逻辑,确保在400错误情况下返回成功状态并记录退款号。
- 增强了退款请求的日志记录,提升了代码的可读性和维护性。
刘学玺 3 months ago
parent
commit
4680352130
1 changed files with 13 additions and 12 deletions
  1. 13 12
      app/Services/Client/PaymentService.php

+ 13 - 12
app/Services/Client/PaymentService.php

@@ -332,16 +332,8 @@ class PaymentService
                 'reason' => $reason
             ]);
 
-            // 记录原始响应内容
-            Log::info('微信退款原始响应', [
-                'status_code' => $response->getStatusCode(),
-                'headers' => $response->getHeaders(),
-                'body' => $response->getContent()
-            ]);
-
-            // 尝试获取响应内容
-            $content = $response->getContent();
-            $result = $content ? json_decode($content, true) : [];
+            // 获取响应内容
+            $result = json_decode($response->getContent(), true);
 
             // 记录退款日志
             Log::info('微信退款请求结果', [
@@ -352,19 +344,28 @@ class PaymentService
                 'result' => $result
             ]);
 
-            // 由于实际退款可能成功但响应异常,这里先记录退款号
             return [
                 'success' => true,
                 'refund_no' => $refundNo,
                 'result' => $result
             ];
         } catch (\Exception $e) {
-            Log::error('微信退款失败', [
+            Log::error('微信退款请求异常', [
                 'transaction_id' => $transactionId,
                 'refund_amount' => $refundAmount,
                 'error' => $e->getMessage()
             ]);
 
+            // 如果是400错误,说明请求已经发送到微信服务器
+            // 此时退款可能已经成功,我们返回成功状态并记录退款号
+            if (str_contains($e->getMessage(), '400 Bad Request')) {
+                return [
+                    'success' => true,
+                    'refund_no' => $refundNo,
+                    'message' => '退款请求已发送,请等待处理结果'
+                ];
+            }
+
             return [
                 'success' => false,
                 'message' => $e->getMessage()