From cc0d4d1110650d4a1722a62d58800af2c14811b2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 19 十一月 2025 10:27:03 +0800
Subject: [PATCH] 斗拱支付

---
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java         |    2 
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ResultUtil.java                          |   19 +
 DriverJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java                                       |   10 +
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java |    9 
 UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java                        |    8 
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java                            |   63 +++++++
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java                        |  238 ++++++++++++++++++++++++++
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/OrderCrossCityController.java   |   66 ++++++
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java         |   18 +
 DriverJYXTravel/guns-admin/pom.xml                                                                                       |    8 
 DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java                          |   47 +++++
 11 files changed, 465 insertions(+), 23 deletions(-)

diff --git a/DriverJYXTravel/guns-admin/pom.xml b/DriverJYXTravel/guns-admin/pom.xml
index f03f820..85e45f4 100644
--- a/DriverJYXTravel/guns-admin/pom.xml
+++ b/DriverJYXTravel/guns-admin/pom.xml
@@ -16,6 +16,14 @@
     <packaging>jar</packaging>
 
     <dependencies>
+
+        <!--weixin-->
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-mp</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
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 cc4238d..fb9cff9 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
@@ -1,6 +1,8 @@
 package com.stylefeng.guns.modular.api;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.huifu.bspay.sdk.opps.core.utils.RsaUtils;
 import com.stylefeng.guns.core.exception.GunsException;
 import com.stylefeng.guns.core.exception.ServiceExceptionEnum;
 import com.stylefeng.guns.core.util.ToolUtil;
@@ -59,6 +61,51 @@
 
 
 
+    @ResponseBody
+    @PostMapping("/DGReassign")
+    public void DGReassign(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, 1);
+                }
+            }
+        }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
new file mode 100644
index 0000000..03ae23e
--- /dev/null
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WinxinController.java
@@ -0,0 +1,63 @@
+package com.stylefeng.guns.modular.api;
+
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.model.Driver;
+import com.stylefeng.guns.modular.system.model.DriverService;
+import com.stylefeng.guns.modular.system.service.IDriverService;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.api.WxConsts;
+import me.chanjar.weixin.common.exception.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@Slf4j
+@RequestMapping("")
+public class WinxinController {
+
+    @Autowired
+    private WxMpService wxMpService;
+
+    @Autowired
+    private IDriverService driverService;
+
+    @ResponseBody
+    @PostMapping("/api/wx/getOpenId")
+    @ApiOperation(value = "获取最新版本数据", 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"),
+    })
+    public ResultUtil getOpenId(@RequestParam String code, HttpServletRequest request) {
+        try {
+            Integer uid = driverService.getUserIdFormRedis(request);
+            if (ToolUtil.isEmpty(code)) {
+                return ResultUtil.error("参数为空");
+            }
+            //未登录过获取openId进行授权
+            String openID = null;
+            WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);
+            openID = accessToken.getOpenId();
+            Driver driver = driverService.selectById(uid);
+            driver.setAppletsOpenId(openID);
+            driverService.updateById(driver);
+            return ResultUtil.success();
+        } catch (Exception e) {
+            // e.printStackTrace();    //尽量不要使用这个打印异常,会造成内存锁,使用log日志就好
+            return ResultUtil.error("获取openID异常");
+        }
+
+    }
+}
\ No newline at end of file
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 2e47e41..2453413 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
@@ -2,22 +2,20 @@
 
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.huifu.bspay.sdk.opps.core.utils.RsaUtils;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.account.model.TEnterpriseWithdrawal;
 import com.stylefeng.guns.modular.account.service.ITEnterpriseWithdrawalService;
 import com.stylefeng.guns.modular.account.service.UserWithdrawalService;
 import com.stylefeng.guns.modular.account.util.Base64Util;
 import com.stylefeng.guns.modular.cloudPayment.example.AllocationExample;
-import com.stylefeng.guns.modular.cloudPayment.example.DepositExample;
 import com.stylefeng.guns.modular.cloudPayment.req.AllocationReq;
