From f85face731c824dab846a152900457662cf75d3a Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期六, 22 十一月 2025 18:09:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java                             |  251 ++++++++++++++++++++++++
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/WxMpConfig.java                          |   28 ++
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java   |    8 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java                        |   93 +++++++-
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserCallbackController.java                      |   47 ++++
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java                          |    2 
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java                      |   10 
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java |   49 ++++
 ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java                    |   15 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java                   |    4 
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java                        |   43 ++++
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java         |   14 +
 12 files changed, 528 insertions(+), 36 deletions(-)

diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
index fb9cff9..b45e660 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
@@ -104,6 +104,49 @@
         }
     }
 
+    @ResponseBody
+    @PostMapping("/DGReassignZfb")
+    public void DGReassignZfb(HttpServletRequest request, HttpServletResponse response){
+        try {
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            System.out.println(sign);
+            System.out.println(resp_data);
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+//            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
+
+
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat)){
+                    // TODO 司机云闪付 改派微信回调支付充值
+//                    String[] s = id.split("_");
+//                    if(Integer.valueOf(s[1]) == 3) {//跨城订单
+//                        System.out.println("跨城订单");
+//                        String[] split1 = s[0].split(",");
+//                        List<Reassign> reassigns = reassignService.selectBatchIds(Arrays.asList(split1));
+//                        cloudPay(reassigns.get(0).getOriginalDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
+//                    }else {
+//                        Reassign reassign = reassignService.selectById(s[0]);
+//                        cloudPay(reassign.getOriginalDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
+//                    }
+                    PrintWriter out = response.getWriter();
+                    out.write(200);
+                    out.flush();
+                    out.close();
+                    String[] split = out_trade_no.split("_");
+                    reassignService.payReassign(split[0], order_id, 2);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
 
 
 
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java
index 03ae23e..4e65aaf 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java
@@ -35,7 +35,7 @@
 
     @ResponseBody
     @PostMapping("/api/wx/getOpenId")
-    @ApiOperation(value = "获取最新版本数据", tags = {"司机端-个人中心"}, notes = "")
+    @ApiOperation(value = "获取最新openId", tags = {"司机端-个人中心"}, notes = "")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
             @ApiImplicitParam(value = "code", name = "code", required = true, dataType = "String"),
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
index 2453413..858771d 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java
@@ -327,6 +327,55 @@
             e.printStackTrace();
         }
     }
+    /**
+     * 完成订单微信支付 斗拱
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/base/DGPayCrossCityZfb")
+    public void DGPayCrossCityZfb(HttpServletRequest request, HttpServletResponse response){
+        try {
+
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            System.out.println(sign);
+            System.out.println(resp_data);
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+//            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String transaction_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat)){
+                    System.out.println("完成订单微信支付回调"+jsonObject);
+                    PrintWriter out = response.getWriter();
+                    out.write(200);
+                    out.flush();
+                    out.close();
+
+                    String[] split = out_trade_no.split("_");
+                    Integer id = Integer.valueOf(split[0]);
+                    Integer type = Integer.valueOf(split[1]);
+                    // TODO 司机云闪付 跨城出行微信回调支付充值
+//                    OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id);
+//                    if(Objects.isNull(orderCrossCity)){
+//                        System.out.println("该订单不存在");
+//                        throw new RuntimeException("该订单不存在");
+//                    }
+//                    cloudPay(orderCrossCity.getDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
+                    switch (type){
+                        case 3:
+                            orderCrossCityService.payOrderCrossCityCallback(id, transaction_id, 2);
+                            break;
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
 
 
     /**
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
index d11f225..44bf810 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
@@ -10,7 +10,10 @@
 import com.stylefeng.guns.modular.system.util.ResultUtil;
 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.security.KeyFactory;
 import java.security.PrivateKey;
 import java.security.Signature;
@@ -23,6 +26,7 @@
 /**
  * 斗拱支付工具类
  */
