From cf405b8a592db661c189644e45b928f18abd96c7 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期三, 09 十月 2024 09:59:56 +0800
Subject: [PATCH] 取消订单验证

---
 src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java b/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java
index 5353faa..83853a9 100644
--- a/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java
+++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java
@@ -321,7 +321,7 @@
         VSP502:微信支付撤销
         VSP503:微信支付退款
         */
-        if ("VSP502".equals(trxcode)|| "VSP503".equals(trxcode)){
+        if ("VSP502".equals(trxcode) || "VSP503".equals(trxcode)){
             String trxid = params.get("trxid");
             updateOrderRefund(outTradeNo, trxid);
 
@@ -339,12 +339,26 @@
         }
 
         SybPayService service = new SybPayService();
-        Map<String,String> map = service.close(null, orderId);
-        log.info("======关闭订单结果" + toJSONString(map));
 
-        String retcode = map.get("retcode");
-        if(!"SUCCESS".equals(retcode)){
-            throw new ValidationException("取消订单失败: " + map.get("retmsg"));
+        Map<String,String> params = service.query(orderId, up.getTransactionId());
+        String trxstatus = params.get("trxstatus");//支付状态
+
+        if("1001".equals(trxstatus)){
+            //空单 直接取消
+        } else if (StringUtils.isEmpty(trxstatus)
+                || "2008".equals(trxstatus)
+                || "2000".equals(trxstatus)) {
+            String trxid = params.get("trxid");
+            //2008或者2000 : 交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易
+            Map<String,String> map = service.close(trxid, orderId);
+            log.info("======关闭订单结果" + toJSONString(map));
+
+            String retcode = map.get("retcode");
+            if(!"SUCCESS".equals(retcode)){
+                throw new ValidationException("取消订单失败: " + map.get("retmsg"));
+            }
+        } else {
+            throw new ValidationException("订单不可取消");
         }
 
         Order order = orderMapper.selectById(orderId);

--
Gitblit v1.9.3