# 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 回滚。