+@Component
 public class DouGongPayUtil {
 
     @Autowired
@@ -97,6 +101,7 @@
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
         String req_date = simpleDateFormat.format(new Date());
         String notifyUrl = "";
+        money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString();
         switch (callType) {
             case 1:
                 // 订单支付
@@ -165,14 +170,15 @@
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
         String req_date = simpleDateFormat.format(new Date());
         String notifyUrl = "";
+        money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString();
         switch (callType) {
             case 1:
                 // 订单支付
-                notifyUrl = callbackPath + "/base/wxPayCrossCity";
+                notifyUrl = callbackPath + "/base/DGPayCrossCityZfb";
                 break;
             case 2:
                 // 改派
-                notifyUrl = callbackPath +"/base/wxReassign";
+                notifyUrl = callbackPath +"/base/DGReassignZfb";
                 break;
         }
         String a = "{\n" +
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/WxMpConfig.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/WxMpConfig.java
new file mode 100644
index 0000000..33f9309
--- /dev/null
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/WxMpConfig.java
@@ -0,0 +1,28 @@
+package com.stylefeng.guns.modular.huifu.biz;
+
+import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WxMpConfig {
+    @Value("${wx.appid}")
+    private String appid;//微信appid
+ 
+    @Value("${wx.appSecret}")
+    private String Secret;
+ 
+ 
+    @Bean
+    public WxMpService wxMpService(){
+        WxMpService wxMpService = new WxMpServiceImpl();
+        WxMpInMemoryConfigStorage ConfigStorage = new WxMpInMemoryConfigStorage();
+        ConfigStorage.setAppId(appid);
+        ConfigStorage.setSecret(Secret);
+        wxMpService.setWxMpConfigStorage(ConfigStorage);
+        return wxMpService;
+    }
+}
\ No newline at end of file
diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java
index 6cf78d3..f76f802 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java
@@ -1,16 +1,14 @@
 package com.stylefeng.guns.modular.huifu.biz;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.*;
-
+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.huifu.bspay.sdk.opps.core.BasePay;
 import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
 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.util.HashMap;
+import java.util.Map;
 
 /**
  * 余额支付 - 示例
@@ -70,6 +68,7 @@
         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<>();
@@ -155,3 +154,5 @@
         return response;
     }
 }
+
+
diff --git a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java
index ae6fb7d..e4220d5 100644
--- a/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java
+++ b/ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCompanyServiceImpl.java
@@ -333,6 +333,10 @@
                     try {
 //                        AllocationResp allocationResp = AllocationExample.create(allocationReq);
                         Map<String, Object> fenzhang = FenZhangUtil.fenzhang(req_seq_id, seq_date, String.valueOf(sum), "1");
+                        String resp_code = fenzhang.get("resp_code").toString();
+                        if(!"00000000".equals(resp_code)){
+                            continue;
+                        }
                         System.out.println(company.getId() + "::" + company.getName() + "-----分账状态" + fenzhang.toString() + "--------------");
                         if (!"S".equals(fenzhang.get("trans_stat").toString())) {
                             List<Income> collect = state.stream().filter(e -> e.getUserType() == 1 && company.getId().equals(e.getObjectId())).collect(Collectors.toList());
@@ -406,6 +410,10 @@
                             Map<String, Object> fenzhang = FenZhangUtil.fenzhang(req_seq_id, seq_date, String.valueOf(sum), "1");
 //                            AllocationResp allocationResp = AllocationExample.create(allocationReq);
                             System.out.println(tDriver.getId() + "::" + tDriver.getName() + "-----分账状态" + fenzhang.toString() + "--------------");
+                            String resp_code = fenzhang.get("resp_code").toString();
+                            if(!"00000000".equals(resp_code)){
+                                continue;
+                            }
                             if (!"S".equals(fenzhang.get("trans_stat").toString())) {
                                 List<Income> collect1 = state.stream().filter(e -> e.getUserType() == 2 && tDriver.getId().equals(e.getObjectId())).collect(Collectors.toList());
                                 collect1.stream().forEach(e -> {
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
index dfa6bc6..9ecbc2d 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -141,6 +141,9 @@
     @Value("${pushMinistryOfTransport}")
     private boolean pushMinistryOfTransport;
 
+    @Value("${huifu.rsa_public_key}")
+    private String rsa_public_key;
+
 
 
 
@@ -1488,7 +1491,7 @@
 
 
     /**
-     * 斗拱回调  取消订单
+     * 斗拱回调  微信取消订单
      * @param request
      */
     @ResponseBody
@@ -1521,6 +1524,59 @@
                             break;
                         case 3:
                             orderCrossCityService.payCancelOrderCrossCity(id, order_id, 1,out_trade_no);
+                            break;
+                    }
+
+                    PrintWriter out = response.getWriter();
+                    out.print("success");
+                    out.flush();
+                    out.close();
+
+                }
+
+//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
+            }
+
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 斗拱回调  取消订单支付宝
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/base/DGCancelOrderTaxiZfb")
+    public void DGCancelOrderTaxiZfb(HttpServletRequest request, HttpServletResponse response){
+        try {
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            System.out.println(sign);
+            System.out.println(resp_data);
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+
+
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat)){
+                    String[] split = out_trade_no.split("_");
+                    Integer id = Integer.valueOf(split[0]);
+                    Integer type = Integer.valueOf(split[1]);
+                    switch (type){
+                        case 1:
+                            orderPrivateCarService.payCancelOrderPrivateCar(id, order_id, 2,out_trade_no);
+                            break;
+                        case 2:
+                            orderTaxiService.payCancelOrderTaxi(id, order_id, 2,out_trade_no);
+                            break;
+                        case 3:
+                            orderCrossCityService.payCancelOrderCrossCity(id, order_id, 2,out_trade_no);
                             break;
                     }
 
@@ -1627,7 +1683,7 @@
 
 
     /**
-     * 斗拱回调  支付
+     * 斗拱回调  微信支付
      * @param request
      */
     @ResponseBody
@@ -1667,6 +1723,65 @@
                             break;
                         case 5:
                             orderLogisticsService.payOrderLogisticsCallback(id, order_id, 1,out_trade_no);
+                            break;
+                    }
+
+                    PrintWriter out = response.getWriter();
+                    out.print("success");
+                    out.flush();
+                    out.close();
+
+                }
+
+//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
+            }
+
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 斗拱回调  支付宝支付
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/base/DGCallBackZfb")
+    public void DGCallBackZfb(HttpServletRequest request, HttpServletResponse response){
+        try {
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            System.out.println(sign);
+            System.out.println(resp_data);
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+
+
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String o = jsonObject.get("req_seq_id").toString();
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat)){
+                    String[] split = out_trade_no.split("_");
+                    Integer id = Integer.valueOf(split[0]);
+                    Integer type = Integer.valueOf(split[1]);
+                    switch (type){
+                        case 1:
+                            orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 2,out_trade_no);
+                            break;
+                        case 2:
+                            orderTaxiService.payOrderTaxiCallback(id, order_id, 2,0,out_trade_no);
+                            break;
+                        case 3:
+                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 2,null,out_trade_no);
+                            break;
+                        case 4:
+                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 2,out_trade_no);
+                            break;
+                        case 5:
+                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 2,out_trade_no);
                             break;
                     }
 
