Przeglądaj źródła

订单重复退款问题

yangbo 4 lat temu
rodzic
commit
5dbe65fcd6

+ 16 - 2
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2217,7 +2217,7 @@ public class OrderServiceImpl implements OrderService {
                 }
                 }
             }
             }
 
 
-//            // TODO 到时候要注释掉,测试用而已
+            // TODO 到时候要注释掉,测试用而已
 //            OrderEntity orderEntity = queryObject(order.getId());
 //            OrderEntity orderEntity = queryObject(order.getId());
 //            orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));
 //            orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));
 //            orderEntity.setPayStatus(Integer.parseInt(Dict.payStatus.item_2.getItem()));
 //            orderEntity.setPayStatus(Integer.parseInt(Dict.payStatus.item_2.getItem()));
@@ -2729,6 +2729,10 @@ public class OrderServiceImpl implements OrderService {
             return R.error("订单已退款");
             return R.error("订单已退款");
         }
         }
 
 
+        if (orderInfo.getOrderStatus() != Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
+            return R.error("订单尚未支付完成,无法进行退款!");
+        }
+
         String payFlag = order.getPayFlag();
         String payFlag = order.getPayFlag();
 
 
         String key  = "kmall_order_refund_" + order.getOrderSn();
         String key  = "kmall_order_refund_" + order.getOrderSn();
@@ -2736,7 +2740,7 @@ public class OrderServiceImpl implements OrderService {
             return R.error("订单退款操作过快,请等待!");
             return R.error("订单退款操作过快,请等待!");
         }
         }
 
 
-        JedisUtil.set(key, System.currentTimeMillis() + "", 2);
+        JedisUtil.set(key, System.currentTimeMillis() + "", 3);
         if (orderInfo.getPayStatus() == Integer.parseInt(Dict.payStatus.item_3.getItem())) {
         if (orderInfo.getPayStatus() == Integer.parseInt(Dict.payStatus.item_3.getItem())) {
             return R.error("订单正在退款中,请勿重复退款");
             return R.error("订单正在退款中,请勿重复退款");
         }
         }
@@ -2812,6 +2816,16 @@ public class OrderServiceImpl implements OrderService {
             AliPayMicropayApiResult userRefund = AliPayUtil.aliTradeRefund(order.getOrderSn(), order.getActualPrice().toString(),
             AliPayMicropayApiResult userRefund = AliPayUtil.aliTradeRefund(order.getOrderSn(), order.getActualPrice().toString(),
                     "用户退款", order.getStoreId() + "");
                     "用户退款", order.getStoreId() + "");
 
 
+            // 是否已退款校验
+            try {
+                String fundChange = userRefund.getFundChange();
+                if ("N".equals(fundChange)) {
+                    return R.error("资金已退回,请勿重复退款!");
+                }
+            } catch (Exception e) {
+
+            }
+
             LOGGER.info(userRefund.getSubMsg());
             LOGGER.info(userRefund.getSubMsg());
 
 
             OrderRefundEntity orderRefund = new OrderRefundEntity();
             OrderRefundEntity orderRefund = new OrderRefundEntity();