From d61840f8cf23015f9d2012d7231e21cdf062cd54 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 27 十一月 2025 15:01:55 +0800
Subject: [PATCH] 用户端退款修改

---
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java       |    8 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java                |   40 +++
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java                            |    2 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java                                 |   11 +
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongRefundBiz.java                                     |   72 +++++++
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/AppOrderController.java                          |  115 +++++++----
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java           |   40 +++
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java                                         |  159 +++++++++++++++
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java                              |    2 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/model/OrderLogistics.java                            |   13 +
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java              |    4 
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java |    8 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/DouGongNotifyController.java                                  |   80 +++++++
 13 files changed, 476 insertions(+), 78 deletions(-)

diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
index cc12dcb..bb1133f 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
@@ -104,7 +104,7 @@
         // 请求日期
         paramsInfo.put("req_date", DateUtil.format(new Date(), "yyyyMMdd"));
         // 汇付客户Id
-        paramsInfo.put("huifu_id", userWithdrawal.getHuiFuId());
+        paramsInfo.put("huifu_id", userWithdrawal.getHuifuId());
         String[] certificateExpireDateArr = userWithdrawal.getCertificateExpireTime().split(",");
         String startDateStr = certificateExpireDateArr[0];
         // 个人证件有效期开始日期
diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
index 8406891..2a93ee1 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -2091,12 +2091,12 @@
             //allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
             //
             //allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
-            result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuiFuId());
+            result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
         }else {
             //allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
             //allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
             //allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
-            result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuiFuId());
+            result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
         }
         if ("00000000".equals(result.get("respCode").toString())) {
             return "ok";
diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java
index 08bd909..a0ef2c3 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java
@@ -325,12 +325,12 @@
                 //allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
                 //
                 //allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
-                result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuiFuId());
+                result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
             }else {
                 //allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
                 //allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
                 //allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
-                result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuiFuId());
+                result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
             }
             if ("00000000".equals(result.get("respCode").toString())) {
                 return "ok";
@@ -374,12 +374,12 @@
                 //allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
                 //
                 //allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
-                result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuiFuId());
+                result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
             }else {
                 //allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
                 //allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
                 //allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
-                result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuiFuId());
+                result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
             }
             if ("00000000".equals(result.get("respCode").toString())) {
                 return "ok";
diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
index 65102cc..20eb8aa 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -712,7 +712,7 @@
                 return ResultUtil.error("该司机未进件");
             }
 
-            FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuiFuId());
+            FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuifuId());
 
 
             driver.setBalance(driver.getBalance().add(new BigDecimal(tReassign.getMoney())));
@@ -852,7 +852,7 @@
                     return ResultUtil.error("该司机未进件");
                 }
 
-                FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuiFuId());
+                FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuifuId());
 
 
                 driver.setBalance(driver.getBalance().add(new BigDecimal(tReassign.getMoney())));
@@ -1031,7 +1031,7 @@
                     return ResultUtil.error("该司机未进件");
                 }
 
-                FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuiFuId());
+                FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuifuId());
 
                 driver.setBalance(driver.getBalance().add(new BigDecimal(tReassign.getMoney())));
                 driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).add(new BigDecimal(tReassign.getMoney())).doubleValue());
@@ -1177,7 +1177,7 @@
                 return ResultUtil.error("该司机未进件");
             }
 
-            FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuiFuId());
+            FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.format(new Date(), "yyyyMMdd"),tReassign.getMoney().toString(),userWithdrawal.getHuifuId());
 
 
             driver.setBalance(driver.getBalance().add(new BigDecimal(tReassign.getMoney())));
diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java
index 33f1faf..ea15236 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java
@@ -143,7 +143,7 @@
     private Integer type;
 
     @ApiModelProperty(value = "汇付ID")
-    private String huiFuId;
+    private String huifuId;
 
     @ApiModelProperty(value = "取现卡序列号")
     private String tokenNo;
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/AppOrderController.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/AppOrderController.java
index fe148c4..3b8baa3 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/AppOrderController.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/AppOrderController.java
@@ -2,8 +2,10 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.core.util.GetOpenBodySig;
 import com.stylefeng.guns.core.util.NotifyDemo;
+import com.stylefeng.guns.core.util.RequestSeqUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.CharteredCar.model.OrderCharteredCar;
 import com.stylefeng.guns.modular.CharteredCar.server.IOrderCharteredCarService;
@@ -20,6 +22,7 @@
 import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
 import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
 import com.stylefeng.guns.modular.enums.PaymentTypeEnum;
+import com.stylefeng.guns.modular.huifu.biz.FenZhangUtil;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
 import com.stylefeng.guns.modular.system.dao.UserInfoMapper;
@@ -432,30 +435,42 @@
 
         AllocationReq allocationReq= new AllocationReq();
         allocationReq.setOutOrderNo(ToolUtil.getRandomString(32));