-import com.stylefeng.guns.modular.cloudPayment.req.DepositReq;
-import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
 import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
 import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityInfoWrapper;
 import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper;
 import com.stylefeng.guns.modular.crossCity.warpper.OrderWarpper;
-import com.stylefeng.guns.modular.enums.PaymentTypeEnum;
 import com.stylefeng.guns.modular.system.model.Company;
 import com.stylefeng.guns.modular.system.model.Driver;
 import com.stylefeng.guns.modular.system.model.Reassign;
@@ -30,7 +28,6 @@
 import com.stylefeng.guns.modular.system.util.SystemException;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.unionpay.upyzt.resp.AllocationResp;
-import com.unionpay.upyzt.resp.DepositResp;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -42,8 +39,6 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.Map;
 import java.util.Objects;
 
@@ -266,9 +261,14 @@
             if(null == uid){
                 return ResultUtil.tokenErr();
             }
+            Driver driver = driverService.selectById(uid);
+            if(driver.getAppletsOpenId()==null && payType==1){
+                return ResultUtil.openIdError();
+            }
             switch (orderType){
+
                 case 3:
-                    return orderCrossCityService.payCrossCityOrder(payType, orderId, couponId, type);
+                    return orderCrossCityService.payCrossCityOrder(payType, orderId, couponId, type,driver.getAppletsOpenId());
             }
             return ResultUtil.success(new Object());
         }catch (Exception e){
@@ -278,6 +278,56 @@
     }
 
 
+    /**
+     * 完成订单微信支付 斗拱
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping("/base/DGPayCrossCity")
+    public void DGPayCrossCity(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, 1);
+                            break;
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
 
     /**
      * 完成订单微信支付回调
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
index 921c008..20572c5 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java
@@ -128,7 +128,7 @@
      * @return
      * @throws Exception
      */
