Sfoglia il codice sorgente

fix(payment): 修复微信支付回调异常处理逻辑

- 将订单不存在异常改为警告日志并使用自定义异常抛出
- 统一异常处理方式为throw_logic_exception函数
- 修正转账单查询时的日志记录参数错误
- 为异常响应添加404状态码支持
runphp 1 mese fa
parent
commit
00d50fa79d
1 ha cambiato i file con 4 aggiunte e 2 eliminazioni
  1. 4 2
      src/PaymentProvider.php

+ 4 - 2
src/PaymentProvider.php

@@ -117,7 +117,8 @@ class PaymentProvider implements PaymentProviderInterface
                 'out_trade_no' => $data['out_trade_no'],
             ])->findOrEmpty();
             if ($payment->isEmpty()) {
-                throw new \RuntimeException('订单不存在或已结束');
+                Log::warning(__METHOD__ . '订单不存在{out_trade_no}', ['out_trade_no' => $data['out_trade_no']] );
+                throw_logic_exception('订单不存在或已结束',httpCode: 404);
             }
             $queryResult = $this->query($payment['id']);
             return new PaymentNotifyResult(
@@ -131,7 +132,8 @@ class PaymentProvider implements PaymentProviderInterface
             // 转账完成
             $transferBill = $this->wechatpayTransferBillEntity->where('out_bill_no', $data['out_bill_no'])->findOrEmpty();
             if ($transferBill->isEmpty()) {
-                throw new \RuntimeException('转账单不存在');
+                Log::warning(__METHOD__ . '订单不存在{out_trade_no}', ['out_trade_no' => $data['out_trade_no']] );
+                throw_logic_exception('转账单不存在', httpCode: 404);
             }
             $this->wechatpayTransferBillEntity->refreshTransferBill($transferBill->id);
             return new PaymentNotifyResult(