‘linchangsheng’ il y a 5 mois
Parent
commit
1f24f422cb

+ 14 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -8,9 +8,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.github.binarywang.wxpay.bean.profitsharing.*;
 import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayOrderReverseRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
+import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
 import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
 import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
@@ -1246,12 +1248,23 @@ public class WechatLogic {
 
         WxPayMicropayResult payResult = null;
         try {
+            WxPayOrderQueryResult wxPayOrderQueryResult = payService.queryOrder("", id);
+
+
+            if (!wxPayOrderQueryResult.getReturnCode().equals("SUCCESS")
+                    || !wxPayOrderQueryResult.getResultCode().equals("SUCCESS") || !wxPayOrderQueryResult.getTradeState().equals("SUCCESS")){
+
+                WxPayOrderReverseRequest wxPayOrderReverseRequest = new WxPayOrderReverseRequest();
+                wxPayOrderReverseRequest.setOutTradeNo(id);
+                payService.reverseOrder(wxPayOrderReverseRequest);
+            }
+
             payResult = payService.micropay(request);
             log.info("商户扫码支付生成订单响应: {}", payResult);
         } catch (WxPayException e) {
             log.error("商户扫码支付失败: {}", payResult);
             log.error("商户扫码支付失败: {}", e.toString());
-            throw new RemoteServiceException("扫码支付失败,请刷新二维码,再次尝试扫码");
+            throw new RemoteServiceException("扫码支付失败,请刷新二维码,再次尝试扫码"+e.getErrCodeDes());
         }
         if (payResult == null || WxPayConstants.ResultCode.FAIL.equals(payResult.getReturnCode())) {
 

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java

@@ -390,6 +390,8 @@ public class SettlementOrderLogic {
 
             WxPayOrderQueryResult wxPayOrderQueryResult = payService.queryOrder("", workerOrder.getOrderId());
 
+
+
             if (!wxPayOrderQueryResult.getReturnCode().equals("SUCCESS")) {
                 continue;
             }