Преглед на файлове

fix(lakala): 修复支付参数获取与交易ID赋值逻辑

- 修改获取 openid 的逻辑,增加对 userID 存在性的判断
- 将 transaction_id 赋值从 transactionID 改为 trade_no
- 更新 createPaymentParam 方法返回类型为 object
- 调整 preOrder 调用方式并直接返回其结果
runphp преди 4 месеца
родител
ревизия
a57eebfea8
променени са 2 файла, в които са добавени 4 реда и са изтрити 4 реда
  1. 1 1
      src/Hook/LakalaHook.php
  2. 3 3
      src/PaymentProvider.php

+ 1 - 1
src/Hook/LakalaHook.php

@@ -21,7 +21,7 @@ class LakalaHook
             '拉卡拉',
             '拉卡拉',
             params: [
-                'openid' => WechatUser::openid($event->request->userID),
+                'openid' => $event->request->userID?WechatUser::openid($event->request->userID):null,
             ]
         );
     }

+ 3 - 3
src/PaymentProvider.php

@@ -59,7 +59,7 @@ class PaymentProvider implements PaymentProviderInterface
             $expireDuration = 15; // 分钟
             $payment->expire_time = time() + $expireDuration * 60;
             $payment->payment_param = $this->createPaymentParam($order, $payment, $expireDuration);
-            $payment->transaction_id = $payment->payment_param['transactionID'];
+            $payment->transaction_id = $payment->payment_param->trade_no;
             $payment->save();
         });
         return new PaymentResponse(orderNo: $payment->out_trade_no, type: self::PAYMENT_TYPE, raw: $payment->toArray());
@@ -85,7 +85,7 @@ class PaymentProvider implements PaymentProviderInterface
         throw new \Exception('Not implemented');
     }
 
-    private function createPaymentParam(array $order, ExtensionPaymentEntity $payment, int $expireDuration): array
+    private function createPaymentParam(array $order, ExtensionPaymentEntity $payment, int $expireDuration): object
     {
         $accBusiFields = new TradePreorderWechaAccBusiFields();
         $accBusiFields->setTimeoutExpress($expireDuration);
@@ -103,7 +103,7 @@ class PaymentProvider implements PaymentProviderInterface
         }
         $detail->setGoodsDetail($goodsDetailList);
         $accBusiFields->setDetail($detail);
-        TransactionService::preOrder(
+        return TransactionService::preOrder(
             outTradeNo: $payment['out_trade_no'],
             totalAmount: $payment['amount'],
             locationInfo: new LocationInfo(requestIP: $order['params']['ip']),