diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java index f6631190d..60205fdb3 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java @@ -75,7 +75,7 @@ public class WechatAuthService { PlatformConfig platformConfig = platformConfigService.getConfig(); serverUrl = platformConfig.getGatewayMobileUrl(); } - String redirectUrl = StrUtil.format("{}/{}", serverUrl, authPath); + String redirectUrl = StrUtil.format("{}{}", serverUrl, authPath); return wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); } 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 a9ca3b579..802c3516b 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 @@ -41,7 +41,7 @@ public class WechatCheckoutStrategy extends AbsCheckoutStrategy { */ @Override public String generateAuthUrl(String orderNo) { - String redirectUrl = StrUtil.format("/checkout/wechat/{}", orderNo); + String redirectUrl = StrUtil.format("/aggregate/wechat/{}", orderNo); return wechatAuthService.generateInnerAuthUrl(redirectUrl); } diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java index 5146b505e..43c6f72a1 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java @@ -20,9 +20,10 @@ public enum CheckoutCallTypeEnum { QR_CODE("qr_code", "扫码支付"), BAR_CODE("bar_code", "条码支付"), LINK("link", "跳转链接"), - JSAPI("jsapi", "JSAPI"), + MINI_APP("mini_app", "小程序"), AGGREGATE("aggregate", "聚合支付"), APP("app", "APP支付"), + JSAPI("jsapi", "JSAPI"), ; private final String code; diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutTypeEnum.java index 870ef9f22..1cea0f154 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutTypeEnum.java @@ -9,6 +9,7 @@ import java.util.Objects; /** * 收银台类型 + * 字典 checkout_type * @author xxm * @since 2024/11/26 */ @@ -19,7 +20,7 @@ public enum CheckoutTypeEnum { H5("h5", "H5"), PC("pc", "PC"), MINI_APP("mini_app", "小程序"), - AGGREGATE("aggregate", "聚合扫码"), + AGGREGATE("aggregate", "聚合支付"), ; private final String code; diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/develop/DevelopTradeController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/develop/DevelopTradeController.java index 70c96d635..16bae7f68 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/develop/DevelopTradeController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/develop/DevelopTradeController.java @@ -4,16 +4,18 @@ import cn.bootx.platform.core.annotation.RequestGroup; import cn.bootx.platform.core.annotation.RequestPath; import cn.bootx.platform.core.rest.Res; import cn.bootx.platform.core.rest.result.Result; +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.CheckoutCreatParam; import org.dromara.daxpay.core.param.trade.pay.PayParam; import org.dromara.daxpay.core.param.trade.refund.RefundParam; import org.dromara.daxpay.core.param.trade.transfer.TransferParam; +import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult; import org.dromara.daxpay.core.result.trade.pay.PayResult; import org.dromara.daxpay.core.result.trade.refund.RefundResult; import org.dromara.daxpay.core.result.trade.transfer.TransferResult; import org.dromara.daxpay.service.service.develop.DevelopTradeService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -34,7 +36,6 @@ import org.springframework.web.bind.annotation.RestController; public class DevelopTradeController { private final DevelopTradeService developTradeService; - @Operation(summary = "支付参数签名") @RequestPath("支付参数签名") @PostMapping("/sign/pay") @@ -56,6 +57,13 @@ public class DevelopTradeController { return Res.ok(developTradeService.genSign(param)); } + @Operation(summary = "收银台签名") + @RequestPath("收银台签名") + @PostMapping("/sign/checkout") + public Result checkoutSign(@RequestBody CheckoutCreatParam param){ + return Res.ok(developTradeService.genSign(param)); + } + @Operation(summary = "支付接口") @RequestPath("支付接口") @@ -78,4 +86,11 @@ public class DevelopTradeController { return Res.ok(developTradeService.transfer(param)); } + @Operation(summary = "收银台链接创建接口") + @RequestPath("收银台链接创建接口") + @PostMapping("/checkoutUrl") + public Result checkoutUrl(@RequestBody @Validated CheckoutCreatParam param){ + return Res.ok(developTradeService.checkoutUrl(param)); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/config/checkout/CheckoutGroupConfigManager.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/config/checkout/CheckoutGroupConfigManager.java index 0d1f15dce..32552099a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/config/checkout/CheckoutGroupConfigManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/config/checkout/CheckoutGroupConfigManager.java @@ -25,16 +25,7 @@ public class CheckoutGroupConfigManager extends BaseManager findAllByAppIdAndType(String appId, String type){ - return lambdaQuery() - .eq(CheckoutGroupConfig::getAppId, appId) - .eq(CheckoutGroupConfig::getType, type) + .orderByAsc(CheckoutGroupConfig::getSortNo) .list(); } 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 4d7ade206..0571779a8 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 @@ -103,7 +103,7 @@ public class CheckoutService { return StrUtil.format("{}/checkout/{}",config.getGatewayPcUrl(), orderNo); } case AGGREGATE -> { - return StrUtil.format("{}/aggregate/{}",config.getGatewayPcUrl(), orderNo); + return StrUtil.format("{}/aggregate/{}",config.getGatewayMobileUrl(), orderNo); } case MINI_APP -> throw new UnsupportedAbilityException("暂不支持小程序收银台"); default -> throw new UnsupportedAbilityException("不支持的收银台类型"); @@ -170,11 +170,10 @@ public class CheckoutService { public PayResult aggregatePay(CheckoutAggregatePayParam param){ // 订单信息 PayOrder payOrder = checkoutAssistService.getOrderAndCheck(param.getOrderNo()); - // 获取聚合类型 CheckoutAggregateConfig aggregateConfig = checkoutAggregateConfigManager.findByAppIdAndType(payOrder.getAppId(), param.getAggregateType()) .orElseThrow(() -> new ConfigNotExistException("聚合支付配置项不存在")); - + paymentAssistService.initMchApp(payOrder.getAppId()); // 构建支付参数 String clientIP = JakartaServletUtil.getClientIP(WebServletUtil.getRequest()); PayParam payParam = new PayParam(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/checkout/CheckoutConfigQueryService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/checkout/CheckoutConfigQueryService.java index aecc91d73..502d7dfc6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/checkout/CheckoutConfigQueryService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/checkout/CheckoutConfigQueryService.java @@ -46,7 +46,7 @@ public class CheckoutConfigQueryService { * 获取指定类型收银台分组列表 */ public List getGroupConfigs(String appId, String checkoutType){ - return MpUtil.toListResult(checkoutGroupConfigManager.findAllByAppIdAndType(appId, checkoutType)); + return MpUtil.toListResult(checkoutGroupConfigManager.findAllSortByAppIdAndType(appId, checkoutType)); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/develop/DevelopTradeService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/develop/DevelopTradeService.java index 24f10ba8b..f35594cd4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/develop/DevelopTradeService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/develop/DevelopTradeService.java @@ -1,13 +1,16 @@ package org.dromara.daxpay.service.service.develop; import org.dromara.daxpay.core.param.PaymentCommonParam; +import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam; import org.dromara.daxpay.core.param.trade.pay.PayParam; import org.dromara.daxpay.core.param.trade.refund.RefundParam; import org.dromara.daxpay.core.param.trade.transfer.TransferParam; +import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult; import org.dromara.daxpay.core.result.trade.pay.PayResult; import org.dromara.daxpay.core.result.trade.refund.RefundResult; import org.dromara.daxpay.core.result.trade.transfer.TransferResult; import org.dromara.daxpay.service.service.assist.PaymentAssistService; +import org.dromara.daxpay.service.service.checkout.CheckoutService; import org.dromara.daxpay.service.service.trade.pay.PayService; import org.dromara.daxpay.service.service.trade.refund.RefundService; import org.dromara.daxpay.service.service.trade.transfer.TransferService; @@ -28,6 +31,8 @@ public class DevelopTradeService { private final PayService payService; private final RefundService refundService; private final TransferService transferService; + private final CheckoutService checkoutService; + /** * 生成签名 */ @@ -68,4 +73,15 @@ public class DevelopTradeService { paymentAssistService.signVerify(param); return transferService.transfer(param); } + + /** + * 收银台链接创建接口 + */ + public CheckoutUrlResult checkoutUrl(CheckoutCreatParam param) { + // 初始化 + paymentAssistService.initMchApp(param.getAppId()); + // 签名校验 + paymentAssistService.signVerify(param); + return checkoutService.creat(param); + } }