Files
junhong_cmp_fiber/.scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md
2026-07-22 17:25:12 +09:00

2.4 KiB
Raw Blame History

05 — 统一代理订单、代购与钱包支付扣款

What to build: 所有本需求触碰的代理订单支付、代购和后台套餐订购都通过同一个代理主钱包扣款能力结算。扣款统一使用总可用金额,能够在现金不足时安全使用信用,并原子维护订单事实、钱包版本、真实金额流水和可靠事件。

Blocked by:

  • .scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md — 01 — 扩展代理主钱包信用模型与领域不变量
  • .scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md — 02 — 在业务事务中可靠写入公共 Outbox
  • .scratch/tech-global-audit/issues/01-audit-event-write-loop.md — 01 — 交付不可变 Audit Event 写入闭环

Status: ready-for-agent

架构通道: 复杂写Application UseCase → Wallet Domain → Repository/InfrastructureOrder Application 为辅助编排通道。

完整业务边界: 本票收口代理主钱包扣款能力及现有被触碰的代理订单、代购、单资产后台订购调用点。它同时为 UR#36 的单资产套餐订购命令提供稳定钱包接缝。明确不迁移资产钱包支付、佣金钱包、不相关订单创建流程或整个订单模块。

  • 统一扣款命令按代理主钱包加载聚合,以 balance - frozen_balance + effective_credit 判断资金边界,并安全允许账面余额在额度内变为负数。
  • 钱包保存使用版本或等价行锁防止并发超额,成功后版本递增;并发请求不能让总可用金额小于零。
  • 订单/业务单状态条件、钱包扣款、真实金额流水、Payment 事实、必要套餐处理、Audit Event 和 Outbox 在各完整用例的同一事务提交。
  • 相同业务单重试不会重复扣款、重复建流水或重复激活;余额不足和版本冲突不会留下已支付订单或其他部分事实。
  • 现有代理钱包支付、平台代理订购和代购调用点不再自行维护现金余额条件,均调用统一能力;旧 Service 如保留只能作为内部迁移门面。
  • UR#36 可调用稳定的代理主钱包扣款 Application/Port 接缝,而无需复制信用公式、直接更新钱包模型或依赖旧 Store 条件。
  • 集成测试逐一覆盖现金支付、部分信用、用尽信用、超额拒绝、代购付款钱包定位、并发支付、幂等重试、流水快照及 Outbox 回滚。