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 43c6f72a..cca3f292 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 @@ -21,9 +21,9 @@ public enum CheckoutCallTypeEnum { BAR_CODE("bar_code", "条码支付"), LINK("link", "跳转链接"), MINI_APP("mini_app", "小程序"), - AGGREGATE("aggregate", "聚合支付"), APP("app", "APP支付"), JSAPI("jsapi", "JSAPI"), + FROM("from", "表单方式"), ; private final String code; 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 0944bfa5..d0baa6e3 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 @@ -41,6 +41,14 @@ public class CheckoutController { return DaxRes.ok(checkoutService.creat(checkoutParam)); } + @Operation(summary = "根据订单号和收银台方式获取收银台链接") + @GetMapping("/getCheckoutUrl") + public Result getCheckoutUrl(String orderNo, String checkoutType){ + return Res.ok(checkoutService.getCheckoutUrl(orderNo, checkoutType)); + + } + + @Operation(summary = "获取收银台订单和配置信息") @GetMapping("/getOrderAndConfig") public Result getOrderAndConfig(String orderNo, String checkoutType){ 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 8ac2ef21..0bd58d22 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 @@ -70,7 +70,11 @@ public class CheckoutQueryService { return groups.stream() .map(o->{ var result = CheckoutGroupConfigConvert.CONVERT.toResult(o); - result.setItems(itemGroupMap.get(o.getId()).stream().map(CheckoutItemConfigConvert.CONVERT::toResult).toList()); + List list = itemGroupMap.getOrDefault(o.getId(), new ArrayList<>()) + .stream() + .map(CheckoutItemConfigConvert.CONVERT::toResult) + .toList(); + result.setItems(list); return result; }) .toList(); 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 0571779a..3ef8db77 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 @@ -9,7 +9,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.daxpay.core.enums.CheckoutCallTypeEnum; import org.dromara.daxpay.core.enums.CheckoutTypeEnum; -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; @@ -75,13 +74,9 @@ public class CheckoutService { if (Objects.isNull(payOrder)){ // 执行支付前的保存动作, 保存支付订单和扩展记录 payOrder = checkoutAssistService.createPayOrder(checkoutParam); - String checkoutUrl = this.getCheckoutUrl(payOrder.getOrderNo(), checkoutParam.getCheckoutType()); - return new CheckoutUrlResult().setUrl(checkoutUrl); - } else { - // 直接返回收银台链接 - String checkoutUrl = this.getCheckoutUrl(payOrder.getOrderNo(), checkoutParam.getCheckoutType()); - return new CheckoutUrlResult().setUrl(checkoutUrl); } + String checkoutUrl = this.getCheckoutUrl(payOrder.getOrderNo(), checkoutParam.getCheckoutType()); + return new CheckoutUrlResult().setUrl(checkoutUrl); } finally { lockTemplate.releaseLock(lock); } @@ -92,9 +87,7 @@ public class CheckoutService { */ public String getCheckoutUrl(String orderNo, String checkoutType){ CheckoutTypeEnum checkoutTypeEnum = CheckoutTypeEnum.findBuyCode(checkoutType); - PlatformConfig config = platformConfigService.getConfig(); - switch (checkoutTypeEnum) { case H5 -> { return StrUtil.format("{}/checkout/{}",config.getGatewayMobileUrl(), orderNo); @@ -123,18 +116,9 @@ public class CheckoutService { // 判断支付调用类型 CheckoutCallTypeEnum callTypeEnum = CheckoutCallTypeEnum.findBuyCode(itemConfig.getCallType()); switch (callTypeEnum) { - case QR_CODE, LINK, BAR_CODE,JSAPI -> { + case QR_CODE, LINK, BAR_CODE,JSAPI,FROM -> { return this.checkoutPay(param, payOrder); } - case AGGREGATE -> { - PlatformConfig config = platformConfigService.getConfig(); - // 直接返回手机端的聚合收银台链接 - String url = StrUtil.format("{}/aggregate/{}", config.getGatewayPcUrl(), payOrder.getOrderNo()); - PayResult payResult = new PayResult(); - payResult.setPayBody(url); - payResult.setStatus(PayStatusEnum.WAIT.getCode()); - return payResult; - } default -> throw new UnsupportedAbilityException("不支持的支付调用类型"); } }