refactor(payment): 调用方改为直接依赖 PayRouteService

This commit is contained in:
DaxPay Dev
2026-07-13 18:31:38 +08:00
parent 6dcea22529
commit be8fa4d007
2 changed files with 5 additions and 8 deletions

View File

@@ -11,7 +11,6 @@ import cn.daxpay.open.payment.merchant.service.route.model.RouteHit;
import cn.daxpay.open.payment.merchant.entity.route.strategy.PayRouteStrategy;
import cn.daxpay.open.payment.merchant.service.route.model.PayRouteBundle;
import cn.daxpay.open.payment.strategy.ProductStrategySupport;
import cn.daxpay.open.payment.route.PayRouteFacade;
import cn.daxpay.open.payment.strategy.product.AbsProductStrategy;
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
import cn.daxpay.open.platform.common.i18n.util.I18nUtil;
@@ -25,12 +24,11 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/// # 支付通道路由服务
///
/// 实现 PayRouteFacade供 NormalPayService 在支付流程中调用。
/// 供支付流程NormalPayService / GatewayPayHandleService调用。
/// 两种解析路径:
/// 1. 直定模式:已传 channelMchNo跳过路由由 channelMchNo 推导产品capability 必填method 未传时由能力反推。
/// 2. 路由模式:按 appId 加载策略,经基础/场景模式匹配后回填 product/channelMchNo/capability。
@@ -38,7 +36,7 @@ import java.util.Objects;
@Slf4j
@Service
@RequiredArgsConstructor
public class PayRouteService implements PayRouteFacade {
public class PayRouteService {
private final PayRouteStrategyManager strategyManager;
private final PayRouteSceneConfigManager sceneConfigManager;
@@ -48,7 +46,6 @@ public class PayRouteService implements PayRouteFacade {
private final PayRouteStrategyCapabilitySupport payRouteStrategyCapabilitySupport;
/// 实付路由解析:直定模式优先,否则按策略模式匹配
@Override
public void resolve(NormalPayParam payParam) {
// 直定模式:指定通道商户号,跳过路由
if (StrUtil.isNotBlank(payParam.getChannelMchNo())) {

View File

@@ -10,7 +10,7 @@ import cn.daxpay.open.payment.strategy.PaymentStrategyFactory;
import cn.daxpay.open.payment.trade.runtime.bo.PayTradeResultBo;
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
import cn.daxpay.open.payment.route.PayRouteFacade;
import cn.daxpay.open.payment.merchant.service.route.runtime.PayRouteService;
import cn.daxpay.open.payment.strategy.pay.AbsNormalPayStrategy;
import cn.daxpay.open.payment.strategy.pay.PayStrategyContext;
import cn.daxpay.open.payment.unipay.param.trade.pay.NormalPayParam;
@@ -37,7 +37,7 @@ public class NormalPayService {
private final PayUniHandleService payUniHandleService;
private final LockTemplate lockTemplate;
private final PayTradeManager payTradeManager;
private final PayRouteFacade payRouteFacade;
private final PayRouteService payRouteService;
private final MerchantContextLoader merchantContextLoader;
/// 支付入口
@@ -66,7 +66,7 @@ public class NormalPayService {
var mchApp = merchantContextLoader.resolveApp(payParam.getMchNo(), payParam.getAppId());
payParam.setAppId(mchApp.getAppId());
// 路由解析:直定模式(已传 channelMchNo)直接解析,否则按 appId+method 策略匹配
payRouteFacade.resolve(payParam);
payRouteService.resolve(payParam);
var payStrategy = PaymentStrategyFactory.createByProduct(payParam.getProduct(), AbsNormalPayStrategy.class);
// 支付前处理: 校验与通道配置组装(只依赖请求参数), 失败直接抛出不持久化(订单尚未创建)
var context = new PayStrategyContext().setPayParam(payParam);