-        if(type==1){
-            allocationReq.setPayBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
-            allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
-
-            allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
-        }else {
-            allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
-            allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
-            allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
-        }
-        money=money*100;
-        allocationReq.setAmount((int)money);
-        allocationReq.setProductName("分账");
-        allocationReq.setProductCount(1);
-        allocationReq.setOrderNo(ToolUtil.getRandomString(32));
-        allocationReq.setOrderAmount(1l);
         try {
-            AllocationResp allocationResp = AllocationExample.create(allocationReq);
-            System.out.println(allocationResp);
-            return "ok";
-        } catch (UpyztException e) {
-            e.printStackTrace();
-            return e.getMessage();
+            Map<String, Object> result;
+            if(type==1){
+                //allocationReq.setPayBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
+                //allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
+                //
+                //allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
+                result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
+            }else {
+                //allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
+                //allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
+                //allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
+                result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
+            }
+            if ("00000000".equals(result.get("respCode").toString())) {
+                return "ok";
+            } else {
+                return result.get("respDesc").toString();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
+        //money=money*100;
+        //allocationReq.setAmount((int)money);
+        //allocationReq.setProductName("分账");
+        //allocationReq.setProductCount(1);
+        //allocationReq.setOrderNo(ToolUtil.getRandomString(32));
+        //allocationReq.setOrderAmount(1l);
+        //try {
+        //    AllocationResp allocationResp = AllocationExample.create(allocationReq);
+        //    System.out.println(allocationResp);
+        //    return "ok";
+        //} catch (UpyztException e) {
+        //    e.printStackTrace();
+        //    return e.getMessage();
+        //}
 
     }
 
@@ -471,30 +486,42 @@
 
         AllocationReq allocationReq= new AllocationReq();
         allocationReq.setOutOrderNo(ToolUtil.getRandomString(32));
-        if(type==1){
-            allocationReq.setPayBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
-            allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
-
-            allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
-        }else {
-            allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
-            allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
-            allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
-        }
-        money=money*100;
-        allocationReq.setAmount((int)money);
-        allocationReq.setProductName("分账");
-        allocationReq.setProductCount(1);
-        allocationReq.setOrderNo(ToolUtil.getRandomString(32));
-        allocationReq.setOrderAmount(1l);
+        Map<String, Object> result;
         try {
-            AllocationResp allocationResp = AllocationExample.create(allocationReq);
-            System.out.println(allocationResp);
-            return "ok";
-        } catch (UpyztException e) {
-            e.printStackTrace();
-            return e.getMessage();
+            if(type==1){
+                //allocationReq.setPayBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
+                //allocationReq.setRecvBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
+                //
+                //allocationReq.setPassword(Base64Util.decode(tEnterpriseWithdrawals.get(0).getTransactionAuthorizationCode()));
+                result = FenZhangUtil.fenzhang(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
+            }else {
+                //allocationReq.setRecvBalanceAcctId(tEnterpriseWithdrawals.get(0).getBalanceAcctId());
+                //allocationReq.setPayBalanceAcctId(userWithdrawals.get(0).getBalanceAcctId());
+                //allocationReq.setPassword(Base64Util.decode(userWithdrawals.get(0).getTransactionAuthorizationCode()));
+                result = FenZhangUtil.payFromUser(RequestSeqUtil.generate("TK"), DateUtil.formatDate(new Date(), "yyyyMMdd"), String.valueOf(money), userWithdrawals.get(0).getHuifuId());
+            }
+            if ("00000000".equals(result.get("respCode").toString())) {
+                return "ok";
+            } else {
+                return result.get("respDesc").toString();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
+        //money=money*100;
+        //allocationReq.setAmount((int)money);
+        //allocationReq.setProductName("分账");
+        //allocationReq.setProductCount(1);
+        //allocationReq.setOrderNo(ToolUtil.getRandomString(32));
+        //allocationReq.setOrderAmount(1l);
+        //try {
+        //    AllocationResp allocationResp = AllocationExample.create(allocationReq);
+        //    System.out.println(allocationResp);
+        //    return "ok";
+        //} catch (UpyztException e) {
+        //    e.printStackTrace();
+        //    return e.getMessage();
+        //}
 
     }
 }
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java
index 1da10d1..800ba53 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java
@@ -357,6 +357,17 @@
     @TableField("outTradeNo")
     private String outTradeNo;
 
+    @TableField("refundReqSeqId")
+    private String refundReqSeqId;
+
+    public String getRefundReqSeqId() {
+        return refundReqSeqId;
+    }
+
+    public void setRefundReqSeqId(String refundReqSeqId) {
+        this.refundReqSeqId = refundReqSeqId;
+    }
+
     public String getOutTradeNo() {
         return outTradeNo;
     }
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index f9d7185..f98b4aa 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.core.util.RequestSeqUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.account.controller.AppOrderController;
 import com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper;
@@ -16,6 +17,8 @@
 import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
 import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper;
 import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil;
+import com.stylefeng.guns.modular.huifu.biz.DouGongRefundBiz;
+import com.stylefeng.guns.modular.huifu.biz.DouGongWithdrawBiz;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper;
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
@@ -191,6 +194,9 @@
 
     @Autowired
     private IRegionService regionService;
+
+    @Autowired
+    private DouGongRefundBiz douGongRefundBiz;
 
 
     @Value("${callbackPath}")
@@ -2014,11 +2020,20 @@
 
                 if(query.getPayType() == 1){//微信
 
-                    Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), id + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
-                    if(!"SUCCESS".equals(map.get("return_code"))){
-                        return ResultUtil.error(map.get("return_msg"));
+                    //Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), id + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
+                    //if(!"SUCCESS".equals(map.get("return_code"))){
+                    //    return ResultUtil.error(map.get("return_msg"));
+                    //}
+                    String refundReqSeqId = RequestSeqUtil.generate("TK");
+                    Map<String, Object> refund = douGongRefundBiz.refund(refundReqSeqId, BigDecimal.valueOf(query.getAmount()), com.stylefeng.guns.core.util.DateUtil.format(query.getInsertTime(), "yyyyMMdd"), orderCrossCity.getOutTradeNo(), 2);
+                    orderCrossCity.setRefundReqSeqId(refundReqSeqId);
+                    if ("00000000".equals(refund.get("resp_code")) && "S".equals(refund.get("trans_stat"))) {
+                        orderCrossCity.setState(10);
+                    }else if (!"00000000".equals(refund.get("resp_code"))) {
+                        return ResultUtil.error("订单取消失败:" + refund.get("resp_desc").toString());
                     }
-                }else if(query.getPayType()==4){ // 云闪付
+                    orderCrossCityMapper.updateById(orderCrossCity);
+                }/*else if(query.getPayType()==4){ // 云闪付
                     // TODO 退款
                     UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId());
                     userInfo.setBalance(userInfo.getBalance() + orderCrossCity.getPayMoney());
@@ -2031,11 +2046,20 @@
                     }else {
                         appOrderController.createAllocationReqUser(1, orderCrossCity.getUserId(), 1,orderCrossCity.getPayMoney());
                     }
-                }else{//支付宝
-                    Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
-                    if(!"10000".equals(map.get("code"))){
-                        return ResultUtil.error(map.get("msg"));
+                }*/else{//支付宝
+                    //Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
+                    //if(!"10000".equals(map.get("code"))){
+                    //    return ResultUtil.error(map.get("msg"));
+                    //}
+                    String refundReqSeqId = RequestSeqUtil.generate("TK");
+                    Map<String, Object> refund = douGongRefundBiz.refund(refundReqSeqId, BigDecimal.valueOf(query.getAmount()), com.stylefeng.guns.core.util.DateUtil.format(query.getInsertTime(), "yyyyMMdd"), orderCrossCity.getOutTradeNo(), 2);
+                    orderCrossCity.setRefundReqSeqId(refundReqSeqId);
+                    if ("00000000".equals(refund.get("resp_code")) && "S".equals(refund.get("trans_stat"))) {
+                        orderCrossCity.setState(10);
+                    }else if (!"00000000".equals(refund.get("resp_code"))) {
+                        return ResultUtil.error("订单取消失败:" + refund.get("resp_desc").toString());
                     }
+                    orderCrossCityMapper.updateById(orderCrossCity);
                     //添加交易明细
                     transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, id);
                 }
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/DouGongNotifyController.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/DouGongNotifyController.java
index 7244674..690281f 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/DouGongNotifyController.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/DouGongNotifyController.java
@@ -1,8 +1,13 @@
 package com.stylefeng.guns.modular.huifu;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.huifu.bspay.sdk.opps.core.utils.RsaUtils;
+import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
+import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
 import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
+import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
+import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -11,6 +16,9 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Objects;
 
 /**
  * @author mitao
@@ -22,22 +30,84 @@
 public class DouGongNotifyController {
     @Autowired
     private HuiFuProperties huiFuProperties;
-
+    @Autowired
+    private IOrderCrossCityService orderCrossCityService;
+    @Autowired
+    private IOrderLogisticsService orderLogisticsService;
     /**
      * 斗拱主动取现接口回调
      * @param request
      * @param response
      */
-    @PostMapping("/encashment")
-    public void encashment(HttpServletRequest request, HttpServletResponse response) {
+    @PostMapping("/refund-logistics")
+    public void refundLogistics(HttpServletRequest request, HttpServletResponse response) {
         String sign =request.getParameter("sign");
         String resp_data = request.getParameter("resp_data");
-        log.info("");
+        log.info("斗拱用户提现回调响应内容:{}", resp_data);
+        // 使用汇付公钥验签
         resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
         boolean verify = RsaUtils.verify(resp_data, huiFuProperties.getRsaPublicKey(), sign);
         if(verify){
             JSONObject respDataJson = JSONObject.parseObject(resp_data);
-
+            String reqSeqId = respDataJson.getString("req_seq_id");
+            String orgReqSeqId = respDataJson.getString("org_req_seq_id");
+            String transStat = respDataJson.getString("trans_stat");//S:成功 F:失败 P:处理中;示例值:S
+            OrderLogistics orderLogistics = orderLogisticsService.selectOne(new EntityWrapper<OrderLogistics>()
+                    .eq("refundReqSeqId", reqSeqId).or().eq("outTradeNo", orgReqSeqId).last("limit 1"));
+            if (Objects.isNull(orderLogistics)) {
+                return;
+            }
+            if ("S".equalsIgnoreCase(transStat)) {
+                orderLogistics.setState(10);
+            }
+            orderLogisticsService.updateById(orderLogistics);
+            log.info("更新小件物流取消订单状态成功,更新内容“{}", JSONObject.toJSON(orderLogistics));
+            PrintWriter writer = null;
+            try {
+                writer = response.getWriter();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+            writer.print("200");
+            writer.close();
+        }
+    }
+    /**
+     * 斗拱主动取现接口回调
+     * @param request
+     * @param response
+     */
+    @PostMapping("/refund-crosscity")
+    public void refundCrossCity(HttpServletRequest request, HttpServletResponse response) {
+        String sign =request.getParameter("sign");
+        String resp_data = request.getParameter("resp_data");
+        log.info("斗拱用户提现回调响应内容:{}", resp_data);
+        // 使用汇付公钥验签
+        resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+        boolean verify = RsaUtils.verify(resp_data, huiFuProperties.getRsaPublicKey(), sign);
+        if(verify){
+            JSONObject respDataJson = JSONObject.parseObject(resp_data);
+            String reqSeqId = respDataJson.getString("req_seq_id");
+            String orgReqSeqId = respDataJson.getString("org_req_seq_id");
+            String transStat = respDataJson.getString("trans_stat");//S:成功 F:失败 P:处理中;示例值:S
+            OrderCrossCity orderCrossCity = orderCrossCityService.selectOne(new EntityWrapper<OrderCrossCity>()
+                    .eq("refundReqSeqId", reqSeqId).or().eq("outTradeNo", orgReqSeqId).last("limit 1"));
+            if (Objects.isNull(orderCrossCity)) {
+                return;
+            }
+            if ("S".equalsIgnoreCase(transStat)) {
+                orderCrossCity.setState(10);
+            }
+            orderCrossCityService.updateById(orderCrossCity);
+            log.info("更新跨城订单取消订单状态成功,更新内容“{}", JSONObject.toJSON(orderCrossCity));
+            PrintWriter writer = null;
+            try {
+                writer = response.getWriter();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+            writer.print("200");
+            writer.close();
         }
     }
 }
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongRefundBiz.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongRefundBiz.java
new file mode 100644
index 0000000..5a870f3
--- /dev/null
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongRefundBiz.java
@@ -0,0 +1,72 @@
+package com.stylefeng.guns.modular.huifu.biz;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huifu.bspay.sdk.opps.core.BasePay;
+import com.huifu.bspay.sdk.opps.core.config.MerConfig;
+import com.huifu.bspay.sdk.opps.core.net.BasePayRequest;
+import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 斗拱提现业务
+ * @author mitao
+ * @date 2025/11/21
+ */
+@Slf4j
+@Component
+public class DouGongRefundBiz {
+    @Autowired
+    private HuiFuProperties huiFuProperties;
+
+    @Value("${callbackPath}")
+    private String callbackPath;
+
+
+    /**
+     * 交易退款接口
+     *
+     * @param reqSeqId 请求流水号,同一huifu_id下当天唯一
+     * @param ordAmt 申请退款金额,单位元
+     * @param orgReqDate 原交易请求日期,格式yyyyMMdd
+     * @param orgReqSeqId 原交易请求流水号(三选一)
+     * @param type 类型 1:小件物流;2:跨城出行
+     * @return 请求结果
+     */
+    public Map<String, Object> refund(String reqSeqId, BigDecimal ordAmt, String orgReqDate, String orgReqSeqId, Integer type) throws Exception {
+        log.info("开始调用斗拱退款接口, 退款金额: {}",  ordAmt);
+        // 1. 数据初始化,填入对应的商户配置
+        MerConfig merConfig = new MerConfig();
+        merConfig.setProcutId(huiFuProperties.getProductId());
+        merConfig.setSysId(huiFuProperties.getSysId());
+        merConfig.setRsaPrivateKey(huiFuProperties.getRsaPrivateKey());
+        merConfig.setRsaPublicKey(huiFuProperties.getRsaPublicKey());
+        BasePay.initWithMerConfig(merConfig);
+        // 构建业务参数data
+        // 2.组装请求参数
+        Map<String, Object> data = new HashMap<>();
+        data.put("req_date", DateUtil.format(new Date(),"yyyyMMdd"));
+        data.put("req_seq_id", reqSeqId);
+        data.put("huifu_id", huiFuProperties.getSysId());
+        data.put("ord_amt", ordAmt.setScale(2, RoundingMode.HALF_UP).toString());
+        data.put("org_req_date", orgReqDate);
+        // 三选一参数:org_hf_seq_id,org_party_order_id,org_req_seq_id
+        data.put("org_req_seq_id", orgReqSeqId);
+        String notifyUrl = type.equals(1) ? "/base/dougong/refund-logistics" : "/base/dougong/refund-crosscity";
+        data.put("notify_url", callbackPath + notifyUrl);
+
+        // 发送HTTP请求 - POST JSON格式
+        Map<String, Object> response = BasePayRequest.requestBasePay("v4/trade/payment/scanpay/refund", data, null, false);
+        log.info("斗拱退款接口响应内容: {}", JSONObject.toJSONString(response));
+        return response;
+    }
+}
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java
new file mode 100644
index 0000000..6b55347
--- /dev/null
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java
@@ -0,0 +1,159 @@
+package com.stylefeng.guns.modular.huifu.biz;
+
+import com.huifu.bspay.sdk.opps.core.BasePay;
+import com.huifu.bspay.sdk.opps.core.config.MerConfig;
+import com.huifu.bspay.sdk.opps.core.net.BasePayRequest;
+import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 余额支付 - 示例
+ */
+
+public class FenZhangUtil {
+
+    @Autowired
+    private HuiFuProperties huiFuProperties;
+
+
+//    public static void main(String[] args) throws Exception {
+//        // 1. 数据初始化,填入对应的商户配置
+//        MerConfig merConfig = new MerConfig();
+////        merConfig.setProcutId(huiFuProperties.getProductId());
+////        merConfig.setSysId(huiFuProperties.getSysId());
+////        merConfig.setRsaPrivateKey(huiFuProperties.getRsaPrivateKey());
+////        merConfig.setRsaPublicKey(huiFuProperties.getRsaPublicKey());
+//        merConfig.setProcutId("KAZX");
+//        merConfig.setSysId("6666000182995771");
+//        merConfig.setRsaPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR6W3ynQJL7f2C8vFYMcQkcirpkif9ZhLq1374jIlV87nv0T9uIm6DoW8LyNEl9w2Yc5qoBv70tt/oVpemA6IZY6NXzE2USNi/sv2qUTtapcIRYxe4acCfY8K+x+p7W2e6wUWIpl9qgZA+UnFmHQ0HT6Ywzq2jJL92JdIs147Ud1aVi3aX8LYItj0z3ZKwZQkaJawZSWQk2+EdPfN059L2qFkPtnT7JIthAdUTJYZA13K4tzw6mXp/DbgwVmLhrlmwl/ccSv2Q0ABfEk7jIxF1nZmCmSy3HrEw9xWyrg1BC+DgXBdyF0OEtpNfv+UW080syUVBNN0irHVuDP81BaAjAgMBAAECggEAGlBZprZQErdxz6rWgYxADj6UpJjaI2XEJZwFZveZUOnqb2hyIv+MpKp5Z0upBErApey7SHAyjJlqWfE72hGvqxp/+7Z5izNz+2ZhPtT1ekyIajBPt89CkLwiA9vz2plKZLC0RIeUj5WcGNEvaDX3AomHtCehwtk+uiTp+XJKbOBtkkQszcdCGY1DVoQ0ppFoINnM9VLbEzaFaG7VS3eFkU4cf2CwcrnJB1RncyPFK+bGFvjkLM/eQbsh8YxkBqaGz/8UM1Na1SEidqdyUF71ltqnI0u8pLe0V+5jugVW+3lPL/p1C3i7mAbQOs4yqRWlFaGVTzOawoQUOPVwDpzeeQKBgQDs1P7F4wURqX1qZR0hSTqOigg48ychaOF66new3SuWk2CVBy8Q8b7odGSPyxJSGZvFLoznPYuSaXCtQ935WWfjB7Z5JpSWCi9BmJnkh41k/KvgMqAEGkZP6ul/zFnDWj94VwXEBz3TuRk574vK2coWoxjM6h1dlJjRBVVTs8dnrQKBgQCduKCjPDUuOHbcNn3VsaHEZX1XyiXN5gds08o61PjiHM42wYXxfUt59nBJmg2yAVRIrKYHfswJcxb5XUTDI5ZhCBnIPrdrQzj7FNadm/7mKDvSsvZdpfTiHY341XnvCq7OcNNj8g5fVsWF769strepQReSug7xgX7ojPvVcAZhDwKBgD57KwP2Er5IIuhQ6NCBS0uTqvurWqV70BDnjtBAaWF+XDq0/HvR63XUTzuIbbrvOqNY1p+jIxFrc+iiQQupxLimrkNkJEs5QKJjqiYahPkhmA68DG9Ip0gqR5QJy5y4UIplGwZOiscyzC72vcC0mJZETSSylzC7JV3vtEUy5ua5AoGAEwlDqjAMIyYBgpa5HV+xLKkrNbtaUL2gy8vMLsmhuHjNkuJMrlb3EyNhbiC/4moyqArehy0Qp1tSvIo7UGotLkzx/69CKBoW+IcNWDyJyXG1trqO7cKoCdqTViM98lIRwyzu9rMydONeN8o0HCT5id4nYDhAsXl1vc+2XY6F1pUCgYEA0dxGHBTKD/WzIvTYGYD6Xx224Y84mO6x2Mu16zFoq/NjuIdKi2O+92yrKDCMMCqaY77fXvWD3eI7QYYlbKAOqdLKVipTbhnBccDyNbtYHVg59t4xS+K6HyD+quVkL9n40UkxSZbKZBQhqt+vlQy0FUgONFii1ACZO0A8Sc/bvn4=");
+//        merConfig.setRsaPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB");
+//        BasePay.initWithMerConfig(merConfig);
+//
+//        // 2.组装请求参数
+//        Map<String, Object> paramsInfo = new HashMap<>();
+//        // 请求流水号
+//        paramsInfo.put("req_seq_id", "rQ20251119164316677154");
+//        // 请求日期
+//        paramsInfo.put("req_date", "20251119");
+//        // 出款方商户号
+//        paramsInfo.put("out_huifu_id", "6666000182995771");
+//        // 支付金额
+//        paramsInfo.put("ord_amt", "0.01");
+//        // 分账对象
+//        paramsInfo.put("acct_split_bunch", "{\"acct_infos\":[{\"div_amt\":\"0.01\",\"huifu_id\":\"6666000183361451\"}]}");
+//        // 安全信息
+//        paramsInfo.put("risk_check_data", "{\"sub_product\":\"1\",\"transfer_type\":\"05\"}");
+//        // 手续费承担方标识余额支付手续费承担方标识;商户余额支付扣收规则为接口指定承担方时必填!枚举值:&lt;br/&gt;OUT:出款方;&lt;br/&gt;IN:分账接受方。&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:IN&lt;/font&gt;
+//        paramsInfo.put("trans_fee_take_flag", "OUT");
+//        // 核验值verify_type不为空时必填。当verify_type&#x3D;SMS时,填写用户收到的短信验证码
+////        paramsInfo.put("verify_value", "test");
+//        // 3. 发起API调用
+//        Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay", paramsInfo, null, false);;
+//        System.out.println(response);
+//    }
+
+    public static  Map<String, Object> fenzhang(String req_seq_id,String req_date,String ord_amt,String huifu_id) throws Exception {
+        // 1. 数据初始化,填入对应的商户配置
+        MerConfig merConfig = new MerConfig();
+//        merConfig.setProcutId(huiFuProperties.getProductId());
+//        merConfig.setSysId(huiFuProperties.getSysId());
+//        merConfig.setRsaPrivateKey(huiFuProperties.getRsaPrivateKey());
+//        merConfig.setRsaPublicKey(huiFuProperties.getRsaPublicKey());
+        merConfig.setProcutId("KAZX");
+        merConfig.setSysId("6666000182995771");
+        merConfig.setRsaPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR6W3ynQJL7f2C8vFYMcQkcirpkif9ZhLq1374jIlV87nv0T9uIm6DoW8LyNEl9w2Yc5qoBv70tt/oVpemA6IZY6NXzE2USNi/sv2qUTtapcIRYxe4acCfY8K+x+p7W2e6wUWIpl9qgZA+UnFmHQ0HT6Ywzq2jJL92JdIs147Ud1aVi3aX8LYItj0z3ZKwZQkaJawZSWQk2+EdPfN059L2qFkPtnT7JIthAdUTJYZA13K4tzw6mXp/DbgwVmLhrlmwl/ccSv2Q0ABfEk7jIxF1nZmCmSy3HrEw9xWyrg1BC+DgXBdyF0OEtpNfv+UW080syUVBNN0irHVuDP81BaAjAgMBAAECggEAGlBZprZQErdxz6rWgYxADj6UpJjaI2XEJZwFZveZUOnqb2hyIv+MpKp5Z0upBErApey7SHAyjJlqWfE72hGvqxp/+7Z5izNz+2ZhPtT1ekyIajBPt89CkLwiA9vz2plKZLC0RIeUj5WcGNEvaDX3AomHtCehwtk+uiTp+XJKbOBtkkQszcdCGY1DVoQ0ppFoINnM9VLbEzaFaG7VS3eFkU4cf2CwcrnJB1RncyPFK+bGFvjkLM/eQbsh8YxkBqaGz/8UM1Na1SEidqdyUF71ltqnI0u8pLe0V+5jugVW+3lPL/p1C3i7mAbQOs4yqRWlFaGVTzOawoQUOPVwDpzeeQKBgQDs1P7F4wURqX1qZR0hSTqOigg48ychaOF66new3SuWk2CVBy8Q8b7odGSPyxJSGZvFLoznPYuSaXCtQ935WWfjB7Z5JpSWCi9BmJnkh41k/KvgMqAEGkZP6ul/zFnDWj94VwXEBz3TuRk574vK2coWoxjM6h1dlJjRBVVTs8dnrQKBgQCduKCjPDUuOHbcNn3VsaHEZX1XyiXN5gds08o61PjiHM42wYXxfUt59nBJmg2yAVRIrKYHfswJcxb5XUTDI5ZhCBnIPrdrQzj7FNadm/7mKDvSsvZdpfTiHY341XnvCq7OcNNj8g5fVsWF769strepQReSug7xgX7ojPvVcAZhDwKBgD57KwP2Er5IIuhQ6NCBS0uTqvurWqV70BDnjtBAaWF+XDq0/HvR63XUTzuIbbrvOqNY1p+jIxFrc+iiQQupxLimrkNkJEs5QKJjqiYahPkhmA68DG9Ip0gqR5QJy5y4UIplGwZOiscyzC72vcC0mJZETSSylzC7JV3vtEUy5ua5AoGAEwlDqjAMIyYBgpa5HV+xLKkrNbtaUL2gy8vMLsmhuHjNkuJMrlb3EyNhbiC/4moyqArehy0Qp1tSvIo7UGotLkzx/69CKBoW+IcNWDyJyXG1trqO7cKoCdqTViM98lIRwyzu9rMydONeN8o0HCT5id4nYDhAsXl1vc+2XY6F1pUCgYEA0dxGHBTKD/WzIvTYGYD6Xx224Y84mO6x2Mu16zFoq/NjuIdKi2O+92yrKDCMMCqaY77fXvWD3eI7QYYlbKAOqdLKVipTbhnBccDyNbtYHVg59t4xS+K6HyD+quVkL9n40UkxSZbKZBQhqt+vlQy0FUgONFii1ACZO0A8Sc/bvn4=");
+        merConfig.setRsaPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB");
+        BasePay.initWithMerConfig(merConfig);
+        ord_amt = new BigDecimal(ord_amt).toString();
+
+        // 2.组装请求参数
+        Map<String, Object> paramsInfo = new HashMap<>();
+        // 请求流水号
+        paramsInfo.put("req_seq_id",req_seq_id);
+        // 请求日期
+        paramsInfo.put("req_date", req_date);
+        // 出款方商户号
+        paramsInfo.put("out_huifu_id", "6666000182995771");
+        // 支付金额
+        paramsInfo.put("ord_amt", ord_amt);
+        // 分账对象
+        paramsInfo.put("acct_split_bunch", "{\"acct_infos\":[{\"div_amt\":\""+ord_amt+"\",\"huifu_id\":\""+huifu_id+"\"}]}");
+        // 安全信息
+        paramsInfo.put("risk_check_data", "{\"sub_product\":\"1\",\"transfer_type\":\"05\"}");
+        // 手续费承担方标识余额支付手续费承担方标识;商户余额支付扣收规则为接口指定承担方时必填!枚举值:&lt;br/&gt;OUT:出款方;&lt;br/&gt;IN:分账接受方。&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:IN&lt;/font&gt;
+        paramsInfo.put("trans_fee_take_flag", "OUT");
+        // 核验值verify_type不为空时必填。当verify_type&#x3D;SMS时,填写用户收到的短信验证码
+//        paramsInfo.put("verify_value", "test");
+        // 3. 发起API调用
+        Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay", paramsInfo, null, false);;
+    	return response;
+    }
+
+
+    public static  Map<String, Object> queryFenzhang(String req_seq_id,String req_date) throws Exception {
+        // 1. 数据初始化,填入对应的商户配置
+        MerConfig merConfig = new MerConfig();
+        merConfig.setProcutId("KAZX");
+        merConfig.setSysId("6666000182995771");
+        merConfig.setRsaPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR6W3ynQJL7f2C8vFYMcQkcirpkif9ZhLq1374jIlV87nv0T9uIm6DoW8LyNEl9w2Yc5qoBv70tt/oVpemA6IZY6NXzE2USNi/sv2qUTtapcIRYxe4acCfY8K+x+p7W2e6wUWIpl9qgZA+UnFmHQ0HT6Ywzq2jJL92JdIs147Ud1aVi3aX8LYItj0z3ZKwZQkaJawZSWQk2+EdPfN059L2qFkPtnT7JIthAdUTJYZA13K4tzw6mXp/DbgwVmLhrlmwl/ccSv2Q0ABfEk7jIxF1nZmCmSy3HrEw9xWyrg1BC+DgXBdyF0OEtpNfv+UW080syUVBNN0irHVuDP81BaAjAgMBAAECggEAGlBZprZQErdxz6rWgYxADj6UpJjaI2XEJZwFZveZUOnqb2hyIv+MpKp5Z0upBErApey7SHAyjJlqWfE72hGvqxp/+7Z5izNz+2ZhPtT1ekyIajBPt89CkLwiA9vz2plKZLC0RIeUj5WcGNEvaDX3AomHtCehwtk+uiTp+XJKbOBtkkQszcdCGY1DVoQ0ppFoINnM9VLbEzaFaG7VS3eFkU4cf2CwcrnJB1RncyPFK+bGFvjkLM/eQbsh8YxkBqaGz/8UM1Na1SEidqdyUF71ltqnI0u8pLe0V+5jugVW+3lPL/p1C3i7mAbQOs4yqRWlFaGVTzOawoQUOPVwDpzeeQKBgQDs1P7F4wURqX1qZR0hSTqOigg48ychaOF66new3SuWk2CVBy8Q8b7odGSPyxJSGZvFLoznPYuSaXCtQ935WWfjB7Z5JpSWCi9BmJnkh41k/KvgMqAEGkZP6ul/zFnDWj94VwXEBz3TuRk574vK2coWoxjM6h1dlJjRBVVTs8dnrQKBgQCduKCjPDUuOHbcNn3VsaHEZX1XyiXN5gds08o61PjiHM42wYXxfUt59nBJmg2yAVRIrKYHfswJcxb5XUTDI5ZhCBnIPrdrQzj7FNadm/7mKDvSsvZdpfTiHY341XnvCq7OcNNj8g5fVsWF769strepQReSug7xgX7ojPvVcAZhDwKBgD57KwP2Er5IIuhQ6NCBS0uTqvurWqV70BDnjtBAaWF+XDq0/HvR63XUTzuIbbrvOqNY1p+jIxFrc+iiQQupxLimrkNkJEs5QKJjqiYahPkhmA68DG9Ip0gqR5QJy5y4UIplGwZOiscyzC72vcC0mJZETSSylzC7JV3vtEUy5ua5AoGAEwlDqjAMIyYBgpa5HV+xLKkrNbtaUL2gy8vMLsmhuHjNkuJMrlb3EyNhbiC/4moyqArehy0Qp1tSvIo7UGotLkzx/69CKBoW+IcNWDyJyXG1trqO7cKoCdqTViM98lIRwyzu9rMydONeN8o0HCT5id4nYDhAsXl1vc+2XY6F1pUCgYEA0dxGHBTKD/WzIvTYGYD6Xx224Y84mO6x2Mu16zFoq/NjuIdKi2O+92yrKDCMMCqaY77fXvWD3eI7QYYlbKAOqdLKVipTbhnBccDyNbtYHVg59t4xS+K6HyD+quVkL9n40UkxSZbKZBQhqt+vlQy0FUgONFii1ACZO0A8Sc/bvn4=");
+        merConfig.setRsaPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB");
+        BasePay.initWithMerConfig(merConfig);
+        // 2.组装请求参数
+        Map<String, Object> paramsInfo = new HashMap<>();
+        // 商户号
+        paramsInfo.put("huifu_id", "6666000182995771");
+        // 原交易请求日期
+        paramsInfo.put("org_req_date", req_date);
+        // 原交易请求流水号
+        paramsInfo.put("org_req_seq_id", req_seq_id);
+        // 3. 发起API调用
+        Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay/query", paramsInfo, null, false);;
+        System.out.println(response);
+        return response;
+    }
+
+    public static Map<String, Object> payFromUser(String req_seq_id, String req_date, String ord_amt, String huifu_id) throws Exception {
+        // 1. 数据初始化,填入对应的商户配置
+        MerConfig merConfig = new MerConfig();
+//        merConfig.setProcutId(huiFuProperties.getProductId());
+//        merConfig.setSysId(huiFuProperties.getSysId());
+//        merConfig.setRsaPrivateKey(huiFuProperties.getRsaPrivateKey());
+//        merConfig.setRsaPublicKey(huiFuProperties.getRsaPublicKey());
+        merConfig.setProcutId("KAZX");
+        merConfig.setSysId("6666000182995771");
+        merConfig.setRsaPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR6W3ynQJL7f2C8vFYMcQkcirpkif9ZhLq1374jIlV87nv0T9uIm6DoW8LyNEl9w2Yc5qoBv70tt/oVpemA6IZY6NXzE2USNi/sv2qUTtapcIRYxe4acCfY8K+x+p7W2e6wUWIpl9qgZA+UnFmHQ0HT6Ywzq2jJL92JdIs147Ud1aVi3aX8LYItj0z3ZKwZQkaJawZSWQk2+EdPfN059L2qFkPtnT7JIthAdUTJYZA13K4tzw6mXp/DbgwVmLhrlmwl/ccSv2Q0ABfEk7jIxF1nZmCmSy3HrEw9xWyrg1BC+DgXBdyF0OEtpNfv+UW080syUVBNN0irHVuDP81BaAjAgMBAAECggEAGlBZprZQErdxz6rWgYxADj6UpJjaI2XEJZwFZveZUOnqb2hyIv+MpKp5Z0upBErApey7SHAyjJlqWfE72hGvqxp/+7Z5izNz+2ZhPtT1ekyIajBPt89CkLwiA9vz2plKZLC0RIeUj5WcGNEvaDX3AomHtCehwtk+uiTp+XJKbOBtkkQszcdCGY1DVoQ0ppFoINnM9VLbEzaFaG7VS3eFkU4cf2CwcrnJB1RncyPFK+bGFvjkLM/eQbsh8YxkBqaGz/8UM1Na1SEidqdyUF71ltqnI0u8pLe0V+5jugVW+3lPL/p1C3i7mAbQOs4yqRWlFaGVTzOawoQUOPVwDpzeeQKBgQDs1P7F4wURqX1qZR0hSTqOigg48ychaOF66new3SuWk2CVBy8Q8b7odGSPyxJSGZvFLoznPYuSaXCtQ935WWfjB7Z5JpSWCi9BmJnkh41k/KvgMqAEGkZP6ul/zFnDWj94VwXEBz3TuRk574vK2coWoxjM6h1dlJjRBVVTs8dnrQKBgQCduKCjPDUuOHbcNn3VsaHEZX1XyiXN5gds08o61PjiHM42wYXxfUt59nBJmg2yAVRIrKYHfswJcxb5XUTDI5ZhCBnIPrdrQzj7FNadm/7mKDvSsvZdpfTiHY341XnvCq7OcNNj8g5fVsWF769strepQReSug7xgX7ojPvVcAZhDwKBgD57KwP2Er5IIuhQ6NCBS0uTqvurWqV70BDnjtBAaWF+XDq0/HvR63XUTzuIbbrvOqNY1p+jIxFrc+iiQQupxLimrkNkJEs5QKJjqiYahPkhmA68DG9Ip0gqR5QJy5y4UIplGwZOiscyzC72vcC0mJZETSSylzC7JV3vtEUy5ua5AoGAEwlDqjAMIyYBgpa5HV+xLKkrNbtaUL2gy8vMLsmhuHjNkuJMrlb3EyNhbiC/4moyqArehy0Qp1tSvIo7UGotLkzx/69CKBoW+IcNWDyJyXG1trqO7cKoCdqTViM98lIRwyzu9rMydONeN8o0HCT5id4nYDhAsXl1vc+2XY6F1pUCgYEA0dxGHBTKD/WzIvTYGYD6Xx224Y84mO6x2Mu16zFoq/NjuIdKi2O+92yrKDCMMCqaY77fXvWD3eI7QYYlbKAOqdLKVipTbhnBccDyNbtYHVg59t4xS+K6HyD+quVkL9n40UkxSZbKZBQhqt+vlQy0FUgONFii1ACZO0A8Sc/bvn4=");
+        merConfig.setRsaPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB");
+        BasePay.initWithMerConfig(merConfig);
+
+        ord_amt=new BigDecimal(ord_amt).setScale(2, RoundingMode.HALF_UP).toString();
+
+        // 2.组装请求参数
+        Map<String, Object> paramsInfo = new HashMap<>();
+        // 请求流水号
+        paramsInfo.put("req_seq_id",req_seq_id);
+        // 请求日期
+        paramsInfo.put("req_date", req_date);
+        // 出款方商户号
+        paramsInfo.put("out_huifu_id", huifu_id);
+        // 支付金额
+        paramsInfo.put("ord_amt", ord_amt);
+        // 分账对象
+        paramsInfo.put("acct_split_bunch", "{\"acct_infos\":[{\"div_amt\":\"" + ord_amt + "\",\"huifu_id\":\"6666000182995771\"}]}");
+        // 安全信息
+        paramsInfo.put("risk_check_data", "{\"sub_product\":\"1\",\"transfer_type\":\"05\"}");
+        // 手续费承担方标识余额支付手续费承担方标识;商户余额支付扣收规则为接口指定承担方时必填!枚举值:&lt;br/&gt;OUT:出款方;&lt;br/&gt;IN:分账接受方。&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:IN&lt;/font&gt;
+        paramsInfo.put("trans_fee_take_flag", "OUT");
+        // 核验值verify_type不为空时必填。当verify_type&#x3D;SMS时,填写用户收到的短信验证码
+//        paramsInfo.put("verify_value", "test");
+        // 3. 发起API调用
+        Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay", paramsInfo, null, false);;
+        return response;
+    }
+}
+
+
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/model/OrderLogistics.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/model/OrderLogistics.java
index cb36952..be4e4e2 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/model/OrderLogistics.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/model/OrderLogistics.java
@@ -371,6 +371,19 @@
 
     @TableField("outTradeNo")
     private String outTradeNo;
+    /**
+     * 斗拱退款流水号
+     */
+    private String refundReqSeqId;
+
+
+    public String getRefundReqSeqId() {
+        return refundReqSeqId;
+    }
+
+    public void setRefundReqSeqId(String refundReqSeqId) {
+        this.refundReqSeqId = refundReqSeqId;
+    }
 
     public String getOutTradeNo() {
         return outTradeNo;
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
index 426c175..5a54529 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -5,11 +5,13 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.core.util.RequestSeqUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.account.controller.AppOrderController;
 import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper;
 import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
 import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil;
+import com.stylefeng.guns.modular.huifu.biz.DouGongRefundBiz;
 import com.stylefeng.guns.modular.smallLogistics.dao.OrderLogisticsMapper;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread;
@@ -147,6 +149,8 @@
     @Value("${callbackPath}")
     private String callbackPath;
 
+    @Autowired
+    private DouGongRefundBiz douGongRefundBiz;
     private static List<Integer> orderIds = new ArrayList<>();
 
 
@@ -1188,13 +1192,22 @@
                 boolean b = false;
                 System.out.println("支付方式:"+query.getPayType());
                 if(query.getPayType() == 1){//微信
-                    Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), orderLogistics.getId() + "_" + orderLogistics.getType(), query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
-                    System.out.println("map:"+map);
-                    if(!"SUCCESS".equals(map.get("return_code"))){
-                        return ResultUtil.error(map.get("return_msg"));
+                    //Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), orderLogistics.getId() + "_" + orderLogistics.getType(), query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
+                    //System.out.println("map:"+map);
+                    //if(!"SUCCESS".equals(map.get("return_code"))){
+                    //    return ResultUtil.error(map.get("return_msg"));
+                    //}
+                    String refundReqSeqId = RequestSeqUtil.generate("TK");
+                    Map<String, Object> refund = douGongRefundBiz.refund(refundReqSeqId, BigDecimal.valueOf(query.getAmount()), com.stylefeng.guns.core.util.DateUtil.format(query.getInsertTime(), "yyyyMMdd"), orderLogistics.getOutTradeNo(), 1);
+                    orderLogistics.setRefundReqSeqId(refundReqSeqId);
+                    if ("00000000".equals(refund.get("resp_code")) && "S".equals(refund.get("trans_stat"))) {
+                        orderLogistics.setState(10);
+                    }else if (!"00000000".equals(refund.get("resp_code"))) {
+                        return ResultUtil.error("订单取消失败:" + refund.get("resp_desc").toString());
                     }
+                    orderLogisticsMapper.updateById(orderLogistics);
                 }
-                if(query.getPayType()==4){
+              /*  if(query.getPayType()==4){
                     UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
                     userInfo.setBalance(userInfo.getBalance() + orderLogistics.getPayMoney());
                     userInfoService.updateById(userInfo);
@@ -1207,15 +1220,24 @@
                     orderLogistics.setCouponMoney(0.00);
                     // TODO 设置优惠券id回滚
 //                    orderLogistics.setCouponId(null);
-                }else if(query.getPayType()==2){//支付宝
-                    Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
+                }else */if(query.getPayType()==2){//支付宝
+                    //Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
                     UserCouponRecord userCouponRecord = userCouponRecordService.selectById(couponId);
                     userCouponRecord.setState(1);
                     userCouponRecordService.updateById(userCouponRecord);
                     orderLogistics.setCouponMoney(0.00);
-                    if(!"10000".equals(map.get("code"))){
-                        return ResultUtil.error(map.get("msg"));
+                    //if(!"10000".equals(map.get("code"))){
+                    //    return ResultUtil.error(map.get("msg"));
+                    //}
+                    String refundReqSeqId = RequestSeqUtil.generate("TK");
+                    Map<String, Object> refund = douGongRefundBiz.refund(refundReqSeqId, BigDecimal.valueOf(query.getAmount()), com.stylefeng.guns.core.util.DateUtil.format(query.getInsertTime(), "yyyyMMdd"), orderLogistics.getOutTradeNo(), 1);
+                    orderLogistics.setRefundReqSeqId(refundReqSeqId);
+                    if ("00000000".equals(refund.get("resp_code")) && "S".equals(refund.get("trans_stat"))) {
+                        orderLogistics.setState(10);
+                    }else if (!"00000000".equals(refund.get("resp_code"))) {
+                        return ResultUtil.error("订单取消失败:" + refund.get("resp_desc").toString());
                     }
+                    orderLogisticsMapper.updateById(orderLogistics);
                 }
 
 

--
Gitblit v1.7.1