diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AssetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AssetController.java index 41b74cc1b..44628c9e1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AssetController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AssetController.java @@ -179,6 +179,7 @@ public class AssetController extends XktBaseController { rechargeAddDTO.setAmount(vo.getAmount()); rechargeAddDTO.setPayChannel(EPayChannel.of(vo.getPayChannel())); rechargeAddDTO.setPayPage(EPayPage.of(vo.getPayPage())); + rechargeAddDTO.setReturnUrl(vo.getReturnUrl()); RechargeAddResult result = assetService.rechargeByStore(rechargeAddDTO); return success(new StoreRechargeRespVO(result.getBillNo(), result.getPayRtnStr())); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java index 0f6d1e332..3ef877a2e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java @@ -24,4 +24,7 @@ public class StoreRechargeReqVO { @NotNull(message = "支付来源不能为空") @ApiModelProperty(value = "支付来源[1:电脑网站 2:手机网站 3:APP]", required = true) private Integer payPage; + + @ApiModelProperty(value = "支付完成后跳转url") + private String returnUrl; } diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index cc4f2476b..4265a2670 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -274,7 +274,8 @@ alipay: rootCertPath: C:/alipay/test/alipayRootCert.crt alipayPublicCertPath: C:/alipay/test/alipayPublicCert.crt notifyUrl: http://101.34.251.164:9310/rest/v1/alipay-callback/notify - returnUrl: + defaultReturnUrl: http://121.40.214.172/index.html + orderReturnUrl: http://121.40.214.172/index.html signType: RSA2 charset: UTF-8 gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index c0a689e74..1e6ed6201 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -274,7 +274,8 @@ alipay: rootCertPath: /alipay/test/alipayRootCert.crt alipayPublicCertPath: /alipay/test/alipayPublicCert.crt notifyUrl: http://121.40.117.244:9310/rest/v1/alipay-callback/notify - returnUrl: + defaultReturnUrl: http://121.40.214.172/index.html + orderReturnUrl: http://121.40.214.172/index.html signType: RSA2 charset: UTF-8 gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java index e85d7d275..851047bfd 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java @@ -28,4 +28,8 @@ public class RechargeAddDTO { * 支付来源 */ private EPayPage payPage; + /** + * 支付完成后跳转url + */ + private String returnUrl; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java b/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java index ec6d8f83b..483cf22ca 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java +++ b/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java @@ -29,9 +29,10 @@ public interface PaymentManager { * @param subject * @param payPage * @param expireTime + * @param returnUrl * @return 跳转页面数据/签名字符串/支付跳转链接/预支付交易会话标识(根据支付渠道&支付来源确定) */ - String pay(String tradeNo, BigDecimal amount, String subject, EPayPage payPage, Date expireTime); + String pay(String tradeNo, BigDecimal amount, String subject, EPayPage payPage, Date expireTime, String returnUrl); /** * 订单支付 diff --git a/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java b/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java index e479f9f9b..bbb021981 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.xkt.manager.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSON; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; @@ -61,8 +62,11 @@ public class AliPaymentMangerImpl implements PaymentManager, InitializingBean { @Value("${alipay.notifyUrl:}") private String notifyUrl; - @Value("${alipay.returnUrl:}") - private String returnUrl; + @Value("${alipay.defaultReturnUrl:}") + private String defaultReturnUrl; + + @Value("${alipay.orderReturnUrl:}") + private String orderReturnUrl; @Value("${alipay.signType:}") private String signType; @@ -109,7 +113,8 @@ public class AliPaymentMangerImpl implements PaymentManager, InitializingBean { } @Override - public String pay(String tradeNo, BigDecimal amount, String subject, EPayPage payPage, Date expireTime) { + public String pay(String tradeNo, BigDecimal amount, String subject, EPayPage payPage, Date expireTime, + String returnUrl) { Assert.notEmpty(tradeNo); Assert.notNull(amount); Assert.notEmpty(subject); @@ -120,7 +125,9 @@ public class AliPaymentMangerImpl implements PaymentManager, InitializingBean { reqDTO.setSubject(subject); reqDTO.setEnablePayChannels("balance,moneyFund,bankPay,debitCardExpress"); reqDTO.setTimeExpire(DateUtil.formatDateTime(expireTime)); - + if (StrUtil.isBlank(returnUrl)) { + returnUrl = defaultReturnUrl; + } switch (payPage) { case WEB: reqDTO.setProductCode("FAST_INSTANT_TRADE_PAY"); @@ -195,7 +202,7 @@ public class AliPaymentMangerImpl implements PaymentManager, InitializingBean { throw new ServiceException("订单[" + orderExt.getOrder().getOrderNo() + "]支付状态异常"); } return pay(orderExt.getOrder().getOrderNo(), orderExt.getOrder().getTotalAmount(), - "代发订单" + orderExt.getOrder().getOrderNo(), payPage, null); + "代发订单" + orderExt.getOrder().getOrderNo(), payPage, null, orderReturnUrl); } @Override diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AssetServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AssetServiceImpl.java index d4d0e41bb..4ecb8b425 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AssetServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AssetServiceImpl.java @@ -245,7 +245,7 @@ public class AssetServiceImpl implements IAssetService { 7, TimeUnit.DAYS); PaymentManager paymentManager = getPaymentManager(rechargeAddDTO.getPayChannel()); String payRtnStr = paymentManager.pay(billNo, rechargeAddDTO.getAmount(), - "档口充值", rechargeAddDTO.getPayPage(), null); + "档口充值", rechargeAddDTO.getPayPage(), null, rechargeAddDTO.getReturnUrl()); return new RechargeAddResult(billNo, payRtnStr); }