liujie
2026-04-14 2d0e7dee5ece569db12811325321223358df3dec
支付对接
5个文件已修改
122 ■■■■■ 已修改文件
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/CbyzxPayUtil.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/resources/application-dev.yml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/resources/application-prod.yml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/resources/application-test.yml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -1702,7 +1702,48 @@
            e.printStackTrace();
        }
    }
    /**
     * 取消订单微信回调
     *
     * @param request
     */
    @ResponseBody
    @PostMapping("/base/cbyzxCancelOrderTaxi")
    public void cbyzxCancelOrderTaxi(HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if (null != map) {
                String order_id = map.get("transaction_id");
                String out_trade_no = map.get("out_trade_no");
                String result = map.get("result");
                if (ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)) {
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
                    out.close();
                    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;
                    }
                }
//                cloudPay(map.get("total_fee"),map.get("transaction_id"),1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 取消订单支付宝回调
@@ -1809,9 +1850,9 @@
     */
    @ResponseBody
    @PostMapping("/base/cbyzxPayOrderTaxi")
    public Map<String, Object> cbyzxPayOrderTaxi(HttpServletRequest request) {
    public Map<String, Object> cbyzxPayOrderTaxi(@RequestBody String params, HttpServletRequest request) {
        try {
            JSONObject payload = cbyzxOrderPayHelper.parseCallbackRequest(request);
            JSONObject payload = JSONObject.parseObject(params);
            log.info("创博优完成订单支付回调,notify_type={}, out_trade_no={}, trade_no={}, trade_status={}",
                    cbyzxOrderPayHelper.extractNotifyType(payload),
                    cbyzxOrderPayHelper.extractOutRequestNo(payload),
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/CbyzxPayUtil.java
@@ -1,7 +1,9 @@
package com.stylefeng.guns.modular.system.util;
import cn.hutool.Hutool;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
@@ -12,6 +14,7 @@
 * 创博优支付工具类
 * 目前仅实现创建支付单接口。
 */
@Slf4j
public class CbyzxPayUtil {
    /**
@@ -23,7 +26,7 @@
     * 创建支付单接口
     */
    public static final String CREATE_PAY_ORDER_PATH = "/api/inner/pay/create";
    public static final String CLOSE_PAY_ORDER_PATH = "/api/inner/pay/close";
    public static final String CLOSE_PAY_ORDER_PATH = "/api/inner/refund/create";
    private static final String PAYMENT_ORDER_TYPE = "PAYMENT_ORDER";
    private static final String DEFAULT_CURRENCY = "CNY";
@@ -73,6 +76,7 @@
    private static JSONObject postForJson(String baseUrl, String path, Map<String, Object> params, String actionName) {
        HttpClientUtil httpClientUtil = new HttpClientUtil();
        log.info("{} request: {}", actionName, JSONObject.toJSONString(params));
        String responseText = httpClientUtil.pushHttpRequset(
                "POST",
                buildUrl(baseUrl, path),
@@ -142,9 +146,6 @@
        if (request == null) {
            throw new IllegalArgumentException("request must not be null");
        }
        if (!StringUtils.hasText(request.getTenant())) {
            throw new IllegalArgumentException("tenant must not be blank");
        }
        if (!StringUtils.hasText(request.getOutRequestNo())) {
            throw new IllegalArgumentException("outRequestNo must not be blank");
        }
@@ -166,7 +167,6 @@
    public static ClosePayOrderRequest mockCloseRequest(String outRequestNo) {
        ClosePayOrderRequest request = new ClosePayOrderRequest();
        request.setTenant(DEFAULT_TENANT);
        request.setOutRequestNo(outRequestNo);
        return request;
    }
@@ -203,10 +203,12 @@
            params.put("tenant", DEFAULT_TENANT);
            params.put("paymentOrderType", PAYMENT_ORDER_TYPE);
            params.put("outRequestNo", outRequestNo);
            //转为分
            paymentOrderAmount = BigDecimal.valueOf(paymentOrderAmount.multiply(new BigDecimal(100)).intValue());
            params.put("paymentOrderAmount", paymentOrderAmount);
            params.put("currency", DEFAULT_CURRENCY);
            params.put("buyerId", buyerId);
            params.put("openId", openId);
            params.put("subOpenid", openId);
            params.put("storeIds", Arrays.asList("246"));
            params.put("payChannelCode", DEFAULT_PAY_CHANNEL_CODE);
            params.put("payEndTime", payEndTime);
@@ -269,24 +271,46 @@
    public static class ClosePayOrderRequest {
        private String tenant;
        private String outRequestNo;
        private String refundOutRequestNo;
        private Integer refundAmount;
        private String refundDesc;
        public Map<String, Object> toParamMap() {
            Map<String, Object> params = new LinkedHashMap<>();
            params.put("tenant", tenant);
            params.put("tenant",DEFAULT_TENANT );
            params.put("outRequestNo", outRequestNo);
            params.put("refundOutRequestNo", refundOutRequestNo);
            params.put("refundAmount", refundAmount);
            params.put("refundDesc", refundDesc);
            return params;
        }
        public String getTenant() {
            return tenant;
        public String getRefundOutRequestNo() {
            return refundOutRequestNo;
        }
        public void setTenant(String tenant) {
            this.tenant = tenant;
        public void setRefundOutRequestNo(String refundOutRequestNo) {
            this.refundOutRequestNo = refundOutRequestNo;
        }
        public Integer getRefundAmount() {
            return refundAmount;
        }
        public void setRefundAmount(Integer refundAmount) {
            this.refundAmount = refundAmount;
        }
        public String getRefundDesc() {
            return refundDesc;
        }
        public void setRefundDesc(String refundDesc) {
            this.refundDesc = refundDesc;
        }
        public String getOutRequestNo() {
            return outRequestNo;
        }
UserYKDTravel/guns-admin/src/main/resources/application-dev.yml
@@ -79,8 +79,8 @@
  grantType: authorization_code #填authorization_code
  appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得
  appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
  appletsAppid: wx436cde5de45e1ed1 #小程序APPid
  appletsAppSecret: e94f587cfb5c325c13d72b1f5ddbb1e6 #
  appletsAppid: wx20301e30167d920e #小程序APPid
  appletsAppSecret: 4b8fe5cea20c4309fa996caa06ac9b4c #
  mchId: 111 #微信支付分配的商户号
  key: 111 #key为商户平台设置的密钥key:
@@ -104,7 +104,8 @@
#支付回调地址
#正式环境
callbackPath: https://traffic.qytzt.cn/user
#callbackPath: https://traffic.qytzt.cn/user
callbackPath: http://221.182.45.100:7894/user
---
UserYKDTravel/guns-admin/src/main/resources/application-prod.yml
@@ -85,8 +85,8 @@
  grantType: authorization_code #填authorization_code
  appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得
  appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
  appletsAppid: wx436cde5de45e1ed1 #小程序APPid
  appletsAppSecret: e94f587cfb5c325c13d72b1f5ddbb1e6 #
  appletsAppid: wx20301e30167d920e #小程序APPid
  appletsAppSecret: 4b8fe5cea20c4309fa996caa06ac9b4c #
  mchId: 111 #微信支付分配的商户号
  key: 111 #key为商户平台设置的密钥key:
UserYKDTravel/guns-admin/src/main/resources/application-test.yml
@@ -49,7 +49,7 @@
eureka:
  client:
    service-url: #注册中心地址
      defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
      defaultZone: http://sinata:sinata@127.0.0.1:8001/eureka #启用身份验证的方式连接
    register-with-eureka: true #在注册中心进行注册
    fetch-registry: true #从Eureka中获取注册信息。
@@ -62,11 +62,12 @@
spring:
  datasource:
    url: jdbc:mysql://10.86.17.201:5740/hn_ridingdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    username: hn_ridingdb
    password: hn_ridingdb123456$#@!
    db-name: hn_ridingdb #用来搜集数据库的所有表
    url: jdbc:mysql://192.168.110.47:3306/hn_ridingdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    db-name: qyttravel #用来搜集数据库的所有表
    filters: wall,mergeStat
@@ -74,12 +75,7 @@
spring:
  data:
    mongodb:
      host: 10.88.204.206
      port: 27009
      username: qn_riding_adm
      password: QN_riding@Prom2025
      database: qn_ridingdb
      uri: mongodb://192.168.110.80:27017/traveling_track
---