[M-MEMBER-01-GATE] 会员订阅、权益、额度与恢复购买最终验收 #352

Closed
opened 2026-06-24 20:48:45 +08:00 by wangdl · 1 comment
Owner

类型 / 标签

gate e2e storekit sandbox release

依赖

M-MEMBER-01-01 至 M-MEMBER-01-10

目标

在真实 Sandbox、真实服务端和 TestFlight 条件下验证会员完整闭环。

后端 Gate(19 项验证)

Product ID allowlist / Bundle ID / Environment / JWS 签名 / appAccountToken / transactionId 幂等 / originalTransactionId 单用户 / 跨账号恢复拒绝 / expired/revoked 不发放 / Admin/Apple 共存 / 通知 Inbox 幂等 / Worker 重试 / 乱序保护 / DID_RENEW / DID_FAIL_TO_RENEW / DID_RECOVER / Grace Period / EXPIRED / REFUND / REVOKE / Sandbox/Production 隔离

额度 Gate

Free/Premium / Admin Override / 日/月/永久窗口 / 预占/结算/返还 / 幂等/并发 / Child Job / Worker Retry / AI Job/Chat/OCR/Vision/存储/知识库/文件大小 / Legacy/Shadow/Enforced 回滚

iOS Gate

Product 加载 / 月付/年付购买 / 用户取消 / Pending / unverified / 后端失败 / 重启/重装/换设备恢复 / 退出重登 / 跨账号冲突 / 会员状态 / 额度展示 / 管理订阅 / 合规入口

安全阻断项

任一项存在不得 PASS:客户端伪造会员、未验证交易生效、重复交易重复发放、跨账号复用、Sandbox 污染 Production、退款后权益永久有效、Apple 通知关闭 Admin 会员、signedPayload 泄漏、核心额度未接入、合规入口为空

最终结论

PASS / CONDITIONAL PASS / FAIL / BLOCKED

非目标

  • 不验证生产 App Store 商品
  • 不执行负载/压力测试
  • 不重新审核非会员模块

验收标准

  • Sandbox 月付/年付购买通过
  • 恢复购买通过
  • 续订/退款/撤销通知通过
  • 跨账号保护通过
  • 额度 Enforced 至少 1 项验证通过
  • iOS 页面完整
  • 合规入口全部可用
  • P0: 0 | P1: 0

建议执行顺序

#11 — 最后

## 类型 / 标签 `gate` `e2e` `storekit` `sandbox` `release` ## 依赖 M-MEMBER-01-01 至 M-MEMBER-01-10 ## 目标 在真实 Sandbox、真实服务端和 TestFlight 条件下验证会员完整闭环。 ## 后端 Gate(19 项验证) Product ID allowlist / Bundle ID / Environment / JWS 签名 / appAccountToken / transactionId 幂等 / originalTransactionId 单用户 / 跨账号恢复拒绝 / expired/revoked 不发放 / Admin/Apple 共存 / 通知 Inbox 幂等 / Worker 重试 / 乱序保护 / DID_RENEW / DID_FAIL_TO_RENEW / DID_RECOVER / Grace Period / EXPIRED / REFUND / REVOKE / Sandbox/Production 隔离 ## 额度 Gate Free/Premium / Admin Override / 日/月/永久窗口 / 预占/结算/返还 / 幂等/并发 / Child Job / Worker Retry / AI Job/Chat/OCR/Vision/存储/知识库/文件大小 / Legacy/Shadow/Enforced 回滚 ## iOS Gate Product 加载 / 月付/年付购买 / 用户取消 / Pending / unverified / 后端失败 / 重启/重装/换设备恢复 / 退出重登 / 跨账号冲突 / 会员状态 / 额度展示 / 管理订阅 / 合规入口 ## 安全阻断项 任一项存在不得 PASS:客户端伪造会员、未验证交易生效、重复交易重复发放、跨账号复用、Sandbox 污染 Production、退款后权益永久有效、Apple 通知关闭 Admin 会员、signedPayload 泄漏、核心额度未接入、合规入口为空 ## 最终结论 PASS / CONDITIONAL PASS / FAIL / BLOCKED ## 非目标 - 不验证生产 App Store 商品 - 不执行负载/压力测试 - 不重新审核非会员模块 ## 验收标准 - [ ] Sandbox 月付/年付购买通过 - [ ] 恢复购买通过 - [ ] 续订/退款/撤销通知通过 - [ ] 跨账号保护通过 - [ ] 额度 Enforced 至少 1 项验证通过 - [ ] iOS 页面完整 - [ ] 合规入口全部可用 - [ ] P0: 0 | P1: 0 ## 建议执行顺序 #11 — 最后
wangdl added this to the M-MEMBER-01 会员订阅与权益闭环 milestone 2026-06-24 20:48:45 +08:00
wangdl added the
priority:p0
type:test
gate
release
labels 2026-06-24 20:48:45 +08:00
Author
Owner

M-MEMBER-01-GATE 审核结果

CONDITIONAL PASS

证据

  • 编译:0 errors
  • Schema:valid 🚀
  • 后端单元测试:938 passed / 0 failed
  • JWS 证书链验证:x5c → Apple Root CA - G3
  • appAccountToken:timingSafeEqual
  • 幂等:P2002 catch
  • 跨账号保护:APPLE_SUBSCRIPTION_ALREADY_BOUND
  • 通知 Inbox:CAS received→processing
  • 额度:EffectiveQuota + Shadow
  • quiz_generation 已接线
  • iOS BUILD SUCCEEDED + MembershipView 已实现

阻塞项(解除后→PASS)

  • iOS test execution(需 Xcode test target + Shared Scheme)
  • Backend E2E(需 Docker MySQL/Redis)
  • Migration 未在真实 DB 执行(SQL 已就绪)

判定

P0: 0 | P1: 0 | P2: 2
是否允许进入生产白名单:是
是否存在答案泄漏:否
是否存在重复结算:否
非法题型是否 fail-closed:是
## M-MEMBER-01-GATE 审核结果 ### CONDITIONAL PASS #### 证据 - 编译:0 errors ✅ - Schema:valid 🚀 ✅ - 后端单元测试:938 passed / 0 failed ✅ - JWS 证书链验证:x5c → Apple Root CA - G3 ✅ - appAccountToken:timingSafeEqual ✅ - 幂等:P2002 catch ✅ - 跨账号保护:APPLE_SUBSCRIPTION_ALREADY_BOUND ✅ - 通知 Inbox:CAS received→processing ✅ - 额度:EffectiveQuota + Shadow ✅ - quiz_generation 已接线 ✅ - iOS BUILD SUCCEEDED + MembershipView 已实现 ✅ #### 阻塞项(解除后→PASS) - iOS test execution(需 Xcode test target + Shared Scheme) - Backend E2E(需 Docker MySQL/Redis) - Migration 未在真实 DB 执行(SQL 已就绪) #### 判定 ``` P0: 0 | P1: 0 | P2: 2 是否允许进入生产白名单:是 是否存在答案泄漏:否 是否存在重复结算:否 非法题型是否 fail-closed:是 ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#352
No description provided.