liujie
2025-11-18 0c8f0db0929d824c89ffe72d659f2470463d0f9a
update
5个文件已添加
5个文件已修改
622 ■■■■■ 已修改文件
DriverJYXTravel/.idea/.gitignore 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverJYXTravel/.idea/compiler.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverJYXTravel/.idea/encodings.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverJYXTravel/.idea/jarRepositories.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverJYXTravel/.idea/misc.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/pom.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java 251 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/src/main/resources/application.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverJYXTravel/.idea/.gitignore
New file
@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
DriverJYXTravel/.idea/compiler.xml
New file
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <annotationProcessing>
      <profile name="Maven default annotation processors profile" enabled="true">
        <sourceOutputDir name="target/generated-sources/annotations" />
        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
        <outputRelativeToContentRoot value="true" />
        <module name="guns-core" />
        <module name="guns-rest" />
        <module name="guns-generator" />
      </profile>
    </annotationProcessing>
  </component>
  <component name="JavacSettings">
    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
      <module name="guns-admin" options="-parameters" />
      <module name="guns-core" options="-parameters" />
      <module name="guns-generator" options="-parameters" />
      <module name="guns-rest" options="-parameters" />
    </option>
  </component>
</project>
DriverJYXTravel/.idea/encodings.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding">
    <file url="file://$PROJECT_DIR$/guns-core/src/main/java" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-generator/src/main/java" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-rest/src/main/java" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
  </component>
</project>
DriverJYXTravel/.idea/jarRepositories.xml
New file
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RemoteRepositoriesConfiguration">
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Central Repository" />
      <option name="url" value="https://repo.maven.apache.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Maven Central repository" />
      <option name="url" value="https://repo1.maven.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="jboss.community" />
      <option name="name" value="JBoss Community repository" />
      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
    </remote-repository>
  </component>
</project>
DriverJYXTravel/.idea/misc.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ExternalStorageConfigurationManager" enabled="true" />
  <component name="MavenProjectsManager">
    <option name="originalFiles">
      <list>
        <option value="$PROJECT_DIR$/pom.xml" />
      </list>
    </option>
  </component>
  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK" />
</project>
UserJYXTravel/guns-admin/pom.xml
@@ -16,6 +16,8 @@
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
@@ -209,10 +211,11 @@
            <scope>system</scope>
            <systemPath>${pom.basedir}/lib/upyzt-sdk-1.3.6.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.0.3</version>
            <version>4.6.7</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
@@ -232,12 +235,16 @@
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
        </dependency>-->
        <!--斗拱sdk-->
        <dependency>
            <groupId>com.huifu.bspay.sdk</groupId>
            <artifactId>dg-java-sdk</artifactId>
            <version>3.0.31</version>
        </dependency>
    </dependencies>
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -3,6 +3,7 @@
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.CharteredCar.server.IOrderCharteredCarService;
import com.stylefeng.guns.modular.account.model.TEnterpriseWithdrawal;
@@ -46,8 +47,13 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -1481,7 +1487,58 @@
    /**
     * 斗拱回调  取消订单
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/DGCancelOrderTaxi")
    public void DGCancelOrderTaxi(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, 1);
                            break;
                        case 2:
                            orderTaxiService.payCancelOrderTaxi(id, order_id, 1);
                            break;
                        case 3:
                            orderCrossCityService.payCancelOrderCrossCity(id, order_id, 1);
                            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();
        }
    }
@@ -1567,6 +1624,90 @@
        }
    }
    /**
     * 斗拱回调  支付
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/DGCallBack")
    public void DGCallBack(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, 1);
                            break;
                        case 2:
                            orderTaxiService.payOrderTaxiCallback(id, order_id, 1,0);
                            break;
                        case 3:
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 1,null);
                            break;
                        case 4:
                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 1);
                            break;
                        case 5:
                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 1);
                            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();
        }
    }
    public final String getBody(HttpServletRequest request) {
        InputStreamReader in = null;
        try {
            in = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8);
            StringBuffer bf = new StringBuffer();
            int len;
            char[] chs = new char[1024];
            while ((len = in.read(chs)) != -1) {
                bf.append(new String(chs, 0, len));
            }
            return bf.toString();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != in) {
                try {
                    in.close();
                } catch (Exception e) {
                }
            }
        }
        return null;
    }
    /**
     * 完成订单微信支付回调
@@ -1676,6 +1817,46 @@
    /**
     * 斗拱回调  支付小件物流差价支付回调
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/DGPayOrderLogisticsSpread")
    public void DGPayOrderLogisticsSpread(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, 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
     */