@@ -1817,7 +1932,7 @@
 
 
     /**
-     * 斗拱回调  支付小件物流差价支付回调
+     * 斗拱回调  微信支付小件物流差价支付回调
      * @param request
      */
     @ResponseBody
@@ -1840,6 +1955,44 @@
                     Integer id = Integer.valueOf(split[0]);
                     Integer type = Integer.valueOf(split[1]);
                     orderLogisticsService.payOrderLogisticsSpreadCallback(id, order_id, 1);
+
+                    PrintWriter out = response.getWriter();
+                    out.print("success");
+                    out.flush();
+                    out.close();
+
+                }
+
+//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 斗拱回调  支付宝支付小件物流差价支付回调
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/base/DGPayOrderLogisticsSpreadZfb")
+    public void DGPayOrderLogisticsSpreadZfb(HttpServletRequest request, HttpServletResponse response){
+        try {
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+            System.out.println("斗拱回调  支付小件物流差价支付回调:");
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat) && ToolUtil.isNotEmpty(out_trade_no)){
+                    String[] split = out_trade_no.split("_");
+                    Integer id = Integer.valueOf(split[0]);
+                    Integer type = Integer.valueOf(split[1]);
+                    orderLogisticsService.payOrderLogisticsSpreadCallback(id, order_id, 2);
 
                     PrintWriter out = response.getWriter();
                     out.print("success");
@@ -1996,12 +2149,48 @@
 
 
     /**
-     * 斗拱回调  购买出行卡支付回调
+     * 斗拱回调  微信购买出行卡支付回调
      * @param request
      */
     @ResponseBody
     @PostMapping("/base/DGPayTaxiCardPaymentSpread")
     public void DGPayTaxiCardPaymentSpread(HttpServletRequest request, HttpServletResponse response){
+        try {
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+            System.out.println("斗拱回调  购买出行卡支付回调:");
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat) && ToolUtil.isNotEmpty(out_trade_no)){
+                    out_trade_no = out_trade_no.split("_")[0];
+                    taxiCardService.payTaxiCardPaymentSpread(Integer.valueOf(out_trade_no), order_id);
+
+                    PrintWriter out = response.getWriter();
+                    out.print("success");
+                    out.flush();
+                    out.close();
+
+                }
+
+//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 斗拱回调  支付宝购买出行卡支付回调
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/base/DGPayTaxiCardPaymentSpreadZfb")
+    public void DGPayTaxiCardPaymentSpreadZfb(HttpServletRequest request, HttpServletResponse response){
         try {
             String sign =request.getParameter("sign");
             String resp_data = request.getParameter("resp_data");
@@ -2137,7 +2326,7 @@
 
 
     /**
-     *  斗拱 感谢费支付回调
+     *  斗拱 微信感谢费支付回调
      * @param request
      * @param response
      */
@@ -2189,6 +2378,58 @@
 
 
     /**
+     *  斗拱 支付宝感谢费支付回调
+     * @param request
+     * @param response
+     */
+    @ResponseBody
+    @PostMapping("/base/DGPayThankYouFeeZfb")
+    public void DGPayThankYouFeeZfb(HttpServletRequest request, HttpServletResponse response){
+        try {
+            String sign =request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            resp_data =  resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")");
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+            if(verify){
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if("S".equals(trans_stat) && ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
+
+                    String[] s = out_trade_no.split("_");
+                    switch (Integer.valueOf(s[1])){
+                        case 1:
+                            orderPrivateCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                        case 2:
+                            orderTaxiService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                        case 3:
+                            orderCrossCityService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                        case 4:
+                            orderLogisticsService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                        case 5:
+                            orderLogisticsService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                        case 6:
+                            orderCharteredCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                        case 7:
+                            orderCallService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no);
+                    }
+
+                    PrintWriter out = response.getWriter();
+                    out.print("success");
+                    out.flush();
+                    out.close();
+
+                }
+//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
      * 感谢费支付回调
      * @param request
      * @param response
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserCallbackController.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserCallbackController.java
index f02e175..8fac660 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserCallbackController.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserCallbackController.java
@@ -12,6 +12,7 @@
 import com.stylefeng.guns.modular.cloudPayment.example.DepositExample;
 import com.stylefeng.guns.modular.cloudPayment.req.DepositReq;
 import com.stylefeng.guns.modular.enums.PaymentTypeEnum;
+import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil;
 import com.stylefeng.guns.modular.system.model.Company;
 import com.stylefeng.guns.modular.system.model.UserInfo;
 import com.stylefeng.guns.modular.system.model.UserWithdrawal;
@@ -86,7 +87,51 @@
                     Integer id = Integer.valueOf(split[1]);
                     String payAmt = jsonObject.get("pay_amt").toString();
                     userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 1);
-                    appOrderController.createAllocationReqUser(1, Integer.valueOf(uid), 1, new BigDecimal(payAmt).divide(new BigDecimal(100)).doubleValue());
+//                    appOrderController.createAllocationReqUser(1, Integer.valueOf(uid), 1, new BigDecimal(payAmt).divide(new BigDecimal(100)).doubleValue());
+                    // cloudPay(Integer.valueOf(uid),map.get("total_fee"),map.get("transaction_id"),1);
+                    PrintWriter out = response.getWriter();
+                    out.write(200);
+                    out.flush();
+                    out.close();
+                }
+
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 斗拱充值回调函数
+     }
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/DGCancelUserBalanceZfb")
+    public void DGCancelUserBalanceZfb(HttpServletRequest request, HttpServletResponse response) {
+        try {
+            System.out.println("DG额充值回调函数");
+            String sign = request.getParameter("sign");
+            String resp_data = request.getParameter("resp_data");
+            System.out.println(sign);
+            System.out.println(resp_data);
+            resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;", ")");
+
+
+            boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign);
+
+            if (verify) {
+                JSONObject jsonObject = JSONObject.parseObject(resp_data);
+                String order_id = jsonObject.get("out_trans_id").toString();
+                String out_trade_no = jsonObject.get("req_seq_id").toString();
+                String trans_stat = jsonObject.get("trans_stat").toString();
+                if ("S".equals(trans_stat)) {
+                    String[] split = out_trade_no.split("_");
+                    Integer uid = Integer.valueOf(split[0]);
+                    Integer id = Integer.valueOf(split[1]);
+                    String payAmt = jsonObject.get("pay_amt").toString();
+                    userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 2);
+
                     // cloudPay(Integer.valueOf(uid),map.get("total_fee"),map.get("transaction_id"),1);
                     PrintWriter out = response.getWriter();
                     out.write(200);
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
index a4049d4..03952b0 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
@@ -256,7 +256,7 @@
         // 请求流水号
         paramsInfo.put("req_seq_id", "rQ20251119164316677154");
         // 请求日期
-        paramsInfo.put("req_date", "20251119");
+        paramsInfo.put("req_date", "20251121");
         // 出款方商户号
         paramsInfo.put("out_huifu_id", "6666000182995771");
         // 支付金额
@@ -269,6 +269,8 @@
         paramsInfo.put("trans_fee_take_flag", "OUT");
         // 核验值verify_type不为空时必填。当verify_type&#x3D;SMS时,填写用户收到的短信验证码
 //        paramsInfo.put("verify_value", "test");
+
+        System.out.println(paramsInfo);
         // 3. 发起API调用
         Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay", paramsInfo, null, false);;
         System.out.println(response);
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
index 8d671f2..f2f6301 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
@@ -5,32 +5,41 @@
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 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.ToolUtil;
 import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.security.KeyFactory;
 import java.security.PrivateKey;
 import java.security.Signature;
 import java.security.spec.PKCS8EncodedKeySpec;
 import java.text.SimpleDateFormat;
-import java.util.Base64;
-import java.util.Date;
-import java.util.TreeMap;
+import java.util.*;
 
 /**
  * 斗拱支付工具类
  */
 public class DouGongPayUtil {
 
-    @Autowired
-    private HuiFuProperties huiFuProperties;
+    @Value("${huifu.product_id}")
+    private static String productId;
+
+    @Value("${huifu.sys_id}")
+    private static String sysId;
+
+    @Value("${huifu.rsa_private_key}")
+    private static String privateKeyBase64;
 
 
-    @Value("${callbackPath}")
-    private static String callbackPath;//支付回调网关地址
+
+    private static String callbackPath = "http://221.182.45.100:8006";//支付回调网关地址
 
     public static void main(String[] args) throws Exception {
 
@@ -38,16 +47,17 @@
         String req_seq_id = System.currentTimeMillis() + ToolUtil.getRandomNumber(10);
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
         String req_date = simpleDateFormat.format(new Date());
-
+        String money ="0.01";
+        money =  new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString();
         String a = "{\n" +
                 "    \"req_seq_id\": \"" + req_seq_id + "\",\n" +
                 "    \"req_date\": \"" + req_date + "\",\n" +
                 "    \"huifu_id\": \"6666000182995771\",\n" +
                 "    \"trade_type\": \"A_NATIVE\",\n" +
-                "    \"trans_amt\": \"0.01\",\n" +
+                "    \"trans_amt\": \""+money+"\",\n" +
                 "    \"goods_desc\": \"test\",\n" +
                 "    \"remark\": \"嘉易行\",\n" +
-                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" +
+                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBackZfb"+"\",\n" +
                 "  }";
         // 去掉换行、空格等格式字符
         a = a.replaceAll("\\s", "");
@@ -65,10 +75,10 @@
                 "    \"req_date\": \"" + req_date + "\",\n" +
                 "    \"huifu_id\": \"6666000182995771\",\n" +
                 "    \"trade_type\": \"A_NATIVE\",\n" +
-                "    \"trans_amt\": \"0.01\",\n" +
+                "    \"trans_amt\": \""+money+"\",\n" +
                 "    \"goods_desc\": \"test\",\n" +
                 "    \"remark\": \"嘉易行\",\n" +
-                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" +
+                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBackZfb"+"\",\n" +
                 "  }\n" +
                 "}\n";
         System.out.println(p);
@@ -97,6 +107,8 @@
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
         String req_date = simpleDateFormat.format(new Date());
         String notifyUrl = "";
+
+        money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString();
         switch (callType) {
             case 1:
                 // 订单支付
@@ -120,7 +132,7 @@
                 break;
             case 6:
                 // 充值
-                notifyUrl = callbackPath + "/base/wxCancelUserBalance";
+                notifyUrl = callbackPath + "/base/DGCancelUserBalance";
                 break;
         }
         String a = "{\n" +
@@ -182,30 +194,32 @@
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
         String req_date = simpleDateFormat.format(new Date());
         String notifyUrl = "";
+
+        money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString();
         switch (callType) {
             case 1:
                 // 订单支付
-                notifyUrl = callbackPath + "/base/DGCallBack";
+                notifyUrl = callbackPath + "/base/DGCallBackZfb";
                 break;
             case 2:
                 // 支付小件物流差价支付回调
-                notifyUrl = callbackPath +"/base/DGPayOrderLogisticsSpread";
+                notifyUrl = callbackPath +"/base/DGPayOrderLogisticsSpreadZfb";
                 break;
             case 3:
                 // 购买出行卡支付回调
-                notifyUrl = callbackPath+"/base/DGPayTaxiCardPaymentSpread";
+                notifyUrl = callbackPath+"/base/DGPayTaxiCardPaymentSpreadZfb";
                 break;
             case 4:
                 // 感谢费支付回调
-                notifyUrl = callbackPath + "/base/DGPayThankYouFee";
+                notifyUrl = callbackPath + "/base/DGPayThankYouFeeZfb";
                 break;
             case 5:
                 // 取消订单
-                notifyUrl = callbackPath + "/base/DGCancelOrderTaxi";
+                notifyUrl = callbackPath + "/base/DGCancelOrderTaxiZfb";
                 break;
             case 6:
                 // 充值
-                notifyUrl = callbackPath + "/base/wxCancelUserBalance";
+                notifyUrl = callbackPath + "/base/DGCancelUserBalanceZfb";
                 break;
         }
         String a = "{\n" +
@@ -249,6 +263,47 @@
     }
 
 
+
+    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", "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 String sign(String data, String privateKeyBase64) {
         // Base64 --> Key
         try {
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
index 6fbda9b..b0c83b7 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -12,6 +12,8 @@
 import com.stylefeng.guns.core.util.JwtTokenUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.account.controller.AppOrderController;
+import com.stylefeng.guns.modular.account.dao.UserWithdrawalMapper;
+import com.stylefeng.guns.modular.account.server.UserWithdrawalService;
 import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil;
 import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.model.*;
@@ -124,6 +126,8 @@
     private boolean pushMinistryOfTransport;
 
     private String salt = "&a.s";
+    @Autowired
+    private UserWithdrawalService userWithdrawalService;
 
 
     /**
@@ -1072,6 +1076,7 @@
      */
     @Override
     public void payCancelUserBalance(Integer id, String order_id, Integer paymentRecordId, Integer type) throws Exception {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
         UserInfo userInfo = this.selectById(id);
         System.out.println("用户信息"+userInfo);
         PaymentRecord query = paymentRecordService.selectById(paymentRecordId);
@@ -1090,6 +1095,15 @@
                 paymentRecordService.updateById(query);
 
                 this.addCoupon(userInfo.getId(), query.getAmount(), userInfo.getCompanyId(), query.getId());//添加优惠券
+                String date = simpleDateFormat.format(new Date());
+
+
+                UserWithdrawal userWithdrawal1 = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
+                        .eq("phone", userInfo.getPhone()).eq("type", 1)
+                        .last("LIMIT 1"));
+                if(userWithdrawal1.getHuifuId()!=null){
+                    DouGongPayUtil.payFromUser(order_id,date,  query.getAmount().toString(), userWithdrawal1.getHuifuId());
+                }
 
             } else {
                 System.err.println("预支付数据异常(userId = " + id + ")");

--
Gitblit v1.7.1