From 2ab8c3ee11ec5879a7d71986bcbc0c44c6c75bb2 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 25 Dec 2023 11:14:53 +0800
Subject: [PATCH] 富文本框输入版本变化

---
 src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java |  120 +++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 66 insertions(+), 54 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
index f5980d6..8eca37e 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
@@ -49,8 +49,10 @@
     private final AgentProducer agentProducer;
     private final WxPayService wxPayService;
     private static final String PAY_SUCCESS = "SUCCESS";
+    private static final String PAY_WAITING = "等待用户输入密码";
     private static final String PAY_USERPAYING = "USERPAYING";
     private static final String PAY_FAIL = "FAIL";
+    private static final String TRADE_TYPE = "MICROPAY";
     @Override
     public String pay(MallOrderInfo mallOrderInfo) {
 
@@ -118,65 +120,75 @@
             e.printStackTrace();
             throw new FebsException("签名异常");
         }
+        WxPayMicropayResult micropay = null;
+        String errCode = null;
+        String errCodeDes = null;
         try {
-            WxPayMicropayResult micropay = wxPayService.micropay(request);
-            String returnCode = micropay.getReturnCode();
-            String resultCode = micropay.getResultCode();
-            String errCode = micropay.getErrCode();
-            String outTradeNo = micropay.getOutTradeNo();
-            String errCodeDes = micropay.getErrCodeDes();
-            /**
-             * 交易成功判断条件:return_code和result_code都为SUCCESS且trade_type为MICROPAY
-             */
+            micropay = wxPayService.micropay(request);
 
-            if(PAY_SUCCESS.equals(returnCode) && PAY_SUCCESS.equals(resultCode)){
-                log.info("微信免密支付成功");
-                MallOrderInfo orderInfo = mallOrderInfoMapper.selectByOrderNo(mallOrderInfo.getOrderNo());
-                if(ObjectUtil.isNotEmpty(orderInfo)){
-                    if (OrderStatusEnum.FINISH.getValue() != orderInfo.getStatus()) {
-                        orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
-                        orderInfo.setPayResult(1);
-                        orderInfo.setPayTime(DateUtil.date());
-                        mallOrderInfoMapper.updateById(orderInfo);
-                    }
-                }
-                agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
-                return PAY_SUCCESS;
-            }
-//            else if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
-//                for(int i = 0; i < 4; i++){
-//                    try {
-//                        Thread.sleep(5000);
-//                    } catch (InterruptedException e) {
-//                        e.printStackTrace();
-//                    }
-//                    //调用微信的查询接口
-//                    /**
-//                     * 交易成功判断条件: return_code、result_code和trade_state都为SUCCESS
-//                     */
-//                    WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
-//                    wxPayOrderQueryRequest.setOutTradeNo(outTradeNo);
-//                    log.info("付款码支付订单查询");
-//                    WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
-//                    String returnCodePaying = wxPayOrderQueryResult.getReturnCode();
-//                    String resultCodePaying = wxPayOrderQueryResult.getResultCode();
-//                    String tradeTypePaying = wxPayOrderQueryResult.getTradeType();
-//                    if(PAY_SUCCESS.equals(tradeTypePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& PAY_SUCCESS.equals(tradeTypePaying)){
-//                        log.info("微信加密支付成功!");
-//                        agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
-//                        return PAY_SUCCESS;
-//                    }
-//                    log.info("正在支付" + wxPayOrderQueryResult.getDetail());
-//                }
-//            }
-            else if(PAY_FAIL.equals(resultCode)){
-                return errCodeDes;
-            }
-            return errCodeDes;
         } catch (WxPayException e) {
             e.printStackTrace();
-            throw new FebsException(e.getErrCodeDes());
+            errCode = e.getErrCode();
+            errCodeDes = e.getErrCodeDes();
+//            throw new FebsException(e.getErrCodeDes());
+        }finally {
+            if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
+                for(int i = 0; i < 5; i++){
+                    try {
+                        Thread.sleep(3000);
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                    }
+
+                    String outTradeNo = mallOrderInfo.getOrderNo();
+                    WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
+                    wxPayOrderQueryRequest.setOutTradeNo(outTradeNo);
+                    log.info("付款码支付订单查询");
+                    WxPayOrderQueryResult wxPayOrderQueryResult = null;
+                    try {
+                        wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
+                    } catch (WxPayException e) {
+                        e.printStackTrace();
+                    }
+                    String returnCodePaying = wxPayOrderQueryResult.getReturnCode();
+                    String tradeTypePaying = wxPayOrderQueryResult.getTradeType();
+                    String resultCodePaying = wxPayOrderQueryResult.getResultCode();
+                    String tradeStateDesc = wxPayOrderQueryResult.getTradeStateDesc();
+                    /**
+                     * 交易成功判断条件:return_code和result_code都为SUCCESS且trade_type为MICROPAY
+                     */
+                    if(PAY_SUCCESS.equals(resultCodePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& TRADE_TYPE.equals(tradeTypePaying)){
+                        log.info("微信加密支付成功!");
+                        agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
+                        return tradeStateDesc;
+                    }
+                }
+            }
         }
+        if(ObjectUtil.isEmpty(micropay)){
+            return errCodeDes;
+        }
+        String returnCode = micropay.getReturnCode();
+        String resultCode = micropay.getResultCode();
+        String outTradeNo = micropay.getOutTradeNo();
+
+        if(PAY_SUCCESS.equals(returnCode) && PAY_SUCCESS.equals(resultCode)){
+            log.info("微信免密支付成功");
+            MallOrderInfo orderInfo = mallOrderInfoMapper.selectByOrderNo(mallOrderInfo.getOrderNo());
+            if(ObjectUtil.isNotEmpty(orderInfo)){
+                if (OrderStatusEnum.FINISH.getValue() != orderInfo.getStatus()) {
+                    orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+                    orderInfo.setPayResult(1);
+                    orderInfo.setPayTime(DateUtil.date());
+                    mallOrderInfoMapper.updateById(orderInfo);
+                }
+            }
+            agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
+            return PAY_SUCCESS;
+        } else if(PAY_FAIL.equals(resultCode)){
+            return errCodeDes;
+        }
+        return errCodeDes;
     }
 
     @Override

--
Gitblit v1.9.1