mall + pay:

1、调整 returnUrl 的实现
This commit is contained in:
YunaiV
2023-07-04 23:43:16 +08:00
parent 23e3c4d0d9
commit 20eb0a2a88
13 changed files with 33 additions and 79 deletions

View File

@ -6,8 +6,6 @@ import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
import cn.iocoder.yudao.framework.pay.core.client.dto.notify.PayNotifyReqDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.notify.PayOrderNotifyRespDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.notify.PayRefundNotifyRespDTO;
import cn.iocoder.yudao.module.pay.dal.dataobject.merchant.PayChannelDO;
import cn.iocoder.yudao.module.pay.service.merchant.PayChannelService;
import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
import cn.iocoder.yudao.module.pay.service.refund.PayRefundService;
import io.swagger.v3.oas.annotations.Operation;
@ -39,23 +37,6 @@ public class PayNotifyController {
@Resource
private PayClientFactory payClientFactory;
/**
* 统一的跳转页面,支付宝跳转参数说明
*
* <a href="https://opendocs.alipay.com/open/203/105285#前台回跳参数说明">支付宝 - 前台回跳参数说明</a>
*
* @param channelId 渠道编号
* @return 返回跳转页面
*/
@GetMapping(value = "/return/{channelId}")
@Operation(summary = "渠道统一的支付成功返回地址")
@Deprecated // TODO yunai如果是 way 的情况,应该是跳转回前端地址
public String returnCallback(@PathVariable("channelId") Long channelId,
@RequestParam Map<String, String> params) {
log.info("[returnCallback][app_id({}) 跳转]", params.get("app_id"));
return String.format("渠道[%s]支付成功", channelId);
}
/**
* 统一的渠道支付回调,支付宝的退款回调
*

View File

@ -2,11 +2,10 @@ package cn.iocoder.yudao.module.pay.controller.admin.order.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.URL;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.awt.*;
import java.util.Map;
@Schema(description = "管理后台 - 支付订单提交 Request VO")
@ -26,4 +25,9 @@ public class PayOrderSubmitReqVO {
@Schema(description = "展示模式", example = "url") // 参见 {@link PayDisplayModeEnum} 枚举。如果不传递,则每个支付渠道使用默认的方式
private String displayMode;
@Schema(description = "回跳地址")
@URL(message = "回跳地址的格式必须是 URL")
private String returnUrl;
}

View File

@ -5,6 +5,6 @@ Authorization: Bearer {{appToken}}
tenant-id: {{appTenentId}}
{
"id": 125,
"channelCode": "alipay_qr"
"id": 174,
"channelCode": "alipay_pc"
}

View File

@ -4,7 +4,6 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.pay.config.PayProperties;
import cn.iocoder.yudao.framework.pay.core.client.PayClient;
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
@ -44,7 +43,7 @@ import java.util.Collection;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.*;
import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString;
/**
* 支付订单 Service 实现类
@ -147,7 +146,7 @@ public class PayOrderServiceImpl implements PayOrderService {
.setMerchantOrderId(orderExtension.getNo()) // 注意,此处使用的是 PayOrderExtensionDO.no 属性!
.setSubject(order.getSubject()).setBody(order.getBody())
.setNotifyUrl(genChannelPayNotifyUrl(channel))
.setReturnUrl(genChannelReturnUrl(channel))
.setReturnUrl(reqVO.getReturnUrl())
// 订单相关字段
.setAmount(order.getAmount()).setExpireTime(order.getExpireTime());
PayOrderUnifiedRespDTO unifiedOrderRespDTO = client.unifiedOrder(unifiedOrderReqDTO);
@ -183,15 +182,6 @@ public class PayOrderServiceImpl implements PayOrderService {
return channel;
}
/**
* 根据支付渠道的编码,生成支付渠道的返回地址
* @param channel 支付渠道
* @return 支付成功返回的地址。 配置地址 + "/" + channel id
*/
private String genChannelReturnUrl(PayChannelDO channel) {
return payProperties.getReturnUrl() + "/" + channel.getId();
}
/**
* 根据支付渠道的编码,生成支付渠道的回调地址
*