Explorar el Código

Accept Merge Request #88: (dev-xwt -> dev-test)

Merge Request: 自动取消订单

Created By: @夏文涛
Accepted By: @夏文涛
URL: https://chuanghaikeji.coding.net/p/moxuanyunshangwaimai/d/backend/git/merge/88?initial=true
夏文涛 hace 1 año
padre
commit
6acc72159c

+ 42 - 39
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -2766,48 +2766,51 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                     .h5Url(commonInfoService.findOne(19).getValue())
                     .build();
 
-            Integer state = tbOrder.getState();
-            if (0 == state) {
-//                    状态为待支付需要调用支付系统订单查询接口判断支付系统对应的订单状态
-                Map<String, String> data = new HashMap<>();
-                String orderNumber = tbOrder.getOrderNumber();
-                //商户订单号
-                data.put("out_trade_no", orderNumber);
-                Map<String, String> response = wxpay.orderQuery(data);
-                String trade_state = response.get("trade_state");
-                //SUCCESS—支付成功,REFUND—转入退款,NOTPAY—未支付,CLOSED—已关闭,REVOKED—已撤销(刷卡支付),USERPAYING--用户支付中,PAYERROR--支付失败(其他原因,如银行返回失败)
-                if (ObjectUtils.isNotEmpty(trade_state)) {
-                    if ("NOTPAY".equals(trade_state)) {
-                        tbOrder.setStatus(5);
-                    } else if ("SUCCESS".equals(trade_state)) {
-                        tbOrder.setPayType(1);
-                        orderService.updateOrderAfterPaySuccess(tbOrder);
-                    }
-                } else {
-                    RhtQrcodePayApi qrcodePay = new RhtQrcodePayApi(wechatMchConfig.getMchId(), wechatMchConfig.getMchKey(), RHT_PAY_BASE_URL);
-                    QrcodeQueryRequestBean qqrb = new QrcodeQueryRequestBean();
-                    qqrb.setTraceno(orderNumber);// 商户流水号
-                    QrcodeQueryResponseBean response2 = qrcodePay.query(qqrb);
-                    String respCode = response2.getRespCode();
-                    log.info("超时任务处理订单【{}】查询支付结果,支付通知信息:{}", orderNumber, response2);
+            PayDetails pd = payDetailsService.getByOrderNo(tbOrder.getOrderNumber());
+            if (pd != null) {
+                Integer state = pd.getState();
+                if(0 == state){
+                    //                    状态为待支付需要调用支付系统订单查询接口判断支付系统对应的订单状态
+                    Map<String, String> data = new HashMap<>();
+                    String orderNumber = tbOrder.getOrderNumber();
+                    //商户订单号
+                    data.put("out_trade_no", orderNumber);
+                    Map<String, String> response = wxpay.orderQuery(data);
+                    String trade_state = response.get("trade_state");
+                    //SUCCESS—支付成功,REFUND—转入退款,NOTPAY—未支付,CLOSED—已关闭,REVOKED—已撤销(刷卡支付),USERPAYING--用户支付中,PAYERROR--支付失败(其他原因,如银行返回失败)
+                    if (ObjectUtils.isNotEmpty(trade_state)) {
+                        if ("NOTPAY".equals(trade_state)) {
+                            tbOrder.setStatus(5);
+                        } else if ("SUCCESS".equals(trade_state)) {
+                            tbOrder.setPayType(1);
+                            orderService.updateOrderAfterPaySuccess(tbOrder);
+                        }
+                    } else {
+                        RhtQrcodePayApi qrcodePay = new RhtQrcodePayApi(wechatMchConfig.getMchId(), wechatMchConfig.getMchKey(), RHT_PAY_BASE_URL);
+                        QrcodeQueryRequestBean qqrb = new QrcodeQueryRequestBean();
+                        qqrb.setTraceno(orderNumber);// 商户流水号
+                        QrcodeQueryResponseBean response2 = qrcodePay.query(qqrb);
+                        String respCode = response2.getRespCode();
+                        log.info("超时任务处理订单【{}】查询支付结果,支付通知信息:{}", orderNumber, response2);
 //                        0未支付,1支付成功,2支付失败,4退款中,5退款成功,6退款失败
-                    if ("0".equals(respCode)) {
-                        tbOrder.setStatus(5);
-                    } else if ("1".equals(respCode)) {
-                        PayDetails payDetails = payDetailsService.getByOrderNo(orderNumber);
-                        if (!ObjectUtil.isNull(payDetails)) {
-                            payDetails.setState(PayStateEnums.PAY_SUCCESS.getStateCode());
-                            payDetails.setPayTime(response2.getTransDate() + " " + response2.getTransTime());
-                            payDetails.setTradeNo(response2.getChannelOrderno());
-                            payDetails.setRemark("Scheduled RHT PAY SUCCESS");
-                            payDetailsService.updateDetail(payDetails);
-                        } else {
-                            log.error("超时任务处理订单【{}】支付成功,但未获取到支付订单!支付通知信息:{}", orderNumber, response2);
+                        if ("0".equals(respCode)) {
+                            tbOrder.setStatus(5);
+                        } else if ("1".equals(respCode)) {
+                            PayDetails payDetails = payDetailsService.getByOrderNo(orderNumber);
+                            if (!ObjectUtil.isNull(payDetails)) {
+                                payDetails.setState(PayStateEnums.PAY_SUCCESS.getStateCode());
+                                payDetails.setPayTime(response2.getTransDate() + " " + response2.getTransTime());
+                                payDetails.setTradeNo(response2.getChannelOrderno());
+                                payDetails.setRemark("Scheduled RHT PAY SUCCESS");
+                                payDetailsService.updateDetail(payDetails);
+                            } else {
+                                log.error("超时任务处理订单【{}】支付成功,但未获取到支付订单!支付通知信息:{}", orderNumber, response2);
+                            }
+                            tbOrder.setPayType(1);
+                            orderService.updateOrderAfterPaySuccess(tbOrder);
                         }
-                        tbOrder.setPayType(1);
-                        orderService.updateOrderAfterPaySuccess(tbOrder);
-                    }
 
+                    }
                 }
             } else {
                 tbOrder.setStatus(5);