From c48c0f6d7d17897387c899157a7b10c8930dcdb7 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 14 Jan 2026 18:31:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/constants/SystemConstants.java | 26 +++++++++++++++++++ .../czg/order/dto/MkDistributionPayDTO.java | 4 +++ .../com/czg/order/entity/ShopMerchant.java | 10 +++++++ .../main/java/com/czg/pay/CzgPayBaseReq.java | 1 + .../java/com/czg/pay/PolyMerchantDTO.java | 8 +----- .../impl/DistributionPayServiceImpl.java | 3 ++- .../order/service/impl/PayServiceImpl.java | 26 +++++++++++++++++++ .../service/impl/ShopMerchantServiceImpl.java | 3 +++ .../java/com/czg/impl/PolyPayAdapter.java | 25 +++--------------- 9 files changed, 76 insertions(+), 30 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/constants/SystemConstants.java b/cash-common/cash-common-service/src/main/java/com/czg/constants/SystemConstants.java index 054303c9c..f480ce98d 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/constants/SystemConstants.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/constants/SystemConstants.java @@ -43,4 +43,30 @@ public interface SystemConstants { */ public static final String CUSTOM = "custom"; } + + + /** + * 三方支付类型 + */ + class PayType { + /** + * 微信支付 + */ + public static final String WECHAT = "wechatPay"; + + /** + * 支付宝支付 + */ + public static final String ALIPAY = "alipay"; + + /** + * 微信小程序支付 + */ + public static final String WECHAT_APP_ID = "wxd88fffa983758a30"; + + /** + * 支付宝小程序支付 + */ + public static final String ALIPAY_APP_ID = "2021004145625815"; + } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/MkDistributionPayDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/MkDistributionPayDTO.java index 8fd8f06bd..05b7ece75 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/MkDistributionPayDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/MkDistributionPayDTO.java @@ -24,6 +24,10 @@ public class MkDistributionPayDTO implements Serializable { private Long shopId; private String platformType = "DIS"; private Long userId; + /** + * 支付类型 + * {@link com.czg.constants.SystemConstants.PayType} + */ private String payType; private String returnUrl; private String buyerRemark; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopMerchant.java b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopMerchant.java index 9ca66a11c..b98297dc9 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopMerchant.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopMerchant.java @@ -3,6 +3,7 @@ package com.czg.order.entity; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.Table; +import jakarta.validation.constraints.NotEmpty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -45,6 +46,15 @@ public class ShopMerchant implements Serializable { */ private String relatedLicenceNo; + /** + * 微信appid + */ + private String wechatAppId; + /** + * 支付宝appid + */ + private String alipayAppId; + /** * 聚合支付参数 */ diff --git a/cash-common/cash-common-service/src/main/java/com/czg/pay/CzgPayBaseReq.java b/cash-common/cash-common-service/src/main/java/com/czg/pay/CzgPayBaseReq.java index adb0ce677..678ba068e 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/pay/CzgPayBaseReq.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/pay/CzgPayBaseReq.java @@ -63,6 +63,7 @@ public class CzgPayBaseReq { /** * 支付类型 + * {@link com.czg.constants.SystemConstants.PayType} */ private String payType; /** diff --git a/cash-common/cash-common-service/src/main/java/com/czg/pay/PolyMerchantDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/pay/PolyMerchantDTO.java index 19625f643..6107d324a 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/pay/PolyMerchantDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/pay/PolyMerchantDTO.java @@ -18,12 +18,6 @@ public class PolyMerchantDTO { @NotEmpty(message = "商户秘钥不为空") private String appSecret; // 支付密码 - @NotEmpty(message = "支付密码不为空") +// @NotEmpty(message = "支付密码不为空") private String payPassword; - // 微信appid - @NotEmpty(message = "微信appid") - private String wechatSmallAppid; - // 支付宝appid - @NotEmpty(message = "支付宝appid") - private String alipaySmallAppid; } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DistributionPayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DistributionPayServiceImpl.java index be6280de0..38601ff4c 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DistributionPayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DistributionPayServiceImpl.java @@ -7,6 +7,7 @@ import com.czg.account.service.ShopUserService; import com.czg.account.service.UserInfoService; import com.czg.constant.TableValueConstant; import com.czg.constants.PayTypeConstants; +import com.czg.constants.SystemConstants; import com.czg.enums.CzgPayEnum; import com.czg.exception.CzgException; import com.czg.market.service.MkDistributionConfigService; @@ -82,7 +83,7 @@ public class DistributionPayServiceImpl implements DistributionPayService { } else { UserInfo userInfo = userInfoService.getById(userId); initInfo.setPayment(orderPayment).setShopUser(shopUserInfo) - .setOpenId("aliPay".equals(payParam.getPayType()) ? userInfo.getAlipayOpenId() : userInfo.getWechatOpenId()); + .setOpenId(SystemConstants.PayType.ALIPAY.equals(payParam.getPayType()) ? userInfo.getAlipayOpenId() : userInfo.getWechatOpenId()); } return initInfo; } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java index ef1cfff72..4521cdc3a 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; import com.czg.PayAdapter; import com.czg.PayAdapterFactory; +import com.czg.constants.SystemConstants; import com.czg.order.entity.ShopMerchant; import com.czg.order.service.ShopMerchantService; import com.czg.constant.PayChannelCst; @@ -63,6 +64,10 @@ public class PayServiceImpl implements PayService { } else if (shopMerchant.getChannel().equals(PayChannelCst.POLY)) { payData = shopMerchant.getPolyPayJson(); } + bizData.setSubAppid(SystemConstants.PayType.ALIPAY.equals(bizData.getPayType()) ? shopMerchant.getAlipayAppId() : shopMerchant.getWechatAppId()); + if (payType.equals(CzgPayEnum.MICRO_PAY)) { + checkMicroPay((CzgPayBaseReq) bizData, shopMerchant); + } return adapter.pay(payType, payData, getDomain(), getNotifyUrl(shopMerchant.getChannel()), bizData); } @@ -211,4 +216,25 @@ public class PayServiceImpl implements PayService { } return notifyUrl; } + + private void checkMicroPay(CzgPayBaseReq bizData, ShopMerchant shopMerchant) { + String data = bizData.getData(); + AssertUtil.isBlank(data, "扫码失败,请重试"); + if (data.length() > 26) { + throw new CzgException("支付失败,不支持的条码"); + } + String firstTwoDigitsStr = data.substring(0, 2); + // 将截取的字符串转换为整数 + int firstTwoDigits = Integer.parseInt(firstTwoDigitsStr); + // 判断范围 + if (firstTwoDigits >= 10 && firstTwoDigits <= 15) { + //微信支付 + bizData.setSubAppid(shopMerchant.getWechatAppId()); + } else if (firstTwoDigits >= 25 && firstTwoDigits <= 30) { + //支付宝支付 + bizData.setSubAppid(shopMerchant.getAlipayAppId()); + } else { + throw new CzgException("扫描码非法或暂不支持"); + } + } } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopMerchantServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopMerchantServiceImpl.java index 0ac887b90..333852e8c 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopMerchantServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopMerchantServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; import com.czg.account.service.ShopInfoService; import com.czg.constant.PayChannelCst; +import com.czg.constants.SystemConstants; import com.czg.order.dto.ShopMerchantDTO; import com.czg.order.entity.ShopDirectMerchant; import com.czg.order.entity.ShopMerchant; @@ -75,6 +76,8 @@ public class ShopMerchantServiceImpl extends ServiceImpl> jsPay(PolyMerchantDTO shopMerchant, String domain, String notifyUrl, CzgPayBaseReq bizData) { - bizData.setSubAppid("aliPay".equals(bizData.getPayType()) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid()); - AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(bizData.getPayType()) ? "支付宝" : "微信") + "小程序"); - bizData.setPayType("aliPay".equals(bizData.getPayType()) ? "ALIPAY" : "WECHAT"); + AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + (SystemConstants.PayType.ALIPAY.equals(bizData.getPayType()) ? "支付宝" : "微信") + "小程序"); + bizData.setPayType(SystemConstants.PayType.ALIPAY.equals(bizData.getPayType()) ? "ALIPAY" : "WECHAT"); bizData.polyBase(shopMerchant.getStoreId(), notifyUrl); return PolyPayUtils.jsPay(domain, shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); } private CzgResult> ltPay(PolyMerchantDTO shopMerchant, String domain, String notifyUrl, CzgPayBaseReq bizData) { - bizData.setSubAppid("aliPay".equals(bizData.getPayType()) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid()); AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(bizData.getPayType()) ? "支付宝" : "微信") + "小程序"); bizData.polyBase(shopMerchant.getStoreId(), notifyUrl); return PolyPayUtils.ltPay(domain, shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); @@ -96,25 +95,7 @@ public class PolyPayAdapter implements PayAdapter { } private CzgResult> microPay(PolyMerchantDTO shopMerchant, String domain, String notifyUrl, CzgPayBaseReq bizData) { - AssertUtil.isBlank(bizData.getData(), "扫码失败,请重试"); - if (bizData.getData().length() > 26) { - throw new CzgException("支付失败,不支持的条码"); - } bizData.polyBase(shopMerchant.getStoreId(), notifyUrl); - - String firstTwoDigitsStr = bizData.getData().substring(0, 2); - // 将截取的字符串转换为整数 - int firstTwoDigits = Integer.parseInt(firstTwoDigitsStr); - // 判断范围 - if (firstTwoDigits >= 10 && firstTwoDigits <= 15) { - //微信支付 - bizData.setSubAppid(shopMerchant.getWechatSmallAppid()); - } else if (firstTwoDigits >= 25 && firstTwoDigits <= 30) { - //支付宝支付 - bizData.setSubAppid(shopMerchant.getAlipaySmallAppid()); - } else { - throw new CzgException("扫描码非法或暂不支持"); - } return PolyPayUtils.microPay(domain, shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData); } }