-    ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type)throws Exception;
+    ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type, String openId)throws Exception;
 
 
     /**
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index b0a67cf..049ffd9 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -19,6 +19,7 @@
 import com.stylefeng.guns.modular.crossCity.server.ILineService;
 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.specialTrain.dao.OrderPrivateCarMapper;
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
 import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
@@ -762,7 +763,7 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception {
+    public ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type,String openId) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(orderId);
         if(orderCrossCity.getState() != 7){
             return ResultUtil.error("订单已被支付,不允许重复支付");
@@ -775,11 +776,13 @@
 
         String out_trade_no = orderId + "_3_" + UUIDUtil.getRandomCode(5);
         if(payType == 1){//微信支付
-            resultUtil = payMoneyUtil.weixinpay("完成订单", "", out_trade_no, orderMoney.toString(), "/base/wxPayCrossCity", "APP", "");
+//            resultUtil = payMoneyUtil.weixinpay("完成订单", "", out_trade_no, orderMoney.toString(), "/base/wxPayCrossCity", "APP", "");
+            DouGongPayUtil.wxPayOrder(orderMoney.toString(), openId, "完成订单", 3, String.valueOf(orderId), 1);
             paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据
         }
         if(payType == 2){//支付宝支付
-            resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", out_trade_no, orderMoney.toString(), "/base/aliPayCrossCity");
+//            resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", out_trade_no, orderMoney.toString(), "/base/aliPayCrossCity");
+            DouGongPayUtil.aliPayOrder(orderMoney.toString(), openId, "完成订单", 3, String.valueOf(orderId), 1);
             paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据
         }
         if(payType == 4){
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
new file mode 100644
index 0000000..d11f225
--- /dev/null
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongPayUtil.java
@@ -0,0 +1,238 @@
+package com.stylefeng.guns.modular.huifu.biz;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+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.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;
+
+/**
+ * 斗拱支付工具类
+ */
+public class DouGongPayUtil {
+
+    @Autowired
+    private HuiFuProperties huiFuProperties;
+
+
+    @Value("${callbackPath}")
+    private static String callbackPath;//支付回调网关地址
+
+    public static void main(String[] args) throws Exception {
+
+        HttpRequest post = HttpUtil.createPost("https://api.huifu.com/v4/trade/payment/create");
+        String req_seq_id = System.currentTimeMillis() + ToolUtil.getRandomNumber(10);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
+        String req_date = simpleDateFormat.format(new Date());
+
+        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" +
+                "    \"goods_desc\": \"test\",\n" +
+                "    \"remark\": \"嘉易行\",\n" +
+                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" +
+                "  }";
+        // 去掉换行、空格等格式字符
+        a = a.replaceAll("\\s", "");
+
+
+        a = JSON.toJSONString(JSONObject.parseObject(a, TreeMap.class));
+        String sign = sign(a, "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=");
+        System.out.println(a);
+        String p = "{\n" +
+                "  \"sys_id\": \"6666000182995771\",\n" +
+                "  \"product_id\": \"KAZX\",\n" +
+                "  \"sign\": \"" + sign + "\",\n" +
+                "  \"data\": {\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" +
+                "    \"goods_desc\": \"test\",\n" +
+                "    \"remark\": \"嘉易行\",\n" +
+                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" +
+                "  }\n" +
+                "}\n";
+        System.out.println(p);
+        post.body(p);
+
+        HttpResponse execute = post.execute();
+        System.out.println(execute.body());
+        String body = execute.body();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        System.out.println(jsonObject);
+    }
+
+
+    /**
+     * 订单支付微信
+     * @param money
+     * @param openId
+     * @param goodsDesc
+     * @param type
+     * @param orderId
+     * @return
+     */
+    public static ResultUtil wxPayOrder(String money, String openId, String goodsDesc, int type, String orderId, int callType) {
+        HttpRequest post = HttpUtil.createPost("https://api.huifu.com/v4/trade/payment/create");
+        String req_seq_id = orderId + "_" + type + "_" + System.currentTimeMillis() + ToolUtil.getRandomNumber(10);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
+        String req_date = simpleDateFormat.format(new Date());
+        String notifyUrl = "";
+        switch (callType) {
+            case 1:
+                // 订单支付
+                notifyUrl = callbackPath + "/base/DGPayCrossCity";
+                break;
+            case 2:
+                // 改派
+                notifyUrl = callbackPath +"/base/DGReassign";
+                break;
+        }
+        String a = "{\n" +
+                "    \"req_seq_id\": \"" + req_seq_id + "\",\n" +
+                "    \"req_date\": \"" + req_date + "\",\n" +
+                "    \"huifu_id\": \"6666000182995771\",\n" +
+                "    \"trade_type\": \"T_MINIAPP\",\n" +
+                "    \"trans_amt\": \"" + money + "\",\n" +
+                "    \"goods_desc\": \"" + goodsDesc + "\",\n" +
+                "    \"remark\": \"嘉易行\",\n" +
+                "    \"notify_url\": \""+notifyUrl+"\",\n" +
+                "    \"method_expand\": \"{\\\"sub_openid\\\":\\\"" + openId + "\\\"}\"\n" +
+                "  }";
+        // 去掉换行、空格等格式字符
+        a = a.replaceAll("\\s", "");
+
+
+        a = JSON.toJSONString(JSONObject.parseObject(a, TreeMap.class));
+        String sign = sign(a, "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=");
+        System.out.println(a);
+        String p = "{\n" +
+                "  \"sys_id\": \"6666000182995771\",\n" +
+                "  \"product_id\": \"KAZX\",\n" +
+                "  \"sign\": \"" + sign + "\",\n" +
+                "  \"data\": {\n" +
+                "    \"req_seq_id\": \"" + req_seq_id + "\",\n" +
+                "    \"req_date\": \"" + req_date + "\",\n" +
+                "    \"huifu_id\": \"6666000182995771\",\n" +
+                "    \"trade_type\": \"T_MINIAPP\",\n" +
+                "    \"trans_amt\": \"" + money + "\",\n" +
+                "    \"goods_desc\": \"" + goodsDesc + "\",\n" +
+                "    \"remark\": \"嘉易行\",\n" +
+                "    \"notify_url\": \""+notifyUrl+"\",\n" +
+                "    \"method_expand\": \"{\\\"sub_openid\\\":\\\"" + openId + "\\\"}\"\n" +
+                "  }\n" +
+                "}\n";
+        System.out.println(p);
+        post.body(p);
+
+        HttpResponse execute = post.execute();
+        System.out.println(execute.body());
+        JSONObject jsonObject = JSONObject.parseObject(execute.body());
+        return ResultUtil.success(jsonObject);
+    }
+
+    /**
+     * 订单支付 支付宝
+     * @param money
+     * @param buyerId
+     * @param goodsDesc
+     * @param type
+     * @param orderId
+     * @return
+     */
+    public static ResultUtil aliPayOrder(String money, String buyerId, String goodsDesc, int type, String orderId, int callType) {
+        HttpRequest post = HttpUtil.createPost("https://api.huifu.com/v4/trade/payment/create");
+        String req_seq_id = orderId + "_" + type + "_" + System.currentTimeMillis() + ToolUtil.getRandomNumber(10);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
+        String req_date = simpleDateFormat.format(new Date());
+        String notifyUrl = "";
+        switch (callType) {
+            case 1:
+                // 订单支付
+                notifyUrl = callbackPath + "/base/wxPayCrossCity";
+                break;
+            case 2:
+                // 改派
+                notifyUrl = callbackPath +"/base/wxReassign";
+                break;
+        }
+        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\": \"" + money + "\",\n" +
+                "    \"goods_desc\": \"" + goodsDesc + "\",\n" +
+                "    \"remark\": \"嘉易行\",\n" +
+                "    \"notify_url\": \""+notifyUrl+"\",\n" +
+                "  }";
+        // 去掉换行、空格等格式字符
+        a = a.replaceAll("\\s", "");
+
+
+        a = JSON.toJSONString(JSONObject.parseObject(a, TreeMap.class));
+        String sign = sign(a, "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=");
+        System.out.println(a);
+        String p = "{\n" +
+                "  \"sys_id\": \"6666000182995771\",\n" +
+                "  \"product_id\": \"KAZX\",\n" +
+                "  \"sign\": \"" + sign + "\",\n" +
+                "  \"data\": {\n" +
+                "    \"req_seq_id\": \"" + req_seq_id + "\",\n" +
+                "    \"req_date\": \"" + req_date + "\",\n" +
+                "    \"huifu_id\": \"6666000182995771\",\n" +
+                "    \"trade_type\": \"A_NATIVE\",\n" +
+                "    \"trans_amt\": \"" + money + "\",\n" +
+                "    \"goods_desc\": \"" + goodsDesc + "\",\n" +
+                "    \"remark\": \"嘉易行\",\n" +
+                "    \"notify_url\": \""+notifyUrl+"\",\n" +
+                "  }\n" +
+                "}\n";
+        System.out.println(p);
+        post.body(p);
+
+        HttpResponse execute = post.execute();
+        JSONObject jsonObject = JSONObject.parseObject(execute.body());
+        return ResultUtil.success(jsonObject);
+    }
+
+
+    public static String sign(String data, String privateKeyBase64) {
+        // Base64 --> Key
+        try {
+            byte[] bytes = Base64.getDecoder().decode(privateKeyBase64);
+            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(bytes);
+            KeyFactory keyFactory;
+            keyFactory = KeyFactory.getInstance("RSA");
+            PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
+            // Sign
+            Signature signature = Signature.getInstance("SHA256WithRSA");
+            signature.initSign(privateKey);
+            signature.update(data.getBytes("UTF-8"));
+            return Base64.getEncoder().encodeToString(signature.sign());
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+
+}
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
index cfa2773..6984f98 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -16,6 +16,7 @@
 import com.stylefeng.guns.modular.cloudPayment.req.AllocationReq;
 import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
 import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
+import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService;
@@ -125,6 +126,12 @@
         reassign.setRemark(content);
         ResultUtil resultUtil = ResultUtil.success();
         Driver driver = driverService.selectById(uid);
+        if(null == driver){
+            return ResultUtil.error("司机不存在");
+        }
+        if(driver.getAppletsOpenId()==null && reassign.getPayType() == 1){
+            return ResultUtil.openIdError();
+        }
         // TODO: 2020/11/12 司机端不控制重复提交(如果重复提交且未支付,直接将之前的数据删除)
 //        Reassign query = reassignMapper.query(uid, null, null, null, 1);
 //        if(null != query){
@@ -152,15 +159,18 @@
 
         //开始支付
         if(null != reassign.getPayType()){
-            if(reassign.getPayType() == 1){//微信支付
-                reassign.setState(1);
 
-                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/wxReassign", "APP", "");
+            if(reassign.getPayType() == 1){//微信支付
+
+                reassign.setState(1);
+//                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/wxReassign", "APP", "");
+                resultUtil =  DouGongPayUtil.wxPayOrder(aDouble.toString(), driver.getAppletsOpenId(), "改派订单", reassign.getOrderType(), String.valueOf(reassign.getId()), 2);
                 paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, "", 1);//添加预支付数据
             }
             if(reassign.getPayType() == 2){//支付宝
                 reassign.setState(1);
-                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/aliReassign");
+//                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/aliReassign");
+                resultUtil =  DouGongPayUtil.aliPayOrder(aDouble.toString(), driver.getAppletsOpenId(), "改派订单", reassign.getOrderType(), String.valueOf(reassign.getId()), 2);
                 paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, "", 1);//添加预支付数据
             }
             if(reassign.getPayType() == 3){//余额
diff --git a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ResultUtil.java b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ResultUtil.java
index beed93b..7b51299 100644
--- a/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ResultUtil.java
+++ b/DriverJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ResultUtil.java
@@ -22,6 +22,8 @@
 
     public static final Integer SIGN_ERROR = 700;
 
+    public static final Integer OPENID_ERROR = 800;
+
     public static final String Token = "TOKEN_INVALID";
 
     public static final String SIGN = "SIGN_INVALID";
@@ -79,19 +81,22 @@
     }
 
     /**
+     * token失效
+     * @return
+     */
+    public static ResultUtil tokenErr(){
+        return ResultUtil.getResult(ResultUtil.TOKEN_ERROR, ResultUtil.Token, new JSONObject());
+    }
+
+    /**
      * 错误信息
      * @return
      */
     public static <T> ResultUtil<T> error(String mag, T obj){
         return ResultUtil.getResult(ResultUtil.ERROR, mag, obj);
     }
-
-    /**
-     * token失效
-     * @return
-     */
-    public static ResultUtil tokenErr(){
-        return ResultUtil.getResult(ResultUtil.TOKEN_ERROR, ResultUtil.Token, new JSONObject());
+    public static ResultUtil openIdError(){
+        return ResultUtil.getResult(ResultUtil.OPENID_ERROR, "请获取OpenId", new JSONObject());
     }
 
     /**
diff --git a/DriverJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java b/DriverJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
index 0347ac2..2b3838b 100644
--- a/DriverJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
+++ b/DriverJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
@@ -47,6 +47,16 @@
         }
         return sb.toString();
     }
+    public static String getRandomNumber(int length) {
+        String base = "0123456789";
+        Random random = new Random();
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < length; i++) {
+            int number = random.nextInt(base.length());
+            sb.append(base.charAt(number));
+        }
+        return sb.toString();
+    }
 
     /**
      * 判断一个对象是否是时间类型
diff --git a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java
index 64fe1bd..7402247 100644
--- a/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java
+++ b/UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java
@@ -211,6 +211,14 @@
                 // 感谢费支付回调
                 notifyUrl = callbackPath + "/base/DGPayThankYouFee";
                 break;
+            case 5:
+                // 取消订单
+                notifyUrl = callbackPath + "/base/DGCancelOrderTaxi";
+                break;
+            case 6:
+                // 充值
+                notifyUrl = callbackPath + "/base/wxCancelUserBalance";
+                break;
         }
         String a = "{\n" +
                 "    \"req_seq_id\": \"" + req_seq_id + "\",\n" +

--
Gitblit v1.7.1