Pārlūkot izejas kodu

bugfix: 增加判断

刘云鑫 3 nedēļas atpakaļ
vecāks
revīzija
1a74f452f5

+ 15 - 13
alien-dining/src/main/java/shop/alien/dining/strategy/payment/impl/WeChatPaymentMininProgramStrategyImpl.java

@@ -204,19 +204,21 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
             if (publicKey == null) {
                 return R.fail("店铺微信支付公钥未配置或加载失败");
             }
-            QueryByWxTradeNoRequest q = new QueryByWxTradeNoRequest();
-            q.transactionId = storeOrder.getPayTradeNo();
-            q.mchid = mchId;
-            try {
-                DirectAPIv3QueryResponse wxOrder = searchOrderRun(q, config, privateKey, publicKey);
-                if (wxOrder != null && "SUCCESS".equals(wxOrder.tradeState)) {
-                    return R.fail("该支付单已在微信侧支付成功,请勿重复发起支付");
-                }
-            } catch (WXPayUtility.ApiException e) {
-                if (e.getStatusCode() != 404 && !"ORDER_NOT_EXIST".equals(e.getErrorCode())) {
-                    log.error("预支付前查询微信订单失败 out_trade_no={}, status={}, code={}, msg={}",
-                            storeOrder.getPayTradeNo(), e.getStatusCode(), e.getErrorCode(), e.getErrorMessage());
-                    return R.fail("查询微信支付订单失败:" + (e.getErrorMessage() != null ? e.getErrorMessage() : e.getMessage()));
+            if(storeOrder.getPayTradeNo() != null) {
+                QueryByWxTradeNoRequest q = new QueryByWxTradeNoRequest();
+                q.transactionId = storeOrder.getPayTradeNo();
+                q.mchid = mchId;
+                try {
+                    DirectAPIv3QueryResponse wxOrder = searchOrderRun(q, config, privateKey, publicKey);
+                    if (wxOrder != null && "SUCCESS".equals(wxOrder.tradeState)) {
+                        return R.fail("该支付单已在微信侧支付成功,请勿重复发起支付");
+                    }
+                } catch (WXPayUtility.ApiException e) {
+                    if (e.getStatusCode() != 404 && !"ORDER_NOT_EXIST".equals(e.getErrorCode())) {
+                        log.error("预支付前查询微信订单失败 out_trade_no={}, status={}, code={}, msg={}",
+                                storeOrder.getPayTradeNo(), e.getStatusCode(), e.getErrorCode(), e.getErrorMessage());
+                        return R.fail("查询微信支付订单失败:" + (e.getErrorMessage() != null ? e.getErrorMessage() : e.getMessage()));
+                    }
                 }
             }
             String newPayTradeNo = "WX" + storeOrder.getId() + "_" + System.currentTimeMillis();