# 07 — 接入下架续费成功与拒绝审计

**What to build:** 下架续费订单成功创建后，审计人员可以通过统一 Audit Event 追踪购买模式、资产、世代、套餐、渠道和历史资格摘要；构造请求因资格、归属或渠道事实被拒绝时，也能看到稳定失败原因，且审计中不包含客户敏感明细。

**Blocked by:**

- 05 — C 端创建订单按写时事实完成下架续费
- 06 — 封堵后台代购与自动购包的下架绕过
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环

**Status:** ready-for-agent

**架构通道:** Application + Audit Port/Adapter。

**完整业务边界:** 本票只把 UR#40 的成功 `renew_only` 决策和被拒绝的构造购买请求接入公共 Audit Event，不创建独立续费日志表，不迁移套餐上下架、普通订单或其他旧审计日志，不用审计替代订单和套餐使用业务事实。

- [ ] 成功创建下架续费订单时写统一成功事件，至少记录 `purchase_mode=renew_only`、资产类型与 ID、当前 generation、套餐 ID、平台或代理销售渠道、订单引用及命中历史资格的脱敏摘要。
- [ ] 成功事件与订单事实遵循公共 Audit Writer 的事务契约；审计失败时不得留下缺失必需审计的错误成功事实。
- [ ] 归属伪造、跨资产/跨世代历史、下架非个人购买、套餐禁用、渠道未授权、退款失效及价格异常等拒绝结果，按公共失败审计规则使用独立短事务保存稳定动作、结果和业务失败分类。
- [ ] 审计资源能够串联客户购买动作、资产、套餐、订单及销售渠道，但不记录手机号、OpenID、完整请求体、历史订单金额、底层错误或其他客户敏感明细。
- [ ] 普通 `normal` 购买沿用现有审计语义，不因本票被重复记录为下架续费；后台与自动购包拒绝事件能够明确表明其 operation context 不具备历史续费例外。
- [ ] PostgreSQL 集成测试覆盖成功事务一致性、业务回滚、拒绝事件独立落库、重复请求、脱敏与资源关联，并验证审计失败策略符合公共契约。
