mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-03 19:16:21 +00:00
fix(wechat): 优化了微信支付方式的判断逻辑,提高了系统稳定性
-
This commit is contained in:
@@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -26,6 +27,14 @@ public class WechatPayService {
|
||||
* 校验
|
||||
*/
|
||||
public void validation(PayParam payParam, WechatPayParam wechatPayParam, WechatPayConfig weChatPayConfig) {
|
||||
// 判断是否是支持的支付方式
|
||||
String method = payParam.getMethod();
|
||||
PayMethodEnum methodEnum = PayMethodEnum.findByCode(method);
|
||||
if (List.of(PayMethodEnum.APP,PayMethodEnum.BARCODE,PayMethodEnum.WAP,PayMethodEnum.QRCODE,PayMethodEnum.JSAPI).contains(methodEnum)) {
|
||||
throw new ValidationFailedException("不支持的支付方式");
|
||||
}
|
||||
|
||||
|
||||
// 支付金额是否超限
|
||||
if (BigDecimalUtil.isGreaterThan(payParam.getAmount(),weChatPayConfig.getLimitAmount())) {
|
||||
throw new AmountExceedLimitException("微信支付金额超限");
|
||||
|
@@ -2,18 +2,6 @@ package org.dromara.daxpay.channel.wechat.service.pay;
|
||||
|
||||
import cn.bootx.platform.common.spring.exception.RetryableException;
|
||||
import cn.bootx.platform.core.util.JsonUtil;
|
||||
import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService;
|
||||
import org.dromara.daxpay.channel.wechat.util.WechatPayUtil;
|
||||
import org.dromara.daxpay.core.enums.PayMethodEnum;
|
||||
import org.dromara.daxpay.core.enums.PayStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.TradeFailException;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PaySyncResult;
|
||||
import org.dromara.daxpay.core.util.PayUtil;
|
||||
import org.dromara.daxpay.service.bo.trade.PayResultBo;
|
||||
import org.dromara.daxpay.service.entity.order.pay.PayOrder;
|
||||
import org.dromara.daxpay.service.service.trade.pay.PaySyncService;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
@@ -30,6 +18,19 @@ import com.github.binarywang.wxpay.service.WxPayService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService;
|
||||
import org.dromara.daxpay.channel.wechat.util.WechatPayUtil;
|
||||
import org.dromara.daxpay.core.enums.PayMethodEnum;
|
||||
import org.dromara.daxpay.core.enums.PayStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.MethodNotExistException;
|
||||
import org.dromara.daxpay.core.exception.TradeFailException;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PaySyncResult;
|
||||
import org.dromara.daxpay.core.util.PayUtil;
|
||||
import org.dromara.daxpay.service.bo.trade.PayResultBo;
|
||||
import org.dromara.daxpay.service.entity.order.pay.PayOrder;
|
||||
import org.dromara.daxpay.service.service.trade.pay.PaySyncService;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -78,6 +79,8 @@ public class WechatPayV2Service {
|
||||
else if (payMethodEnum == PayMethodEnum.BARCODE) {
|
||||
this.barCodePay(payOrder, wechatPayParam.getAuthCode(), config, payInfo);
|
||||
return payInfo;
|
||||
} else {
|
||||
throw new MethodNotExistException("不支持的支付方式");
|
||||
}
|
||||
payInfo.setPayBody(payBody);
|
||||
return payInfo;
|
||||
|
@@ -2,20 +2,6 @@ package org.dromara.daxpay.channel.wechat.service.pay;
|
||||
|
||||
import cn.bootx.platform.common.spring.exception.RetryableException;
|
||||
import cn.bootx.platform.core.util.JsonUtil;
|
||||
import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WxPayCodepayRequest;
|
||||
import org.dromara.daxpay.channel.wechat.result.pay.WxPayCodepayResult;
|
||||
import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService;
|
||||
import org.dromara.daxpay.channel.wechat.util.WechatPayUtil;
|
||||
import org.dromara.daxpay.core.enums.PayMethodEnum;
|
||||
import org.dromara.daxpay.core.enums.PayStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.TradeFailException;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PaySyncResult;
|
||||
import org.dromara.daxpay.core.util.PayUtil;
|
||||
import org.dromara.daxpay.service.bo.trade.PayResultBo;
|
||||
import org.dromara.daxpay.service.entity.order.pay.PayOrder;
|
||||
import org.dromara.daxpay.service.service.trade.pay.PaySyncService;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result;
|
||||
@@ -29,6 +15,21 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WxPayCodepayRequest;
|
||||
import org.dromara.daxpay.channel.wechat.result.pay.WxPayCodepayResult;
|
||||
import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService;
|
||||
import org.dromara.daxpay.channel.wechat.util.WechatPayUtil;
|
||||
import org.dromara.daxpay.core.enums.PayMethodEnum;
|
||||
import org.dromara.daxpay.core.enums.PayStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.MethodNotExistException;
|
||||
import org.dromara.daxpay.core.exception.TradeFailException;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PaySyncResult;
|
||||
import org.dromara.daxpay.core.util.PayUtil;
|
||||
import org.dromara.daxpay.service.bo.trade.PayResultBo;
|
||||
import org.dromara.daxpay.service.entity.order.pay.PayOrder;
|
||||
import org.dromara.daxpay.service.service.trade.pay.PaySyncService;
|
||||
import org.springframework.retry.annotation.Backoff;
|
||||
import org.springframework.retry.annotation.Retryable;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
@@ -79,6 +80,8 @@ public class WechatPayV3Service {
|
||||
// 付款码支付
|
||||
else if (payMethodEnum == PayMethodEnum.BARCODE) {
|
||||
this.barCodePay(payOrder, wechatPayParam.getAuthCode(), config, payResult);
|
||||
} else {
|
||||
throw new MethodNotExistException("不支持的支付方式");
|
||||
}
|
||||
payResult.setPayBody(payBody);
|
||||
return payResult;
|
||||
|
@@ -64,6 +64,7 @@ public class PayParam extends PaymentCommonParam {
|
||||
|
||||
/**
|
||||
* 支付方式编码
|
||||
* @see org.dromara.daxpay.core.enums.PayMethodEnum
|
||||
*/
|
||||
@Schema(description = "支付方式编码")
|
||||
@NotBlank(message = "支付方式不可为空")
|
||||
|
Reference in New Issue
Block a user