3. 支付订单领域分析:识别核心子域、通用子域与支撑子域

在领域驱动设计(DDD)的战略设计中,子域(Subdomain)是问题空间的核心分解单元。对于支付订单系统,准确识别每个子域的类型——核心、通用或支撑——直接决定了资源投入、技术选型与外包策略。本章将基于业务价值与差异化程度,对支付订单领域进行系统性子域划分。

3.1 子域分类原则

DDD 将子域分为三类,其判断标准如下表所示:

子域类型 业务价值 差异化程度 典型策略
核心子域 高——直接产生收入或核心竞争力 高——行业独有,需自研 投入最优资源,持续演进
通用子域 中——必需但无差异化 低——行业标准方案成熟 采购或采用开源产品
支撑子域 低——辅助业务运转 中——可自研或外包 简化实现,控制成本
判断要点:核心子域通常对应公司的“护城河”。例如,对于电商平台,订单履约是核心;对于支付公司,资金清分是核心。同一个业务域在不同企业中的分类可能完全不同。

3.2 支付订单领域子域全景

通过对支付订单全生命周期的分析,我们识别出以下四个主要子域:支付、订单、账户与风控。下图展示了它们之间的核心协作关系:

支付订单领域核心子域协作关系 核心子域 支付 核心子域 订单 核心子域 风控 通用子域 账户 支撑子域 通知/审计 资金入账 发起支付 风险校验 结果通知 说明: 核心子域(红)决定业务竞争力;通用子域(蓝)采用成熟方案;支撑子域(绿)简化实现。 箭头表示主要数据/控制流方向,实际交互为双向,此处仅展示关键路径。

3.3 各子域详细分析

3.3.1 核心子域:支付

职责:处理资金从付款方到收款方的转移,包括支付指令构建、渠道路由、交易状态机管理。

  • 关键能力:多渠道聚合(、支付宝、银行卡)、支付路由、对账与差错处理。
  • 为何是核心:支付成功率直接影响交易转化率,支付体验是平台信任的基石。
  • 典型聚合:PaymentTransaction(支付交易聚合),包含支付单、支付流水、退款记录。

3.3.2 核心子域:订单

职责:管理商品/服务的购买契约,跟踪订单从创建到完成/取消的全生命周期。

  • 关键能力:订单状态机、拆单/合单、库存预占、价格计算。
  • 为何是核心:订单是业务流转的主线,订单数据的完整性直接关联财务与履约。
  • 典型聚合:Order(订单聚合),包含订单项、收货地址、支付信息快照。

3.3.3 核心子域:风控

职责:实时评估交易风险,拦截欺诈、盗刷、洗钱等异常行为。

  • 关键能力:规则引擎、设备指纹、用户行为画像、黑白名单。
  • 为何是核心:风控能力直接决定资金安全与合规成本,是金融级系统的生命线。
  • 典型聚合:RiskAssessment(风险评估聚合),包含风险因子、决策结果、处置动作。

3.3.4 通用子域:账户

职责:管理用户资金余额、冻结金额与交易流水。

  • 关键能力:账户余额变更、资金冻结/解冻、流水记账。
  • 为何是通用:账户体系在金融行业有成熟标准(如借贷记账法),可采购成熟的账务核心系统或使用开源方案。
  • 典型聚合:Account(账户聚合),包含账户余额、冻结明细、流水记录。

3.3.5 支撑子域:通知与审计

职责:向外部系统(商户、用户、监管)发送支付结果通知,并记录全链路操作日志。

  • 关键能力:消息推送(HTTP回调、站内信)、重试机制、操作审计日志。
  • 为何是支撑:通知与审计不直接产生业务价值,但为系统可靠性与合规性提供保障。
  • 典型聚合:Notification(通知聚合),包含通知目标、内容、状态、重试次数。

3.4 子域与限界上下文的映射

每个子域在解决方案空间对应一个或多个限界上下文(Bounded Context)。下表展示了推荐映射关系:

子域 限界上下文 通信方式 数据所有权
支付 Payment Context 事件驱动(支付成功事件) 独立数据库
订单 Order Context REST API / 事件 独立数据库
风控 Risk Context RPC / 异步消息 独立数据库
账户 Account Context 事件驱动(记账指令) 独立数据库
通知/审计 Notification Context 消息队列 独立数据库
实践建议:在微服务架构中,每个限界上下文通常对应一个独立的微服务。核心子域(支付、订单、风控)应分配最强的研发资源与最严格的代码评审;通用子域(账户)优先考虑集成成熟商业套件;支撑子域(通知)可使用轻量级实现,甚至外包。

3.5 子域依赖与数据流

下图展示了子域间的典型数据流与依赖关系,帮助理解后续聚合建模时的上下文映射:

子域间数据流与依赖关系 订单 支付 风控 账户 通知/审计 支付请求 风险校验 资金入账 结果通知 审计日志 注意:风控与账户之间无直接依赖,风控通过支付间接影响账户操作。通知/审计作为支撑子域,接收来自支付和风控的事件。

3.6 本章小结

  • 核心子域(支付、订单、风控)是系统竞争力的核心,必须自研并投入最优资源。
  • 通用子域(账户)采用成熟方案,避免重复造轮子。
  • 支撑子域(通知/审计)简化实现,关注可靠性与可观测性。
  • 子域划分直接指导后续的聚合建模与限界上下文设计,是微服务拆分的首要依据。