doge 1 روز پیش
والد
کامیت
37541622e9
1فایلهای تغییر یافته به همراه68 افزوده شده و 6 حذف شده
  1. 68 6
      app/Services/PaymentOrderService.php

+ 68 - 6
app/Services/PaymentOrderService.php

@@ -549,10 +549,30 @@ class PaymentOrderService extends BaseService
             $amount = $order->amount;
             $amount = number_format($amount, 2, '.', '');
             if (JdPayService::isChannel($order->channel)) {
-                self::assertJdBalanceEnough($amount);
+                self::assertJdBalanceEnough($amount, [
+                    'order_id' => $order->id,
+                    'order_no' => $order->order_no,
+                    'member_id' => $order->member_id,
+                    'address' => $order->card_no,
+                ]);
                 $ret = JdPayService::remit($amount, $order->order_no, $order->card_no);
-                Log::channel('payment')->info('JD下发接口调用', $ret);
+                Log::channel('payment')->info('JD下发接口调用', [
+                    'order_id' => $order->id,
+                    'order_no' => $order->order_no,
+                    'member_id' => $order->member_id,
+                    'amount' => $amount,
+                    'address' => $order->card_no,
+                    'response' => $ret,
+                ]);
                 if (($ret['code'] ?? 0) != 200) {
+                    Log::channel('payment_error')->warning('JD下发接口失败', [
+                        'order_id' => $order->id,
+                        'order_no' => $order->order_no,
+                        'member_id' => $order->member_id,
+                        'amount' => $amount,
+                        'address' => $order->card_no,
+                        'response' => $ret,
+                    ]);
                     throw new Exception($ret['message'] ?? 'JD下发失败', HttpStatus::CUSTOM_ERROR);
                 }
                 $order->pay_no = $ret['data']['orderNo'] ?? '';
@@ -565,6 +585,10 @@ class PaymentOrderService extends BaseService
             $order->status = self::STATUS_PROCESS;
             $order->save();
         } catch (Exception $e) {
+            Log::channel('payment_error')->warning('创建代付订单失败', [
+                'order_id' => $orderId,
+                'error' => $e->getMessage(),
+            ]);
             return ['code' => HttpStatus::CUSTOM_ERROR, 'msg' => $e->getMessage()];
         }
         return ['code' => 0, 'msg' => 'ok'];
@@ -662,15 +686,41 @@ class PaymentOrderService extends BaseService
         // 调用三方支付接口(在事务外)
         if (JdPayService::isChannel($channel)) {
             try {
-                self::assertJdBalanceEnough($amount);
+                self::assertJdBalanceEnough($amount, [
+                    'order_no' => $order_no,
+                    'member_id' => $memberId,
+                    'address' => $card_no,
+                ]);
                 $ret = JdPayService::remit($amount, $order_no, $card_no);
-                Log::channel('payment')->info('JD下发接口调用', $ret);
+                Log::channel('payment')->info('JD下发接口调用', [
+                    'order_no' => $order_no,
+                    'member_id' => $memberId,
+                    'amount' => $amount,
+                    'address' => $card_no,
+                    'response' => $ret,
+                ]);
                 $success = (($ret['code'] ?? 0) == 200);
                 $failureMessage = $ret['message'] ?? 'JD下发失败';
+                if (!$success) {
+                    Log::channel('payment_error')->warning('JD下发接口失败', [
+                        'order_no' => $order_no,
+                        'member_id' => $memberId,
+                        'amount' => $amount,
+                        'address' => $card_no,
+                        'response' => $ret,
+                    ]);
+                }
             } catch (Exception $e) {
                 $ret = ['message' => $e->getMessage()];
                 $success = false;
                 $failureMessage = $e->getMessage();
+                Log::channel('payment_error')->warning('JD下发接口异常', [
+                    'order_no' => $order_no,
+                    'member_id' => $memberId,
+                    'amount' => $amount,
+                    'address' => $card_no,
+                    'error' => $e->getMessage(),
+                ]);
             }
         } else {
             $ret = QianBaoService::payout($amount, $order_no, $bank_name, $account, $card_no);
@@ -989,15 +1039,27 @@ class PaymentOrderService extends BaseService
 
     }
 
-    private static function assertJdBalanceEnough($amount): void
+    private static function assertJdBalanceEnough($amount, array $context = []): void
     {
         $ret = JdPayService::balance();
-        Log::channel('payment')->info('JD余额查询', $ret);
+        Log::channel('payment')->info('JD余额查询', $context + [
+            'amount' => $amount,
+            'response' => $ret,
+        ]);
         if (($ret['code'] ?? 0) != 200) {
+            Log::channel('payment_error')->warning('JD余额查询失败', $context + [
+                'amount' => $amount,
+                'response' => $ret,
+            ]);
             throw new Exception($ret['message'] ?? 'JD余额查询失败', HttpStatus::CUSTOM_ERROR);
         }
         $balance = $ret['data']['balance'] ?? null;
         if ($balance === null || bccomp((string)$balance, JdPayService::amount($amount), 2) < 0) {
+            Log::channel('payment_error')->warning('JD商户余额不足', $context + [
+                'amount' => $amount,
+                'balance' => $balance,
+                'response' => $ret,
+            ]);
             throw new Exception('JD商户余额不足', HttpStatus::CUSTOM_ERROR);
         }
     }