Эх сурвалжийг харах

fix(lakala): 微信支付增加 openid 检查

- 在创建预付单前检查订单参数中的 openid 是否存在
- 若 openid 缺失则抛出逻辑异常,提示“微信未授权无法交易”
- 防止因缺少用户标识导致的支付失败问题
runphp 3 сар өмнө
parent
commit
b603fb6319

+ 4 - 0
src/PaymentProvider.php

@@ -19,6 +19,7 @@ use SixShop\Payment\Enum\PaymentBizEnum;
 use SixShop\Payment\Enum\PaymentStatusEnum;
 use SixShop\Payment\Event\PaymentSuccessEvent;
 use think\facade\Event;
+use function SixShop\Core\throw_logic_exception;
 
 class PaymentProvider implements PaymentProviderInterface
 {
@@ -123,6 +124,9 @@ class PaymentProvider implements PaymentProviderInterface
         $accBusiFields = new TradePreorderWechaAccBusiFields();
         $accBusiFields->setTimeoutExpress($expireDuration);
         $accBusiFields->setSubAppid($this->config->sub_appid);
+        if (!isset($order['params']['openid'])) {
+            throw_logic_exception('微信未授权无法交易');
+        }
         $accBusiFields->setUserId($order['params']['openid']);
         /*$detail = new TradePreorderWechaDetail();
         $detail->setCostPrice((float)$order['pay_amount']);