diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java index 9769237cf..3fa7575c7 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java @@ -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("微信支付金额超限"); diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV2Service.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV2Service.java index 3254d7ca3..36e2850b7 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV2Service.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV2Service.java @@ -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; diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV3Service.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV3Service.java index d11402ceb..ec2ab8498 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV3Service.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayV3Service.java @@ -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; diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/trade/pay/PayParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/trade/pay/PayParam.java index 00449dc79..582d5e393 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/trade/pay/PayParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/trade/pay/PayParam.java @@ -64,6 +64,7 @@ public class PayParam extends PaymentCommonParam { /** * 支付方式编码 + * @see org.dromara.daxpay.core.enums.PayMethodEnum */ @Schema(description = "支付方式编码") @NotBlank(message = "支付方式不可为空")