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