mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-09 22:45:58 +08:00
refactor(payment): 普通支付系列类统一 Normal 前缀, 规范命名语序与注释
This commit is contained in:
@@ -6,7 +6,7 @@ import cn.daxpay.open.channel.alipay.dto.AlipayPayResp;
|
||||
import cn.daxpay.open.payment.common.result.DaxResult;
|
||||
import cn.daxpay.open.payment.pay.bo.PayTradeResultBo;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import cn.daxpay.open.platform.core.enums.unipay.PayBodyTypeEnum;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -34,7 +34,7 @@ public class AlipayPayService {
|
||||
/// @param payParam 支付参数
|
||||
/// @param config 通道调用配置(密钥/证书/回调地址等)
|
||||
/// @return 支付结果
|
||||
public PayTradeResultBo pay(PayTrade order, PayParam payParam, Map<String, Object> config) {
|
||||
public PayTradeResultBo pay(PayTrade order, NormalPayParam payParam, Map<String, Object> config) {
|
||||
// 构建请求
|
||||
AlipayPayReq req = new AlipayPayReq();
|
||||
req.setChannel("alipay");
|
||||
|
||||
@@ -5,7 +5,7 @@ import cn.daxpay.open.payment.admin.result.develop.DevelopPayResult;
|
||||
import cn.daxpay.open.payment.admin.result.develop.DevelopSignResult;
|
||||
import cn.daxpay.open.payment.admin.service.develop.DevelopTradeService;
|
||||
import cn.daxpay.open.payment.masterdata.constants.provider.result.PayProviderMethodResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.core.annotation.PermCode;
|
||||
import cn.daxpay.open.platform.core.rest.Res;
|
||||
import cn.daxpay.open.platform.core.rest.dto.LabelValue;
|
||||
@@ -35,14 +35,14 @@ public class DevelopTradeController {
|
||||
@PermCode(code = "sign", nameCn = "签名", nameEn = "Sign")
|
||||
@Operation(summary = "支付参数签名")
|
||||
@PostMapping("/sign")
|
||||
public Result<DevelopSignResult> sign(@RequestBody DevelopParam<PayParam> param) {
|
||||
public Result<DevelopSignResult> sign(@RequestBody DevelopParam<NormalPayParam> param) {
|
||||
return Res.ok(developTradeService.sign(param));
|
||||
}
|
||||
|
||||
@PermCode(code = "pay", nameCn = "支付", nameEn = "Pay")
|
||||
@Operation(summary = "支付调试(真实发起)")
|
||||
@PostMapping("/pay")
|
||||
public Result<DevelopPayResult> pay(@RequestBody DevelopParam<PayParam> param) {
|
||||
public Result<DevelopPayResult> pay(@RequestBody DevelopParam<NormalPayParam> param) {
|
||||
return Res.ok(developTradeService.pay(param));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cn.daxpay.open.payment.admin.result.develop;
|
||||
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -21,5 +21,5 @@ public class DevelopPayResult {
|
||||
|
||||
/// 支付结果
|
||||
@Schema(description = "支付结果")
|
||||
private PayResult payResult;
|
||||
private NormalPayResult payResult;
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import cn.daxpay.open.payment.masterdata.constants.provider.result.PayProviderMe
|
||||
import cn.daxpay.open.payment.masterdata.constants.provider.service.PayProviderMethodService;
|
||||
import cn.daxpay.open.payment.merchant.service.route.support.PayRouteStrategyCapabilitySupport;
|
||||
import cn.daxpay.open.payment.pay.service.NormalPayService;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import cn.daxpay.open.platform.common.json.util.JsonUtil;
|
||||
import cn.daxpay.open.platform.core.rest.dto.LabelValue;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -36,7 +36,7 @@ public class DevelopTradeService {
|
||||
private final PayRouteStrategyCapabilitySupport payRouteStrategyCapabilitySupport;
|
||||
|
||||
/// 生成支付参数签名(与正式签名逻辑一致)
|
||||
public DevelopSignResult sign(DevelopParam<PayParam> param) {
|
||||
public DevelopSignResult sign(DevelopParam<NormalPayParam> param) {
|
||||
// 签名串(与 PaySignUtil 内部一致)
|
||||
String signStr = ObjectSignStrUtil.buildSignStr(param.getParam());
|
||||
// 签名值
|
||||
@@ -45,8 +45,8 @@ public class DevelopTradeService {
|
||||
}
|
||||
|
||||
/// 支付调试(真实发起)
|
||||
public DevelopPayResult pay(DevelopParam<PayParam> param) {
|
||||
PayParam payParam = param.getParam();
|
||||
public DevelopPayResult pay(DevelopParam<NormalPayParam> param) {
|
||||
NormalPayParam payParam = param.getParam();
|
||||
// 记录发送的请求体
|
||||
String requestBody = JsonUtil.toJsonStr(payParam);
|
||||
// 签名信息(传入私钥时生成, 便于核对)
|
||||
@@ -55,7 +55,7 @@ public class DevelopTradeService {
|
||||
signInfo = this.sign(param);
|
||||
}
|
||||
// 在支付作用域内执行, 初始化商户上下文, 使 mchNo/appId 等字段自动填充
|
||||
PayResult payResult = paymentScopeManager.executeWithScope(
|
||||
NormalPayResult payResult = paymentScopeManager.executeWithScope(
|
||||
payParam.getMchNo(), payParam.getAppId(),
|
||||
() -> normalPayService.pay(payParam)
|
||||
);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package cn.daxpay.open.payment.common.context;
|
||||
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
|
||||
public class PayContext {
|
||||
|
||||
/// 支付参数
|
||||
private PayParam payParam;
|
||||
private NormalPayParam payParam;
|
||||
|
||||
/// 资金交易凭证
|
||||
private PayTrade trade;
|
||||
@@ -26,7 +26,7 @@ public class PayContext {
|
||||
public PayContext() {
|
||||
}
|
||||
|
||||
public PayContext(PayParam payParam) {
|
||||
public PayContext(NormalPayParam payParam) {
|
||||
this.payParam = payParam;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.Arrays;
|
||||
/// 字典: normal_order_status
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum NormalOrderStatusEnum implements I18nSupport {
|
||||
public enum NormalPayOrderStatusEnum implements I18nSupport {
|
||||
|
||||
/// 待支付
|
||||
WAIT_PAY("wait_pay"),
|
||||
@@ -32,7 +32,7 @@ public enum NormalOrderStatusEnum implements I18nSupport {
|
||||
return "enum.normal_order_status";
|
||||
}
|
||||
|
||||
public static NormalOrderStatusEnum findByCode(String code) {
|
||||
public static NormalPayOrderStatusEnum findByCode(String code) {
|
||||
return Arrays.stream(values())
|
||||
.filter(e -> e.getCode().equals(code))
|
||||
.findFirst()
|
||||
@@ -2,8 +2,8 @@ package cn.daxpay.open.payment.old.pay.convert.order.pay;
|
||||
|
||||
import cn.daxpay.open.payment.common.context.CallbackInfo;
|
||||
import cn.daxpay.open.payment.old.pay.bo.sync.PaySyncResultBo;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayOrderResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayOrderResult;
|
||||
import cn.daxpay.open.payment.old.pay.entity.order.pay.PayOrder;
|
||||
import cn.daxpay.open.payment.old.pay.entity.order.pay.PayOrderExpand;
|
||||
import cn.daxpay.open.payment.old.pay.result.order.pay.PayOrderExpandResult;
|
||||
@@ -24,12 +24,12 @@ public interface PayOrderConvert {
|
||||
|
||||
PayOrderVo toVo(PayOrder payOrder);
|
||||
|
||||
PayOrderResult toResult(PayOrder payOrder);
|
||||
NormalPayOrderResult toResult(PayOrder payOrder);
|
||||
|
||||
PayOrderExpandResult toResult(PayOrderExpand payOrder);
|
||||
|
||||
@Mapping(target = "limitPay", source = "limitPay")
|
||||
void copy(PayParam param, @MappingTarget PayOrder payOrder);
|
||||
void copy(NormalPayParam param, @MappingTarget PayOrder payOrder);
|
||||
|
||||
/// 将 List<String> limitPay 转换为逗号分隔的字符串
|
||||
default String mapListToString(List<String> list) {
|
||||
@@ -45,5 +45,5 @@ public interface PayOrderConvert {
|
||||
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
|
||||
void copy(PaySyncResultBo resultBo, @MappingTarget PayOrderExpand payOrderExpand);
|
||||
|
||||
void copy(PayOrderExpand orderExpand, @MappingTarget PayOrderResult noticeResult);
|
||||
void copy(PayOrderExpand orderExpand, @MappingTarget NormalPayOrderResult noticeResult);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package cn.daxpay.open.payment.old.pay.result.notice.callback;
|
||||
import cn.daxpay.open.platform.core.enums.pay.notice.CallbackNoticeTypeEnum;
|
||||
import cn.daxpay.open.platform.core.enums.pay.trade.TradeTypeEnum;
|
||||
import cn.daxpay.open.payment.common.result.MchTradeBaseResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayOrderResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayOrderResult;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -38,7 +38,7 @@ public class MerchantCallbackTaskResult extends MchTradeBaseResult {
|
||||
private String tradeType;
|
||||
|
||||
/// 消息内容
|
||||
/// @see PayOrderResult
|
||||
/// @see NormalPayOrderResult
|
||||
@Schema(description = "消息内容")
|
||||
private String content;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cn.daxpay.open.payment.old.pay.service.assist;
|
||||
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.core.code.CommonErrorCode;
|
||||
import cn.daxpay.open.platform.core.exception.BizInfoException;
|
||||
import cn.daxpay.open.platform.common.i18n.util.I18nUtil;
|
||||
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Component;
|
||||
public class PayParamCapabilityValidator {
|
||||
|
||||
/// 当已传入支付方式 method 时,校验其必填性
|
||||
public void validate(PayParam payParam) {
|
||||
public void validate(NormalPayParam payParam) {
|
||||
if (StrUtil.isBlank(payParam.getMethod())) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cn.daxpay.open.payment.old.pay.service.assist;
|
||||
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.core.code.CommonErrorCode;
|
||||
import cn.daxpay.open.platform.core.exception.BizInfoException;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
|
||||
public class PayParamRouteValidator {
|
||||
|
||||
/// 校验支付参数与路由模式相关的字段
|
||||
public void validate(PayParam payParam) {
|
||||
public void validate(NormalPayParam payParam) {
|
||||
if (StrUtil.isNotBlank(payParam.getProduct())) {
|
||||
if (StrUtil.isBlank(payParam.getMethod())) {
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR,
|
||||
|
||||
@@ -19,8 +19,8 @@ import cn.daxpay.open.payment.old.pay.exception.TradeNotExistException;
|
||||
import cn.daxpay.open.payment.old.pay.param.order.pay.PayOrderQuery;
|
||||
import cn.daxpay.open.payment.old.pay.result.order.pay.PayOrderExpandResult;
|
||||
import cn.daxpay.open.payment.old.pay.result.order.pay.PayOrderVo;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.QueryPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayOrderResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayQueryParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayOrderResult;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -100,7 +100,7 @@ public class PayOrderQueryService {
|
||||
}
|
||||
|
||||
/// 查询支付记录
|
||||
public PayOrderResult queryPayOrder(QueryPayParam param) {
|
||||
public NormalPayOrderResult queryPayOrder(NormalPayQueryParam param) {
|
||||
// 校验参数
|
||||
if (StrUtil.isBlank(param.getOrderNo()) && Objects.isNull(param.getBizOrderNo())){
|
||||
// 支付订单号不能都为空
|
||||
|
||||
@@ -21,8 +21,8 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.daxpay.open.payment.old.pay.exception.TradeStatusErrorException;
|
||||
import cn.daxpay.open.payment.common.context.PaymentContext;
|
||||
import cn.daxpay.open.payment.old.pay.service.order.pay.PayOrderQueryService;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -50,7 +50,7 @@ public class PayAssistService {
|
||||
|
||||
/// 创建支付订单并保存, 返回支付订单
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PayOrder createPayOrder(PayParam payParam) {
|
||||
public PayOrder createPayOrder(NormalPayParam payParam) {
|
||||
// 订单超时时间
|
||||
OffsetDateTime expiredTime = this.getExpiredTime(payParam.getExpiredTime());
|
||||
// 构建支付订单对象
|
||||
@@ -96,7 +96,7 @@ public class PayAssistService {
|
||||
|
||||
/// 更新, 通常只有网关支付方式创建的订单才需要进行更新, 用来设置支付方式等信息
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updatePayOrder(PayParam payParam, PayOrder payOrder) {
|
||||
public void updatePayOrder(NormalPayParam payParam, PayOrder payOrder) {
|
||||
payOrder.setProduct(payParam.getProduct())
|
||||
.setMethod(payParam.getMethod())
|
||||
.setStatus(PayStatusEnum.PROGRESS.getCode());
|
||||
@@ -172,9 +172,9 @@ public class PayAssistService {
|
||||
///
|
||||
/// @param payOrder 支付订单
|
||||
/// @param orderExpand 支付订单扩展信息
|
||||
/// @return PayResult 支付结果
|
||||
public PayResult buildResult(PayOrder payOrder, PayOrderExpand orderExpand) {
|
||||
return new PayResult()
|
||||
/// @return NormalPayResult 支付结果
|
||||
public NormalPayResult buildResult(PayOrder payOrder, PayOrderExpand orderExpand) {
|
||||
return new NormalPayResult()
|
||||
.setBizOrderNo(payOrder.getBizOrderNo())
|
||||
.setOrderNo(payOrder.getOrderNo())
|
||||
.setStatus(payOrder.getStatus())
|
||||
|
||||
@@ -23,7 +23,7 @@ import cn.daxpay.open.payment.old.pay.service.order.pay.PayOrderQueryService;
|
||||
import cn.daxpay.open.payment.old.pay.service.record.close.PayCloseRecordService;
|
||||
import cn.daxpay.open.payment.old.pay.service.trade.TradeUniHandleService;
|
||||
import cn.daxpay.open.payment.strategy.pay.AbsPayCloseStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayCloseParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayCloseParam;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.lock.LockInfo;
|
||||
import com.baomidou.lock.LockTemplate;
|
||||
@@ -54,7 +54,7 @@ public class PayCloseService {
|
||||
private final PaymentContext apiContext;
|
||||
|
||||
/// 关闭支付
|
||||
public void close(PayCloseParam param){
|
||||
public void close(NormalPayCloseParam param){
|
||||
// 校验参数
|
||||
if (StrUtil.isBlank(param.getOrderNo()) && Objects.isNull(param.getBizOrderNo())){
|
||||
// 支付订单号不能都为空
|
||||
|
||||
@@ -20,8 +20,8 @@ import cn.daxpay.open.payment.masterdata.constants.product.service.PayProductCap
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.strategy.pay.AbsPayStrategy;
|
||||
import cn.daxpay.open.platform.core.enums.unipay.PayBodyTypeEnum;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
@@ -49,7 +49,7 @@ public class PayService {
|
||||
private final TradeUniHandleService tradeUniHandleService;
|
||||
|
||||
/// 支付入口
|
||||
public PayResult pay(PayParam payParam){
|
||||
public NormalPayResult pay(NormalPayParam payParam){
|
||||
// 校验超时时间, 不可早于当前
|
||||
payAssistService.validationExpiredTime(payParam.getExpiredTime());
|
||||
// 获取商户订单号
|
||||
@@ -76,7 +76,7 @@ public class PayService {
|
||||
|
||||
/// 支付操作 无事务
|
||||
/// 拆分为多阶段,1. 保存订单记录信息 2. 调起支付 3. 支付成功后操作
|
||||
public PayResult payHandle(PayParam payParam, PayOrder payOrder) {
|
||||
public NormalPayResult payHandle(NormalPayParam payParam, PayOrder payOrder) {
|
||||
// 获取支付策略类
|
||||
var payStrategy = PaymentStrategyFactory.createByProduct(payParam.getProduct(), AbsPayStrategy.class);
|
||||
PayContext context = new PayContext(payParam);
|
||||
@@ -148,7 +148,7 @@ public class PayService {
|
||||
|
||||
/// 支付调用成功后操作, 更新订单信息
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PayResult paySuccess(PayOrder payOrder, PayResultBo result){
|
||||
public NormalPayResult paySuccess(PayOrder payOrder, PayResultBo result){
|
||||
// 如果支付完成, 进行订单完成处理, 同时发送回调消息
|
||||
if (result.isComplete()) {
|
||||
payOrder.setStatus(PayStatusEnum.SUCCESS.getCode())
|
||||
|
||||
@@ -28,8 +28,8 @@ import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.strategy.pay.AbsPayCloseStrategy;
|
||||
import cn.daxpay.open.payment.strategy.sync.AbsSyncPayOrderStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PaySyncParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PaySyncResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPaySyncParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.lock.LockInfo;
|
||||
import com.baomidou.lock.LockTemplate;
|
||||
@@ -66,7 +66,7 @@ public class PaySyncService {
|
||||
|
||||
/// 支付同步, 开启一个新的事务, 不受外部抛出异常的影响
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
|
||||
public PaySyncResult sync(PaySyncParam param) {
|
||||
public NormalPaySyncResult sync(NormalPaySyncParam param) {
|
||||
// 校验参数
|
||||
if (StrUtil.isBlank(param.getOrderNo()) && Objects.isNull(param.getBizOrderNo())&& Objects.isNull(param.getOutOrderNo())){
|
||||
// 支付订单号不能都为空
|
||||
@@ -82,7 +82,7 @@ public class PaySyncService {
|
||||
/// 1. 如果状态一致, 不进行处理, 直接返回
|
||||
/// 2. 如果状态不一致, 更新状态/完成时间/关联网关订单号
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
|
||||
public PaySyncResult syncPayOrder(PayOrder payOrder) {
|
||||
public NormalPaySyncResult syncPayOrder(PayOrder payOrder) {
|
||||
// 待支付状态不允许同步
|
||||
if (Objects.equals(payOrder.getStatus(), PayStatusEnum.WAIT.getCode())){
|
||||
// 订单未开始支付, 请重新确认支付状态
|
||||
@@ -154,7 +154,7 @@ public class PaySyncService {
|
||||
// 同步失败记录日志
|
||||
this.saveRecord(payOrder, syncResult, true);
|
||||
}
|
||||
return new PaySyncResult()
|
||||
return new NormalPaySyncResult()
|
||||
.setOrderStatus(payOrder.getStatus())
|
||||
.setAdjust(statusSync);
|
||||
} finally {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package cn.daxpay.open.payment.pay.convert;
|
||||
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
@@ -14,12 +14,12 @@ public interface PayTradeConvert {
|
||||
|
||||
PayTradeConvert CONVERT = Mappers.getMapper(PayTradeConvert.class);
|
||||
|
||||
/// PayTrade + PayNormalOrder → PayResult
|
||||
/// PayTrade + NormalPayOrder → NormalPayResult
|
||||
@Mapping(target = "orderId", source = "trade.id")
|
||||
@Mapping(target = "orderNo", source = "trade.tradeNo")
|
||||
@Mapping(target = "status", source = "trade.status")
|
||||
@Mapping(target = "bizOrderNo", source = "normalOrder.bizOrderNo")
|
||||
@Mapping(target = "payBody", source = "trade.payBody")
|
||||
@Mapping(target = "payBodyType", source = "trade.payBodyType")
|
||||
PayResult toResult(PayTrade trade, PayNormalOrder normalOrder);
|
||||
NormalPayResult toResult(PayTrade trade, NormalPayOrder normalOrder);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package cn.daxpay.open.payment.pay.order.dao;
|
||||
|
||||
import cn.daxpay.open.platform.common.mybatisplus.impl.BaseManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -9,12 +9,12 @@ import java.util.Optional;
|
||||
/// # 普通支付业务单管理器
|
||||
///
|
||||
@Repository
|
||||
public class PayNormalOrderManager extends BaseManager<PayNormalOrderMapper, PayNormalOrder> {
|
||||
public class NormalPayOrderManager extends BaseManager<NormalPayOrderMapper, NormalPayOrder> {
|
||||
|
||||
/// 根据业务单号查询(按商户号自动租户隔离)
|
||||
public Optional<PayNormalOrder> findByBizOrderNo(String bizOrderNo) {
|
||||
public Optional<NormalPayOrder> findByBizOrderNo(String bizOrderNo) {
|
||||
return lambdaQuery()
|
||||
.eq(PayNormalOrder::getBizOrderNo, bizOrderNo)
|
||||
.eq(NormalPayOrder::getBizOrderNo, bizOrderNo)
|
||||
.oneOpt();
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package cn.daxpay.open.payment.pay.order.dao;
|
||||
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/// # 普通支付业务单 Mapper
|
||||
///
|
||||
@Mapper
|
||||
public interface PayNormalOrderMapper extends MPJBaseMapper<PayNormalOrder> {
|
||||
public interface NormalPayOrderMapper extends MPJBaseMapper<NormalPayOrder> {
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import cn.daxpay.open.payment.common.enums.NormalOrderStatusEnum;
|
||||
import cn.daxpay.open.payment.common.enums.NormalPayOrderStatusEnum;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.GoodsDetail;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.CurrencyEnum;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "pay_normal_order", autoResultMap = true)
|
||||
public class PayNormalOrder extends MchBaseEntity {
|
||||
public class NormalPayOrder extends MchBaseEntity {
|
||||
|
||||
/// 应用号
|
||||
@TableField(updateStrategy = FieldStrategy.NEVER, fill = FieldFill.INSERT)
|
||||
@@ -43,7 +43,7 @@ public class PayNormalOrder extends MchBaseEntity {
|
||||
private String description;
|
||||
|
||||
/// 业务状态
|
||||
/// @see NormalOrderStatusEnum
|
||||
/// @see NormalPayOrderStatusEnum
|
||||
private String status;
|
||||
|
||||
/// 异步通知地址(出站商户通知用)
|
||||
@@ -12,8 +12,8 @@ import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.pay.service.route.PayRouteFacade;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.daxpay.open.payment.strategy.pay.AbsPayStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.baomidou.lock.LockInfo;
|
||||
import com.baomidou.lock.LockTemplate;
|
||||
@@ -24,7 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/// # 常规支付服务类
|
||||
/// # 普通支付服务
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -38,7 +38,7 @@ public class NormalPayService {
|
||||
private final PayRouteFacade payRouteFacade;
|
||||
|
||||
/// 支付入口
|
||||
public PayResult pay(PayParam payParam) {
|
||||
public NormalPayResult pay(NormalPayParam payParam) {
|
||||
payAssistService.validationExpiredTime(payParam.getExpiredTime());
|
||||
String bizOrderNo = payParam.getBizOrderNo();
|
||||
LockInfo lock = lockTemplate.lock("payment:pay:" + bizOrderNo, 10000, 200);
|
||||
@@ -54,7 +54,7 @@ public class NormalPayService {
|
||||
}
|
||||
|
||||
/// 支付操作
|
||||
public PayResult payHandle(PayParam payParam, PayTrade trade) {
|
||||
public NormalPayResult payHandle(NormalPayParam payParam, PayTrade trade) {
|
||||
// 解析应用号:空则取商户默认应用
|
||||
payAssistService.resolveApp(payParam);
|
||||
// 路由解析:直定模式(已传 channelMchNo)直接解析,否则按 appId+method 策略匹配
|
||||
@@ -91,7 +91,7 @@ public class NormalPayService {
|
||||
|
||||
/// 支付成功后操作
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PayResult paySuccess(PayTrade trade, PayTradeResultBo result) {
|
||||
public NormalPayResult paySuccess(PayTrade trade, PayTradeResultBo result) {
|
||||
if (result.isComplete()) {
|
||||
trade.setStatus(PayFundStatusEnum.SUCCESS.getCode());
|
||||
trade.setPayTime(result.getFinishTime());
|
||||
|
||||
@@ -6,19 +6,19 @@ import cn.daxpay.open.platform.core.exception.BizInfoException;
|
||||
import cn.daxpay.open.platform.core.code.CommonErrorCode;
|
||||
import cn.daxpay.open.platform.core.util.DateTimeUtil;
|
||||
import cn.daxpay.open.platform.core.util.TradeNoGenerateUtil;
|
||||
import cn.daxpay.open.payment.common.enums.NormalOrderStatusEnum;
|
||||
import cn.daxpay.open.payment.common.enums.NormalPayOrderStatusEnum;
|
||||
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
|
||||
import cn.daxpay.open.payment.common.enums.PayTradeTypeEnum;
|
||||
import cn.daxpay.open.payment.common.service.MchAppInfoAssistQueryService;
|
||||
import cn.daxpay.open.payment.common.util.PayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.daxpay.open.payment.pay.convert.PayTradeConvert;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayNormalOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.NormalPayOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -36,12 +36,12 @@ import java.util.Optional;
|
||||
@RequiredArgsConstructor
|
||||
public class PayAssistService {
|
||||
|
||||
private final PayNormalOrderManager payNormalOrderManager;
|
||||
private final NormalPayOrderManager payNormalOrderManager;
|
||||
private final PayTradeManager payTradeManager;
|
||||
private final MchAppInfoAssistQueryService mchAppInfoAssistQueryService;
|
||||
|
||||
/// 解析应用号:param 有则用,无则取商户默认应用并回填到 param
|
||||
public void resolveApp(PayParam payParam) {
|
||||
public void resolveApp(NormalPayParam payParam) {
|
||||
if (StrUtil.isBlank(payParam.getAppId())) {
|
||||
String appId = mchAppInfoAssistQueryService.findDefaultAppId(payParam.getMchNo());
|
||||
payParam.setAppId(appId);
|
||||
@@ -51,7 +51,7 @@ public class PayAssistService {
|
||||
/// 创建支付订单(容器 + 资金交易)
|
||||
/// 调用方需保证 appId 和 product 已解析完毕
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PayTrade createOrder(PayParam payParam) {
|
||||
public PayTrade createOrder(NormalPayParam payParam) {
|
||||
String appId = payParam.getAppId();
|
||||
OffsetDateTime expiredTime = this.getExpiredTime(payParam.getExpiredTime());
|
||||
Long amount = payParam.getAmount();
|
||||
@@ -65,12 +65,12 @@ public class PayAssistService {
|
||||
}
|
||||
// 终端信息
|
||||
String terminalNo = payParam.getTerminal() != null ? payParam.getTerminal().getTerminalNo() : null;
|
||||
// 创建容器 PayNormalOrder(含冗余字段,方便查询)
|
||||
PayNormalOrder normalOrder = new PayNormalOrder();
|
||||
// 创建容器 NormalPayOrder(含冗余字段,方便查询)
|
||||
NormalPayOrder normalOrder = new NormalPayOrder();
|
||||
normalOrder.setBizOrderNo(payParam.getBizOrderNo());
|
||||
normalOrder.setTitle(payParam.getTitle());
|
||||
normalOrder.setDescription(payParam.getDescription());
|
||||
normalOrder.setStatus(NormalOrderStatusEnum.WAIT_PAY.getCode());
|
||||
normalOrder.setStatus(NormalPayOrderStatusEnum.WAIT_PAY.getCode());
|
||||
normalOrder.setNotifyUrl(payParam.getNotifyUrl());
|
||||
normalOrder.setReturnUrl(payParam.getReturnUrl());
|
||||
normalOrder.setAttach(payParam.getAttach());
|
||||
@@ -110,11 +110,11 @@ public class PayAssistService {
|
||||
|
||||
/// 根据业务单号查询并检查支付状态(按商户号自动租户隔离)
|
||||
public PayTrade getOrderAndCheck(String bizOrderNo) {
|
||||
Optional<PayNormalOrder> normalOrderOpt = payNormalOrderManager.findByBizOrderNo(bizOrderNo);
|
||||
Optional<NormalPayOrder> normalOrderOpt = payNormalOrderManager.findByBizOrderNo(bizOrderNo);
|
||||
if (normalOrderOpt.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
PayNormalOrder normalOrder = normalOrderOpt.get();
|
||||
NormalPayOrder normalOrder = normalOrderOpt.get();
|
||||
PayTrade trade = payTradeManager.findByContainerId(normalOrder.getId()).orElse(null);
|
||||
if (trade == null) {
|
||||
return null;
|
||||
@@ -124,14 +124,14 @@ public class PayAssistService {
|
||||
}
|
||||
|
||||
/// 检查订单状态
|
||||
public void checkOrder(PayNormalOrder normalOrder, PayTrade trade) {
|
||||
public void checkOrder(NormalPayOrder normalOrder, PayTrade trade) {
|
||||
// 容器状态检查
|
||||
String bizStatus = normalOrder.getStatus();
|
||||
if (Objects.equals(bizStatus, NormalOrderStatusEnum.PAID.getCode())) {
|
||||
if (Objects.equals(bizStatus, NormalPayOrderStatusEnum.PAID.getCode())) {
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "pay.error.pay.alreadySuccess");
|
||||
}
|
||||
if (Objects.equals(bizStatus, NormalOrderStatusEnum.CLOSED.getCode())
|
||||
|| Objects.equals(bizStatus, NormalOrderStatusEnum.EXPIRED.getCode())) {
|
||||
if (Objects.equals(bizStatus, NormalPayOrderStatusEnum.CLOSED.getCode())
|
||||
|| Objects.equals(bizStatus, NormalPayOrderStatusEnum.EXPIRED.getCode())) {
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "pay.error.pay.failedOrClosed");
|
||||
}
|
||||
// 资金状态检查
|
||||
@@ -151,8 +151,8 @@ public class PayAssistService {
|
||||
}
|
||||
|
||||
/// 根据 PayTrade 构建支付结果
|
||||
public PayResult buildResult(PayTrade trade) {
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId()).orElse(null);
|
||||
public NormalPayResult buildResult(PayTrade trade) {
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId()).orElse(null);
|
||||
return PayTradeConvert.CONVERT.toResult(trade, normalOrder);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import cn.daxpay.open.platform.core.exception.system.DataErrorException;
|
||||
import cn.daxpay.open.payment.common.context.CallbackInfo;
|
||||
import cn.daxpay.open.payment.common.context.PaymentContext;
|
||||
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayNormalOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.NormalPayOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import com.baomidou.lock.LockInfo;
|
||||
@@ -26,7 +26,7 @@ import java.util.Objects;
|
||||
public class PayCallbackService {
|
||||
|
||||
private final PayTradeManager payTradeManager;
|
||||
private final PayNormalOrderManager payNormalOrderManager;
|
||||
private final NormalPayOrderManager payNormalOrderManager;
|
||||
private final PayUniHandleService payUniHandleService;
|
||||
private final PaymentContext apiContext;
|
||||
private final LockTemplate lockTemplate;
|
||||
@@ -57,7 +57,7 @@ public class PayCallbackService {
|
||||
if (Objects.nonNull(callbackInfo.getOutTradeNo())) {
|
||||
trade.setOutOrderNo(callbackInfo.getOutTradeNo());
|
||||
}
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
.orElseThrow(() -> new DataErrorException("error.payment.order.payOrderNotExist"));
|
||||
if (Objects.equals(CallbackStatusEnum.SUCCESS.getCode(), callbackInfo.getTradeStatus())) {
|
||||
this.success(trade, normalOrder, callbackInfo);
|
||||
@@ -71,7 +71,7 @@ public class PayCallbackService {
|
||||
}
|
||||
|
||||
/// 成功处理
|
||||
private void success(PayTrade trade, PayNormalOrder normalOrder, CallbackInfo callbackInfo) {
|
||||
private void success(PayTrade trade, NormalPayOrder normalOrder, CallbackInfo callbackInfo) {
|
||||
trade.setStatus(PayFundStatusEnum.SUCCESS.getCode());
|
||||
trade.setPayTime(callbackInfo.getFinishTime());
|
||||
trade.setCloseTime(null);
|
||||
@@ -82,7 +82,7 @@ public class PayCallbackService {
|
||||
}
|
||||
|
||||
/// 失败处理
|
||||
private void fail(PayTrade trade, PayNormalOrder normalOrder, CallbackInfo callbackInfo) {
|
||||
private void fail(PayTrade trade, NormalPayOrder normalOrder, CallbackInfo callbackInfo) {
|
||||
if (!Objects.equals(trade.getStatus(), PayFundStatusEnum.PROCESSING.getCode())) {
|
||||
callbackInfo.setCallbackStatus(CallbackStatusEnum.IGNORE)
|
||||
.setCallbackErrorMsg("订单不是支付中状态,忽略");
|
||||
|
||||
@@ -8,12 +8,12 @@ import cn.daxpay.open.platform.core.exception.PayFailureException;
|
||||
import cn.daxpay.open.platform.core.exception.operation.OperationFailException;
|
||||
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
|
||||
import cn.daxpay.open.payment.common.util.PaymentStrategyFactory;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayNormalOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.NormalPayOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.strategy.pay.AbsPayCloseStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayCloseParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayCloseParam;
|
||||
import cn.daxpay.open.platform.core.enums.pay.pay.CloseTypeEnum;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.lock.LockInfo;
|
||||
@@ -33,19 +33,19 @@ import java.util.Objects;
|
||||
public class PayCloseService {
|
||||
|
||||
private final PayTradeManager payTradeManager;
|
||||
private final PayNormalOrderManager payNormalOrderManager;
|
||||
private final NormalPayOrderManager payNormalOrderManager;
|
||||
private final PayUniHandleService payUniHandleService;
|
||||
private final LockTemplate lockTemplate;
|
||||
|
||||
/// 关闭支付
|
||||
public void close(PayCloseParam param) {
|
||||
public void close(NormalPayCloseParam param) {
|
||||
if (StrUtil.isBlank(param.getOrderNo()) && Objects.isNull(param.getBizOrderNo())) {
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "pay.error.orderNoRequired");
|
||||
}
|
||||
PayTrade trade = payTradeManager.findByTradeNo(param.getOrderNo())
|
||||
.orElse(null);
|
||||
if (Objects.isNull(trade) && Objects.nonNull(param.getBizOrderNo())) {
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findByBizOrderNo(param.getBizOrderNo())
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findByBizOrderNo(param.getBizOrderNo())
|
||||
.orElse(null);
|
||||
if (Objects.nonNull(normalOrder)) {
|
||||
trade = payTradeManager.findByContainerId(normalOrder.getId())
|
||||
@@ -69,7 +69,7 @@ public class PayCloseService {
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "pay.error.pay.closeProcessing");
|
||||
}
|
||||
try {
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
.orElse(null);
|
||||
if (Objects.equals(PayFundStatusEnum.INIT.getCode(), trade.getStatus())) {
|
||||
payUniHandleService.payClose(trade, normalOrder);
|
||||
|
||||
@@ -10,13 +10,13 @@ import cn.daxpay.open.platform.core.util.DateTimeUtil;
|
||||
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
|
||||
import cn.daxpay.open.payment.common.util.PaymentStrategyFactory;
|
||||
import cn.daxpay.open.payment.pay.bo.PaySyncResultBo;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayNormalOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.NormalPayOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.strategy.sync.AbsSyncPayOrderStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PaySyncParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PaySyncResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPaySyncParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.lock.LockInfo;
|
||||
import com.baomidou.lock.LockTemplate;
|
||||
@@ -39,13 +39,13 @@ import java.util.Optional;
|
||||
public class PaySyncService {
|
||||
|
||||
private final PayTradeManager payTradeManager;
|
||||
private final PayNormalOrderManager payNormalOrderManager;
|
||||
private final NormalPayOrderManager payNormalOrderManager;
|
||||
private final PayUniHandleService payUniHandleService;
|
||||
private final LockTemplate lockTemplate;
|
||||
|
||||
/// 支付同步
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
|
||||
public PaySyncResult sync(PaySyncParam param) {
|
||||
public NormalPaySyncResult sync(NormalPaySyncParam param) {
|
||||
if (StrUtil.isBlank(param.getOrderNo()) && Objects.isNull(param.getBizOrderNo())
|
||||
&& Objects.isNull(param.getOutOrderNo())) {
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "pay.error.orderNoRequired");
|
||||
@@ -55,7 +55,7 @@ public class PaySyncService {
|
||||
trade = payTradeManager.findByTradeNo(param.getOrderNo()).orElse(null);
|
||||
}
|
||||
if (Objects.isNull(trade) && Objects.nonNull(param.getBizOrderNo())) {
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findByBizOrderNo(
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findByBizOrderNo(
|
||||
param.getBizOrderNo()).orElse(null);
|
||||
if (Objects.nonNull(normalOrder)) {
|
||||
trade = payTradeManager.findByContainerId(normalOrder.getId())
|
||||
@@ -74,7 +74,7 @@ public class PaySyncService {
|
||||
|
||||
/// 同步支付状态
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
|
||||
public PaySyncResult syncPayOrder(PayTrade trade) {
|
||||
public NormalPaySyncResult syncPayOrder(PayTrade trade) {
|
||||
if (Objects.equals(trade.getStatus(), PayFundStatusEnum.INIT.getCode())) {
|
||||
throw new BizInfoException(DaxPayErrorCode.TRADE_STATUS_ERROR, "pay.error.pay.syncNotStarted");
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public class PaySyncService {
|
||||
throw new RepetitiveOperationException();
|
||||
}
|
||||
try {
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
.orElse(null);
|
||||
var syncStrategy = PaymentStrategyFactory.createByProduct(
|
||||
trade.getProduct(), AbsSyncPayOrderStrategy.class);
|
||||
@@ -100,7 +100,7 @@ public class PaySyncService {
|
||||
syncResult.setSyncSuccess(false).setSyncErrorMsg(e.getMessage());
|
||||
}
|
||||
}
|
||||
return new PaySyncResult()
|
||||
return new NormalPaySyncResult()
|
||||
.setOrderStatus(trade.getStatus())
|
||||
.setAdjust(statusSync);
|
||||
} finally {
|
||||
@@ -131,7 +131,7 @@ public class PaySyncService {
|
||||
}
|
||||
|
||||
/// 根据同步结果调整支付单状态
|
||||
private void adjustHandler(PaySyncResultBo syncResult, PayTrade trade, PayNormalOrder normalOrder) {
|
||||
private void adjustHandler(PaySyncResultBo syncResult, PayTrade trade, NormalPayOrder normalOrder) {
|
||||
var payStatus = syncResult.getPayStatus();
|
||||
if (Objects.isNull(payStatus)) {
|
||||
return;
|
||||
@@ -146,7 +146,7 @@ public class PaySyncService {
|
||||
}
|
||||
|
||||
/// 同步成功后更新
|
||||
private void success(PayTrade trade, PayNormalOrder normalOrder, PaySyncResultBo syncResult) {
|
||||
private void success(PayTrade trade, NormalPayOrder normalOrder, PaySyncResultBo syncResult) {
|
||||
trade.setStatus(PayFundStatusEnum.SUCCESS.getCode());
|
||||
trade.setPayTime(syncResult.getFinishTime());
|
||||
trade.setCloseTime(null);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package cn.daxpay.open.payment.pay.service;
|
||||
|
||||
import cn.daxpay.open.payment.common.enums.NormalOrderStatusEnum;
|
||||
import cn.daxpay.open.payment.common.enums.NormalPayOrderStatusEnum;
|
||||
import cn.daxpay.open.payment.common.enums.PayFundStatusEnum;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayNormalOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayNormalOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.NormalPayOrderManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.NormalPayOrder;
|
||||
import cn.daxpay.open.payment.pay.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.pay.order.entity.PayTrade;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -23,14 +23,14 @@ import java.util.Objects;
|
||||
public class PayUniHandleService {
|
||||
|
||||
private final PayTradeManager payTradeManager;
|
||||
private final PayNormalOrderManager payNormalOrderManager;
|
||||
private final NormalPayOrderManager payNormalOrderManager;
|
||||
|
||||
/// 支付成功后续处理(同步冗余时间线到容器)
|
||||
public void paySuccess(PayTrade trade) {
|
||||
PayNormalOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
NormalPayOrder normalOrder = payNormalOrderManager.findById(trade.getContainerId())
|
||||
.orElse(null);
|
||||
if (normalOrder != null) {
|
||||
normalOrder.setStatus(NormalOrderStatusEnum.PAID.getCode());
|
||||
normalOrder.setStatus(NormalPayOrderStatusEnum.PAID.getCode());
|
||||
normalOrder.setPayTime(trade.getPayTime());
|
||||
payNormalOrderManager.updateById(normalOrder);
|
||||
}
|
||||
@@ -38,23 +38,23 @@ public class PayUniHandleService {
|
||||
}
|
||||
|
||||
/// 支付失败处理(同步冗余时间线到容器)
|
||||
public void payFail(PayTrade trade, PayNormalOrder normalOrder, String errMsg) {
|
||||
public void payFail(PayTrade trade, NormalPayOrder normalOrder, String errMsg) {
|
||||
OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC);
|
||||
trade.setStatus(PayFundStatusEnum.FAIL.getCode());
|
||||
trade.setErrorMsg(errMsg);
|
||||
trade.setCloseTime(now);
|
||||
normalOrder.setStatus(NormalOrderStatusEnum.CLOSED.getCode());
|
||||
normalOrder.setStatus(NormalPayOrderStatusEnum.CLOSED.getCode());
|
||||
normalOrder.setCloseTime(now);
|
||||
payTradeManager.updateById(trade);
|
||||
payNormalOrderManager.updateById(normalOrder);
|
||||
}
|
||||
|
||||
/// 支付关闭处理(同步冗余时间线到容器)
|
||||
public void payClose(PayTrade trade, PayNormalOrder normalOrder) {
|
||||
public void payClose(PayTrade trade, NormalPayOrder normalOrder) {
|
||||
OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC);
|
||||
trade.setStatus(PayFundStatusEnum.CLOSE.getCode());
|
||||
trade.setCloseTime(now);
|
||||
normalOrder.setStatus(NormalOrderStatusEnum.CLOSED.getCode());
|
||||
normalOrder.setStatus(NormalPayOrderStatusEnum.CLOSED.getCode());
|
||||
normalOrder.setCloseTime(now);
|
||||
payTradeManager.updateById(trade);
|
||||
payNormalOrderManager.updateById(normalOrder);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cn.daxpay.open.payment.pay.service.route;
|
||||
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
|
||||
/// # 支付路由门面接口
|
||||
///
|
||||
@@ -10,5 +10,5 @@ public interface PayRouteFacade {
|
||||
|
||||
/// 解析支付路由:直定模式(已传 channelMchNo)直接解析,否则按策略模式匹配并回填。
|
||||
/// 调用方需保证 appId 已解析完毕。
|
||||
void resolve(PayParam payParam);
|
||||
void resolve(NormalPayParam payParam);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import cn.daxpay.open.payment.old.pay.anno.PaymentVerify;
|
||||
import cn.daxpay.open.payment.old.pay.service.assist.PayParamCapabilityValidator;
|
||||
import cn.daxpay.open.payment.old.pay.service.assist.PayParamRouteValidator;
|
||||
import cn.daxpay.open.payment.old.pay.service.assist.PaymentAssistService;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
@@ -61,7 +61,7 @@ public class PaymentVerifyAspect {
|
||||
if (param instanceof MerchantPaymentCommonParam paymentParam){
|
||||
// 参数校验
|
||||
ValidationUtil.validateParam(paymentParam);
|
||||
if (paymentParam instanceof PayParam payParam) {
|
||||
if (paymentParam instanceof NormalPayParam payParam) {
|
||||
// 先校验支付渠道+支付方式(渠道支付方式目录),再校验路由必填项
|
||||
payParamCapabilityValidator.validate(payParam);
|
||||
payParamRouteValidator.validate(payParam);
|
||||
|
||||
@@ -4,10 +4,10 @@ import cn.daxpay.open.platform.core.annotation.IgnoreAuth;
|
||||
import cn.daxpay.open.platform.core.enums.common.PaymentApiEnum;
|
||||
import cn.daxpay.open.platform.core.exception.operation.OperationFailException;
|
||||
import cn.daxpay.open.payment.common.service.MerchantPermissionService;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.QueryPayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayQueryParam;
|
||||
|
||||
import cn.daxpay.open.payment.common.result.DaxResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayOrderResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayOrderResult;
|
||||
import cn.daxpay.open.payment.common.util.DaxRes;
|
||||
import cn.daxpay.open.payment.old.pay.anno.PaymentVerify;
|
||||
import cn.daxpay.open.payment.old.pay.service.order.pay.PayOrderQueryService;
|
||||
@@ -35,7 +35,7 @@ public class UniQueryController {
|
||||
|
||||
@Operation(summary = "支付订单查询接口")
|
||||
@PostMapping("/pay-order")
|
||||
public DaxResult<PayOrderResult> queryPayOrder(@RequestBody QueryPayParam param){
|
||||
public DaxResult<NormalPayOrderResult> queryPayOrder(@RequestBody NormalPayQueryParam param){
|
||||
if (!permConfigService.hasApiPerm(PaymentApiEnum.PAY_ORDER.getCode())){
|
||||
// 订单: 该商户没有此接口的权限
|
||||
throw new OperationFailException(CommonCode.FAIL_CODE, "error.payment.order.merchantNoApiPermission");
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package cn.daxpay.open.payment.unipay.controller;
|
||||
|
||||
import cn.daxpay.open.platform.core.annotation.IgnoreAuth;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PaySyncParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPaySyncParam;
|
||||
|
||||
import cn.daxpay.open.payment.common.result.DaxResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PaySyncResult;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import cn.daxpay.open.payment.common.util.DaxRes;
|
||||
import cn.daxpay.open.payment.old.pay.anno.PaymentVerify;
|
||||
import cn.daxpay.open.payment.old.pay.service.trade.pay.PaySyncService;
|
||||
@@ -31,7 +31,7 @@ public class UniSyncController {
|
||||
|
||||
@Operation(summary = "支付订单同步接口")
|
||||
@PostMapping("/pay")
|
||||
public DaxResult<PaySyncResult> pay(@RequestBody PaySyncParam param){
|
||||
public DaxResult<NormalPaySyncResult> pay(@RequestBody NormalPaySyncParam param){
|
||||
return DaxRes.ok(paySyncService.sync(param));
|
||||
}
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@ import cn.daxpay.open.payment.common.service.MerchantPermissionService;
|
||||
import cn.daxpay.open.payment.old.pay.anno.PaymentVerify;
|
||||
import cn.daxpay.open.payment.pay.service.PayCloseService;
|
||||
import cn.daxpay.open.payment.pay.service.NormalPayService;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayCloseParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.PayResult;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayCloseParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPayResult;
|
||||
import cn.daxpay.open.platform.core.enums.pay.trade.TradeSourceEnum;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -37,7 +37,7 @@ public class UniTradeController {
|
||||
|
||||
@Operation(summary = "支付接口")
|
||||
@PostMapping("/pay")
|
||||
public DaxResult<PayResult> pay(@RequestBody PayParam payParam){
|
||||
public DaxResult<NormalPayResult> pay(@RequestBody NormalPayParam payParam){
|
||||
if (!permConfigService.hasApiPerm(PaymentApiEnum.PAY.getCode())){
|
||||
// 订单: 该商户没有此接口的权限
|
||||
throw new OperationFailException(CommonCode.FAIL_CODE, "error.payment.order.merchantNoApiPermission");
|
||||
@@ -47,7 +47,7 @@ public class UniTradeController {
|
||||
|
||||
@Operation(summary = "关闭和撤销接口")
|
||||
@PostMapping("/close")
|
||||
public DaxResult<Void> close(@RequestBody PayCloseParam param){
|
||||
public DaxResult<Void> close(@RequestBody NormalPayCloseParam param){
|
||||
if ( permConfigService.hasApiPerm(PaymentApiEnum.CLOSE.getCode())){
|
||||
// 订单: 该商户没有此接口的权限
|
||||
throw new OperationFailException(CommonCode.FAIL_CODE, "error.payment.order.merchantNoApiPermission");
|
||||
|
||||
@@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(title = "支付关闭参数")
|
||||
public class PayCloseParam extends MerchantPaymentCommonParam {
|
||||
public class NormalPayCloseParam extends MerchantPaymentCommonParam {
|
||||
|
||||
/// 支付订单号/商户订单号/通道订单号至少要传输一个,支付订单号 > 商户订单号 > 通道订单号
|
||||
@Schema(description = "订单号")
|
||||
@@ -14,12 +14,12 @@ import lombok.EqualsAndHashCode;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/// # 统一下单参数(国内普通支付)
|
||||
/// # 普通支付下单参数
|
||||
///
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(title = "支付参数")
|
||||
public class PayParam extends MerchantPaymentCommonParam {
|
||||
public class NormalPayParam extends MerchantPaymentCommonParam {
|
||||
|
||||
// ===== 业务核心 =====
|
||||
|
||||
@@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(title = "支付单查询参数")
|
||||
public class QueryPayParam extends MerchantPaymentCommonParam {
|
||||
public class NormalPayQueryParam extends MerchantPaymentCommonParam {
|
||||
|
||||
/// 支付订单号/商户订单号/通道订单号至少要传输一个,支付订单号 > 商户订单号 > 通道订单号
|
||||
@Schema(description = "订单号")
|
||||
@@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Schema(title = "支付订单信息同步参数")
|
||||
public class PaySyncParam extends MerchantPaymentCommonParam {
|
||||
public class NormalPaySyncParam extends MerchantPaymentCommonParam {
|
||||
|
||||
/// 支付订单号/商户订单号/通道订单号至少要传输一个,支付订单号 > 商户订单号 > 通道订单号
|
||||
@Schema(description = "订单号")
|
||||
@@ -16,7 +16,7 @@ import java.time.OffsetDateTime;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "支付订单")
|
||||
public class PayOrderResult {
|
||||
public class NormalPayOrderResult {
|
||||
|
||||
/// 商户订单号
|
||||
@Schema(description = "商户订单号")
|
||||
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "统一支付响应参数")
|
||||
public class PayResult {
|
||||
public class NormalPayResult {
|
||||
|
||||
/// 订单ID
|
||||
@Schema(description = "订单ID")
|
||||
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "支付同步结果")
|
||||
public class PaySyncResult {
|
||||
public class NormalPaySyncResult {
|
||||
|
||||
/// 退款订单同步后的状态状态
|
||||
/// @see PayStatusEnum
|
||||
@@ -7,7 +7,7 @@ import cn.daxpay.open.payment.merchant.service.route.runtime.PayRouteProductReso
|
||||
import cn.daxpay.open.payment.merchant.service.route.support.PayRouteI18nHelper;
|
||||
import cn.daxpay.open.payment.old.pay.support.ProductStrategySupport;
|
||||
import cn.daxpay.open.payment.strategy.product.AbsProductStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.core.code.CommonErrorCode;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
@@ -31,7 +31,7 @@ public class PayRouteBasicMatcher {
|
||||
private final PayRouteProductResolver productResolver;
|
||||
|
||||
/// 基础模式匹配
|
||||
public RouteHit match(List<PayRouteBasicConfig> basicConfigs, PayParam payParam) {
|
||||
public RouteHit match(List<PayRouteBasicConfig> basicConfigs, NormalPayParam payParam) {
|
||||
if (StrUtil.isBlank(payParam.getMethod())) {
|
||||
// 场景模式下须选择支付方式
|
||||
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "pay.route.error.sceneMethodRequired");
|
||||
|
||||
@@ -2,7 +2,7 @@ package cn.daxpay.open.payment.merchant.service.route.model;
|
||||
|
||||
/// # 通道路由命中结果
|
||||
///
|
||||
/// 匹配成功后得到的支付产品、通道商户及能力,供填充 PayParam。
|
||||
/// 匹配成功后得到的支付产品、通道商户及能力,供填充 NormalPayParam。
|
||||
///
|
||||
/// @param product 支付产品编码(由通道商户号派生)
|
||||
/// @param channelMchNo 通道商户号(场景/基础模式命中的核心定位字段)
|
||||
|
||||
@@ -13,7 +13,7 @@ import cn.daxpay.open.payment.merchant.service.route.model.PayRouteBundle;
|
||||
import cn.daxpay.open.payment.old.pay.support.ProductStrategySupport;
|
||||
import cn.daxpay.open.payment.pay.service.route.PayRouteFacade;
|
||||
import cn.daxpay.open.payment.strategy.product.AbsProductStrategy;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.common.i18n.util.I18nUtil;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import cn.daxpay.open.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
@@ -49,7 +49,7 @@ public class PayRouteService implements PayRouteFacade {
|
||||
|
||||
/// 实付路由解析:直定模式优先,否则按策略模式匹配
|
||||
@Override
|
||||
public void resolve(PayParam payParam) {
|
||||
public void resolve(NormalPayParam payParam) {
|
||||
// 直定模式:指定通道商户号,跳过路由
|
||||
if (StrUtil.isNotBlank(payParam.getChannelMchNo())) {
|
||||
resolveDirect(payParam);
|
||||
@@ -69,7 +69,7 @@ public class PayRouteService implements PayRouteFacade {
|
||||
}
|
||||
|
||||
/// 直定模式:capability 必填,由通道商户推导产品;method 未传时由(通道商户, 能力)反推回填
|
||||
private void resolveDirect(PayParam payParam) {
|
||||
private void resolveDirect(NormalPayParam payParam) {
|
||||
String channelMchNo = payParam.getChannelMchNo();
|
||||
String capability = payParam.getCapability();
|
||||
// 传值模式: 支付能力必填
|
||||
@@ -116,15 +116,15 @@ public class PayRouteService implements PayRouteFacade {
|
||||
}
|
||||
|
||||
/// 按路由模式委托匹配器;未识别模式按场景模式处理
|
||||
private RouteHit resolveByMode(PayRouteBundle bundle, PayParam payParam, String mode) {
|
||||
private RouteHit resolveByMode(PayRouteBundle bundle, NormalPayParam payParam, String mode) {
|
||||
if (Objects.equals(mode, PayRouteModeEnum.BASIC.getCode())) {
|
||||
return basicMatcher.match(bundle.getBasicConfigs(), payParam);
|
||||
}
|
||||
return PayRouteSceneMatcher.match(bundle.getSceneConfigs(), payParam);
|
||||
}
|
||||
|
||||
/// 将命中结果写入 PayParam:回填 product(由通道商户号派生)、通道商户号、支付能力
|
||||
private void fillPayParam(PayParam payParam, RouteHit hit) {
|
||||
/// 将命中结果写入 NormalPayParam:回填 product(由通道商户号派生)、通道商户号、支付能力
|
||||
private void fillPayParam(NormalPayParam payParam, RouteHit hit) {
|
||||
String product = StrUtil.isNotBlank(hit.product())
|
||||
? hit.product()
|
||||
: productResolver.productOfChannelMchNo(hit.channelMchNo());
|
||||
|
||||
@@ -2,7 +2,7 @@ package cn.daxpay.open.payment.merchant.service.route.scene;
|
||||
|
||||
import cn.daxpay.open.payment.merchant.entity.route.scene.PayRouteSceneConfig;
|
||||
import cn.daxpay.open.payment.merchant.service.route.model.RouteHit;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.PayParam;
|
||||
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
|
||||
import cn.daxpay.open.platform.core.code.CommonErrorCode;
|
||||
import cn.daxpay.open.platform.core.exception.BizInfoException;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
@@ -20,7 +20,7 @@ import java.util.Objects;
|
||||
public class PayRouteSceneMatcher {
|
||||
|
||||
/// 场景模式匹配:按 method 精确命中唯一配置行
|
||||
public RouteHit match(List<PayRouteSceneConfig> configs, PayParam payParam) {
|
||||
public RouteHit match(List<PayRouteSceneConfig> configs, NormalPayParam payParam) {
|
||||
if (CollUtil.isEmpty(configs)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user