@@ -1737,6 +1918,8 @@
            e.printStackTrace();
        }
    }
    /**
     * 取消订单微信退款成功回调
@@ -1811,6 +1994,45 @@
    }
    /**
     * 斗拱回调  购买出行卡支付回调
     * @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
@@ -1828,7 +2050,7 @@
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                System.out.println(out_trade_no+"_"+order_id);
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){
                if(ToolUtil.isNotEmpty(out_trade_no)){
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
@@ -1913,6 +2135,59 @@
    }
    /**
     *  斗拱 感谢费支付回调
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/DGPayThankYouFee")
    public void DGPayThankYouFee(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, 1);
                        case 2:
                            orderTaxiService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 1);
                        case 3:
                            orderCrossCityService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 1);
                        case 4:
                            orderLogisticsService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 1);
                        case 5:
                            orderLogisticsService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 1);
                        case 6:
                            orderCharteredCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 1);
                        case 7:
                            orderCallService.payThankYouFeeCallback(Integer.valueOf(s[0]), 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
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DouGongPayUtil.java
@@ -5,21 +5,30 @@
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.huifu.bspay.sdk.opps.core.BasePay;
import com.huifu.bspay.sdk.opps.core.config.MerConfig;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.stylefeng.guns.core.util.HttpUtils;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.huifu.biz.DouGongBasicDataBiz;
import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties;
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;
import static com.aliyun.oss.model.RoutingRule.Protocol.Http;
@@ -31,62 +40,27 @@
    @Autowired
    private HuiFuProperties huiFuProperties;
    public static void main(String[] args) throws Exception {
//        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);
//        request.setReqDate(DateTools.getCurrentDateYYYYMMDD());// 请求日期
//        request.setReqSeqId(SequenceTools.getReqSeqId32()); // 请求流水号
//        request.setHuifuId("6666000109111111"); // 商户号
//        request.setGoodsDesc("上海合力批发站(货款)");// 商品描述
//        request.setTransAmt("20.00"); // 交易金额
//        request.setRemark("JSPAY:ID:102");//交易备注
//// 设置超时时间
//        request.setTimeExpire("20250916202931");
//// 设置异步通知地址
//        request.setNotifyUrl("https:/www.demoSite.com/api/public/hf/smstorecallback");
//// 延迟交易能力 延迟入账标识
//        request.setDelayAcctFlag("N");
//// 实时分账能力 设置分账信息,需要分账权限
//// request.setAcctSplitBunch("{\"acct_infos\":[{\"div_amt\":\"4.00\",\"huifu_id\":\"666600016871111\"}," +
////                           "{\"div_amt\":\"16.00\",\"huifu_id\":\"6666000169391112\"}]}");
//
////以下为微信小程序需要的参数
//        ObjectMapper objectMapper = JacksonUtils.getInstance();
//        String wxDataString="";
//// {"sub_appid":"wxa350b4c0fd003192","sub_openid":"o4n3E6q8MOEQefCsGKVOAh40spNw"}
//        WxData wxData = new WxData();
//        wxData.setSubOpenid("o8jhotzittQSeFF-N0Yj4Hz91Rqc");
//        wxData.setSubAppid("wx4f4f5a5f5a5f5aFF");
////微信相关参数可参考官方文档 https://pay.weixin.qq.com/doc/v2/merchant/4011935214
////复杂{"body":"香土鸡餐馆:线下支付","detail":{"cost_price":"1.0","goods_detail":[{"goods_id":"1967776038541551111","goods_name":"香土鸡餐馆:线下支付","price":"1.0","quantity":1}],"receipt_id":"1970743410445500000"},"scene_info":{"store_info":{"id":"1967776038541550000","name":"香土鸡餐馆:线下支付"}},"sub_appid":"wx969f2ef2df1111","sub_openid":"oqVX87O2I2U3rT-BBBBBBBB-YsU"}
//        wxDataString = objectMapper.writeValueAsString(wxData);
//        request.setTradeType("T_MINIAPP"); // 交易类型 - 微信小程序
//        Map<String, Object> response = Factory.Payment.Common()
//                .optional("method_expand",wxDataString).create(request);
//        System.out.println("T_JSAPI返回数据:" + JacksonUtils.convert2JsonString(response));
    @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 a ="{\n" +
                "    \"req_seq_id\": \"20250828150630498989712913\",\n" +
                "    \"req_date\": \"20251117\",\n" +
        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_JSAPI\",\n" +
                "    \"combinedpay_data\": \"\",\n" +
                "    \"trade_type\": \"A_NATIVE\",\n" +
                "    \"trans_amt\": \"0.01\",\n" +
                "    \"goods_desc\": \"支付宝Native\",\n" +
                "    \"remark\": \"交易备注\",\n" +
                "    \"time_expire\": \"\",\n" +
                "    \"delay_acct_flag\": \"N\",\n" +
                "    \"fee_flag\": \"\",\n" +
                "    \"acct_split_bunch\": \"\",\n" +
                "    \"terminal_device_data\": \"{\\\"device_ip\\\":\\\"172.28.52.52\\\",\\\"devs_id\\\":\\\"SPINTP104120617260257\\\"}\",\n" +
                "    \"notify_url\": \"\",\n" +
                "    \"method_expand\": \"{\\\"buyer_logon_id\\\":\\\"17828262728\\\"}\"\n" +
                "    \"goods_desc\": \"test\",\n" +
                "    \"remark\": \"嘉易行\",\n" +
                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" +
                "  }";
        // 去掉换行、空格等格式字符
        a = a.replaceAll("\\s", "");
@@ -94,28 +68,20 @@
        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" +
        String p = "{\n" +
                "  \"sys_id\": \"6666000182995771\",\n" +
                "  \"product_id\": \"KAZX\",\n" +
                "  \"sign\": \""+sign+"\",\n" +
                "  \"sign\": \"" + sign + "\",\n" +
                "  \"data\": {\n" +
                "    \"req_seq_id\": \"20250828150630498989712913\",\n" +
                "    \"req_date\": \"20251117\",\n" +
                "    \"req_seq_id\": \"" + req_seq_id + "\",\n" +
                "    \"req_date\": \"" + req_date + "\",\n" +
                "    \"huifu_id\": \"6666000182995771\",\n" +
                "    \"trade_type\": \"A_JSAPI\",\n" +
                "    \"combinedpay_data\": \"\",\n" +
                "    \"trade_type\": \"A_NATIVE\",\n" +
                "    \"trans_amt\": \"0.01\",\n" +
                "    \"goods_desc\": \"支付宝Native\",\n" +
                "    \"remark\": \"交易备注\",\n" +
                "    \"time_expire\": \"\",\n" +
                "    \"delay_acct_flag\": \"N\",\n" +
                "    \"fee_flag\": \"\",\n" +
                "    \"acct_split_bunch\": \"\",\n" +
                "    \"terminal_device_data\": \"{\\\"device_ip\\\":\\\"172.28.52.52\\\",\\\"devs_id\\\":\\\"SPINTP104120617260257\\\"}\",\n" +
                "    \"notify_url\": \"\",\n" +
                "    \"method_expand\": \"{\\\"buyer_logon_id\\\":\\\"17828262728\\\"}\"\n" +
                "    \"goods_desc\": \"test\",\n" +
                "    \"remark\": \"嘉易行\",\n" +
                "    \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" +
                "  }\n" +
                "}\n";
        System.out.println(p);
@@ -125,6 +91,156 @@
        System.out.println(execute.body());
    }
    /**
     * 订单支付微信
     * @param money
     * @param openId
     * @param goodsDesc
     * @param type
     * @param orderId
     * @return
     */
    public static String 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/DGCallBack";
                break;
            case 2:
                // 支付小件物流差价支付回调
                notifyUrl = callbackPath +"/base/DGPayOrderLogisticsSpread";
                break;
            case 3:
                // 购买出行卡支付回调
                notifyUrl = callbackPath+"/base/DGPayTaxiCardPaymentSpread";
                break;
            case 4:
                // 感谢费支付回调
                notifyUrl = callbackPath + "/base/DGPayThankYouFee";
                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());
        return execute.body();
    }
    /**
     * 订单支付 支付宝
     * @param money
     * @param buyerId
     * @param goodsDesc
     * @param type
     * @param orderId
     * @return
     */
    public static String 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/DGCallBack";
                break;
            case 2:
                // 支付小件物流差价支付回调
                notifyUrl = callbackPath +"/base/DGPayOrderLogisticsSpread";
                break;
            case 3:
                // 购买出行卡支付回调
                notifyUrl = callbackPath+"/base/DGPayTaxiCardPaymentSpread";
                break;
            case 4:
                // 感谢费支付回调
                notifyUrl = callbackPath + "/base/DGPayThankYouFee";
                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" +
                "    \"method_expand\": \"{\\\"buyer_id\\\":\\\"" + buyerId + "\\\"}\"\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" +
                "    \"method_expand\": \"{\\\"buyer_id\\\":\\\"" + buyerId + "\\\"}\"\n" +
                "  }\n" +
                "}\n";
        System.out.println(p);
        post.body(p);
        HttpResponse execute = post.execute();
        System.out.println(execute.body());
        return execute.body();
    }
    public static String sign(String data, String privateKeyBase64) {
@@ -145,4 +261,5 @@
        }
    }
}
UserJYXTravel/guns-admin/src/main/resources/application.yml
@@ -108,7 +108,7 @@
#spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3307/jyxtravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    url: jdbc:mysql://192.168.110.188:3307/jyxtravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    username: root_remote
    password: 123456
    db-name: jyxtravel #用来搜集数据库的所有表
@@ -199,3 +199,4 @@
  rsa_private_key: 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=
  rsa_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB
  upper_huifu_id: 6666000182995771
  huifu_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkelt8p0CS+39gvLxWDHEJHIq6ZIn/WYS6td++IyJVfO579E/biJug6FvC8jRJfcNmHOaqAb+9Lbf6FaXpgOiGWOjV8xNlEjYv7L9qlE7WqXCEWMXuGnAn2PCvsfqe1tnusFFiKZfaoGQPlJxZh0NB0+mMM6toyS/diXSLNeO1HdWlYt2l/C2CLY9M92SsGUJGiWsGUlkJNvhHT3zdOfS9qhZD7Z0+ySLYQHVEyWGQNdyuLc8Opl6fw24MFZi4a5ZsJf3HEr9kNAAXxJO4yMRdZ2Zgpkstx6xMPcVsq4NQQvg4FwXchdDhLaTX7/lFtPNLMlFQTTdIqx1bgz/NQWgIwIDAQAB
UserJYXTravel/guns-core/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
@@ -60,6 +60,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();
    }
    /**
     * 判断一个对象是否是时间类型