# 05 — 提供统一的单资产套餐订购命令

**What to build:** 现有后台单笔入口和批量任务中的一个业务行可以调用同一个单资产套餐订购命令，按资产当前归属确定结算代理，完成套餐可售校验、定价、订单及套餐激活编排。钱包支付通过统一 Wallet Application/Port 接缝完成，线下支付生成符合现有后台语义的已支付订单。

**Blocked by:**

- `.scratch/ur36-bulk-package-purchase/issues/04-unified-admin-package-purchasability.md` — 04 — 统一后台与批量入口的套餐可售策略
- `.scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md` — 05 — 统一代理订单、代购与钱包支付扣款

**Status:** ready-for-agent

**架构通道:** 主通道为复杂写，Application UseCase → Order/Package Domain → Repository/Infrastructure；Wallet Application/Port 为辅助通道。

**完整业务边界:** 本票迁移后台单资产套餐订购这一最小完整用例，收口资产归属、套餐可售与定价、订单、订单明细、套餐使用及激活编排。钱包领域只通过 UR#38 的稳定接缝协作。明确不迁移其他订单创建、支付、退款、佣金或资产钱包流程。

- [ ] 命令只接收规范资产、套餐、支付方式、凭证快照、操作者和稳定业务幂等标识，不接受可信 `shop_id`、结算价格或套餐可售结论。
- [ ] 每次执行按资产当前归属解析结算代理，并调用统一套餐可售策略重新校验授权、状态、定价及现有订单不变量。
- [ ] `offline` 创建已支付订单、订单明细和套餐使用并完成现有激活语义，不扣代理钱包；凭证关联作为业务快照保留。
- [ ] `wallet` 只调用 UR#38 提供的 Wallet Application/Port 接缝；UR#36 不复制信用公式、不直接更新代理钱包模型、不调用旧钱包 Store 扣款条件、不重新实现钱包流水或信用并发规则。
- [ ] 单次成功订购中的订单、套餐使用与激活、结算代理和价格快照、明细关联、审计及可靠事件原子提交；任何失败不留下部分事实。
- [ ] 现有后台单笔 HTTP 契约保持不变并迁移为调用该命令；旧订单 Service 如保留，只能作为本用例的内部迁移门面。
- [ ] 测试覆盖钱包与线下、不同代理归属、未授权、下架、价格异常、资产状态与组合规则、幂等重试及事务回滚。

