diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/strategy/WechatCheckoutStrategy.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/strategy/WechatCheckoutStrategy.java index ad54125a5..a9ca3b579 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/strategy/WechatCheckoutStrategy.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/strategy/WechatCheckoutStrategy.java @@ -9,7 +9,6 @@ import org.dromara.daxpay.channel.wechat.service.assist.WechatAuthService; import org.dromara.daxpay.core.enums.ChannelAuthStatusEnum; import org.dromara.daxpay.core.enums.ChannelEnum; import org.dromara.daxpay.core.param.assist.AuthCodeParam; -import org.dromara.daxpay.core.param.cashier.CashierCodeAuthUrlParam; import org.dromara.daxpay.core.param.checkout.CheckoutPayParam; import org.dromara.daxpay.core.param.trade.pay.PayParam; import org.dromara.daxpay.core.result.assist.AuthResult; @@ -41,8 +40,8 @@ public class WechatCheckoutStrategy extends AbsCheckoutStrategy { * 生成授权链接, 主要是微信类通道使用, 用于获取OpenId */ @Override - public String generateAuthUrl(CashierCodeAuthUrlParam param) { - String redirectUrl = StrUtil.format("/checkout/wechat/{}", param.getCashierCode()); + public String generateAuthUrl(String orderNo) { + String redirectUrl = StrUtil.format("/checkout/wechat/{}", orderNo); return wechatAuthService.generateInnerAuthUrl(redirectUrl); } diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java index 7f84dafa6..19704c665 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java @@ -3,23 +3,30 @@ package org.dromara.daxpay.core.param.checkout; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; +import org.dromara.daxpay.core.enums.CheckoutAggregateEnum; /** - * 获取通道收银认证结果参数 + * 获取收银台认证结果参数 * @author xxm * @since 2024/9/28 */ @Data @Accessors(chain = true) -@Schema(title = "收银台认证参数") +@Schema(title = "获取收银台认证结果参数") public class CheckoutAuthCodeParam { - @Schema(description = "应用号") - private String appId; + /** 要支付的订单号 */ + @Schema(description = "要支付的订单号") + private String orderNo; - @Schema(description = "收银台类型") - private String cashierType; + /** + * 聚合支付类型 + * @see CheckoutAggregateEnum + */ + @Schema(description = "聚合支付类型") + private String aggregateType; + /** 认证Code */ @Schema(description = "认证Code") private String authCode; } diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthUrlParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthUrlParam.java index 61f18ffde..303a7afb4 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthUrlParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthUrlParam.java @@ -6,22 +6,22 @@ import lombok.experimental.Accessors; import org.dromara.daxpay.core.enums.CheckoutAggregateEnum; /** - * 获取通道收银认证url参数 + * 收银台认证链接生成参数 * @author xxm * @since 2024/9/28 */ @Data @Accessors(chain = true) -@Schema(title = "通道收银认证参数") +@Schema(title = "收银台认证链接生成参数") public class CheckoutAuthUrlParam { + @Schema(description = "要支付的订单号") + private String orderNo; + /** * 聚合支付类型 * @see CheckoutAggregateEnum */ @Schema(description = "聚合支付类型") private String aggregateType; - - @Schema(description = "收银台类型") - private String cashierType; } diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutPayParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutPayParam.java index 28054873e..13582e3cb 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutPayParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutPayParam.java @@ -25,7 +25,4 @@ public class CheckoutPayParam { @Schema(description = "付款码") private String barCode; - - @Schema(description = "描述") - private String description; } diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateConfigResult.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateConfigResult.java index b7ada9d03..d839ad952 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateConfigResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateConfigResult.java @@ -18,10 +18,10 @@ import org.dromara.daxpay.core.enums.PayMethodEnum; public class CheckoutAggregateConfigResult { /** - * 支付类型 + * 聚合支付类型 * @see CheckoutAggregateEnum */ - @Schema(description = "支付类型") + @Schema(description = "聚合支付类型") private String type; /** diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateOrderAndConfigResult.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateOrderAndConfigResult.java index ceba20399..002c57e1a 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateOrderAndConfigResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/result/checkout/CheckoutAggregateOrderAndConfigResult.java @@ -19,7 +19,7 @@ public class CheckoutAggregateOrderAndConfigResult { private CheckoutOrderResult order; /** 收银台配置信息 */ - @Schema(description = "配置信息") + @Schema(description = "收银台配置信息") private CheckoutConfigResult config; /** 收银台聚合配置信息 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CashierCodeController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CashierCodeController.java index 288237b22..dce60f2dd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CashierCodeController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CashierCodeController.java @@ -48,7 +48,7 @@ public class CashierCodeController { return Res.ok(cashierCodeService.generateAuthUrl(param)); } - @Operation(summary = "授权获取结果") + @Operation(summary = "获取授权结果") @PostMapping("/auth") public Result auth(@RequestBody CashierCodeAuthCodeParam param){ ValidationUtil.validateParam(param); diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java index 6f7e4f66e..c73967afd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java @@ -1,15 +1,21 @@ package org.dromara.daxpay.service.controller.unipay; +import cn.bootx.platform.core.annotation.IgnoreAuth; import cn.bootx.platform.core.rest.Res; import cn.bootx.platform.core.rest.result.Result; +import cn.bootx.platform.core.util.ValidationUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.dromara.daxpay.core.param.checkout.CheckoutAuthCodeParam; +import org.dromara.daxpay.core.param.checkout.CheckoutAuthUrlParam; import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam; import org.dromara.daxpay.core.param.checkout.CheckoutPayParam; import org.dromara.daxpay.core.result.DaxResult; +import org.dromara.daxpay.core.result.assist.AuthResult; import org.dromara.daxpay.core.result.checkout.CheckoutAggregateOrderAndConfigResult; import org.dromara.daxpay.core.result.checkout.CheckoutOrderAndConfigResult; +import org.dromara.daxpay.core.result.checkout.CheckoutPayResult; import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult; import org.dromara.daxpay.core.util.DaxRes; import org.dromara.daxpay.service.common.anno.PaymentVerify; @@ -37,22 +43,42 @@ public class CheckoutController { return DaxRes.ok(checkoutService.creat(checkoutParam)); } + @IgnoreAuth @Operation(summary = "获取收银台订单和配置信息") @GetMapping("/getOrderAndConfig") public Result getOrderAndConfig(String orderNo, String checkoutType){ return Res.ok(checkoutQueryService.getOrderAndConfig(orderNo, checkoutType)); } + @IgnoreAuth @Operation(summary = "获取聚合支付配置") @GetMapping("/getAggregateConfig") - public Result getAggregateConfig(String orderNo, String checkoutType){ - return Res.ok(checkoutQueryService.getAggregateConfig(orderNo, checkoutType)); + public Result getAggregateConfig(String orderNo, String aggregateType){ + return Res.ok(checkoutQueryService.getAggregateConfig(orderNo, aggregateType)); } + @IgnoreAuth + @Operation(summary = "获取收银台所需授权链接, 用于获取OpenId一类的信息") + @PostMapping("/generateAuthUrl") + public Result generateAuthUrl(@RequestBody CheckoutAuthUrlParam param){ + ValidationUtil.validateParam(param); + return Res.ok(checkoutService.generateAuthUrl(param)); + } + + @IgnoreAuth + @Operation(summary = "获取授权结果") + @PostMapping("/auth") + public Result auth(@RequestBody CheckoutAuthCodeParam param){ + ValidationUtil.validateParam(param); + return Res.ok(checkoutService.auth(param)); + } + + + @IgnoreAuth @Operation(summary = "发起支付") @PostMapping("/pay") - public Result pay(@RequestBody CheckoutPayParam checkoutParam){ - return Res.ok(); + public Result pay(@RequestBody CheckoutPayParam checkoutParam){ + return Res.ok(checkoutService.pay(checkoutParam)); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java index 9d34931ea..50a918ff2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java @@ -110,6 +110,7 @@ public class CheckoutQueryService { .setAmount(payOrder.getAmount()) .setBizOrderNo(payOrder.getBizOrderNo()) .setOrderNo(payOrder.getOrderNo()); + checkoutInfoResult.setOrder(order); // 获取收银台配置 checkoutInfoResult.setConfig(this.getConfig(payOrder.getAppId())); // 获取聚合支付配置 diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java index af5f02e04..24b038688 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java @@ -13,10 +13,10 @@ import org.dromara.daxpay.core.enums.PayStatusEnum; import org.dromara.daxpay.core.exception.ConfigNotExistException; import org.dromara.daxpay.core.exception.TradeProcessingException; import org.dromara.daxpay.core.exception.UnsupportedAbilityException; -import org.dromara.daxpay.core.param.checkout.CheckoutAggregatePayParam; -import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam; -import org.dromara.daxpay.core.param.checkout.CheckoutPayParam; +import org.dromara.daxpay.core.param.assist.AuthCodeParam; +import org.dromara.daxpay.core.param.checkout.*; import org.dromara.daxpay.core.param.trade.pay.PayParam; +import org.dromara.daxpay.core.result.assist.AuthResult; import org.dromara.daxpay.core.result.checkout.CheckoutPayResult; import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult; import org.dromara.daxpay.core.result.trade.pay.PayResult; @@ -195,34 +195,35 @@ public class CheckoutService { return payService.pay(payParam, payOrder); } -// /** -// * 生成授权链接跳转链接, 主要是微信类通道使用, 用于获取OpenId -// */ -// public String generateAuthUrl(CheckoutAggregatePayParam param){ -// // 订单信息 -// PayOrder payOrder = checkoutAssistService.getOrderAndCheck(param.getOrderNo()); -// // 获取聚合类型 -// CheckoutAggregateConfig aggregateConfig = checkoutAggregateConfigManager.findByAppIdAndType(payOrder.getAppId(), param.getAggregateType()) -// .orElseThrow(() -> new ConfigNotExistException("聚合支付配置项不存在")); -// paymentAssistService.initMchApp(aggregateConfig.getAppId()); -// // 获取策略 -// var cashierStrategy = PaymentStrategyFactory.create(aggregateConfig.getChannel(), AbsCheckoutStrategy.class); -// return cashierStrategy.generateAuthUrl(param); -// } -// -// /** -// * 授权结果 -// */ -// public AuthResult auth(org.dromara.daxpay.service.param.cashier.AuthCodeParam param) { -// // 查询配置 -// var cashierConfig = codeConfigService.findByCashierType(param.getCode(),param.getType()); -// paymentAssistService.initMchApp(cashierConfig.getAppId()); -// // 获取策略 -// AbsCashierCodeStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsCashierCodeStrategy.class); -// AuthCodeParam authCodeParam = new AuthCodeParam() -// .setCashierType(param.getType()) -// .setAuthCode(param.getAuthCode()) -// .setAppId(cashierConfig.getAppId()); -// return cashierStrategy.doAuth(authCodeParam); -// } + /** + * 生成授权链接跳转链接, 主要是微信类通道使用, 用于获取OpenId + */ + public String generateAuthUrl(CheckoutAuthUrlParam param){ + // 订单信息 + PayOrder payOrder = checkoutAssistService.getOrderAndCheck(param.getOrderNo()); + // 获取聚合类型 + var aggregateConfig = checkoutAggregateConfigManager.findByAppIdAndType(payOrder.getAppId(), param.getAggregateType()) + .orElseThrow(() -> new ConfigNotExistException("聚合支付配置项不存在")); + paymentAssistService.initMchApp(aggregateConfig.getAppId()); + // 获取策略 + var checkoutStrategy = PaymentStrategyFactory.create(aggregateConfig.getChannel(), AbsCheckoutStrategy.class); + return checkoutStrategy.generateAuthUrl(param.getOrderNo()); + } + + /** + * 授权结果 + */ + public AuthResult auth(CheckoutAuthCodeParam param) { + // 订单信息 + PayOrder payOrder = checkoutAssistService.getOrderAndCheck(param.getOrderNo()); + // 获取聚合类型 + var aggregateConfig = checkoutAggregateConfigManager.findByAppIdAndType(payOrder.getAppId(), param.getAggregateType()) + .orElseThrow(() -> new ConfigNotExistException("聚合支付配置项不存在")); + paymentAssistService.initMchApp(payOrder.getAppId()); + // 获取策略 + var checkoutStrategy = PaymentStrategyFactory.create(aggregateConfig.getChannel(), AbsCheckoutStrategy.class); + AuthCodeParam authCodeParam = new AuthCodeParam() + .setAuthCode(param.getAuthCode()); + return checkoutStrategy.doAuth(authCodeParam); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/strategy/AbsCheckoutStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/strategy/AbsCheckoutStrategy.java index 73b1ddf05..089d8a9e4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/strategy/AbsCheckoutStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/strategy/AbsCheckoutStrategy.java @@ -1,7 +1,6 @@ package org.dromara.daxpay.service.strategy; import org.dromara.daxpay.core.param.assist.AuthCodeParam; -import org.dromara.daxpay.core.param.cashier.CashierCodeAuthUrlParam; import org.dromara.daxpay.core.param.checkout.CheckoutPayParam; import org.dromara.daxpay.core.param.trade.pay.PayParam; import org.dromara.daxpay.core.result.assist.AuthResult; @@ -16,7 +15,7 @@ public abstract class AbsCheckoutStrategy implements PaymentStrategy{ /** * 生成授权链接, 主要是微信类通道使用, 用于获取OpenId */ - public String generateAuthUrl(CashierCodeAuthUrlParam param) { + public String generateAuthUrl(String orderNo) { return ""; }