架构概览
SubHub 是 Apple App Store 与 Google Play 的统一购买后端,专注于购买验证、权益发放与事件推送。
设计原则
- Provider-independent — 核心模型不含 Apple/Google 特定字段
- Entitlement-first — 鉴权基于权益,而非 Product
- Opaque identity — developerUserId 不做解析
- Backend business logic — SDK 保持六个方法的极简面
- Events + Webhooks — 开发者拥有分析与业务自动化
系统分层
架构图
┌─────────────────────────────────────────┐
│ Client App (iOS / Android) │
│ SubHub SDK — 6 methods only │
└──────────────┬──────────────────────────┘
│ REST API
┌──────────────▼──────────────────────────┐
│ SubHub Platform (Core) │
│ Workspace → App → Product → Purchase │
│ → Entitlement → Member → Events │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Provider Adapters │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Apple │ │ Google Play │ │
│ │ StoreKit 2 │ │ Billing Lib │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Developer Backend │
│ Webhooks · REST API · Custom Logic │
└─────────────────────────────────────────┘Commerce 数据流
核心数据流:Product → Purchase → Entitlement
开发者永远不应直接查询 Product 做鉴权。SDK 暴露 hasEntitlement(),服务端查询 Entitlement API。
Store SKU → Product (catalog)
↓ purchase + verify
Purchase (transaction record)
↓ entitlement mapping
Entitlement (access unit)
↓
hasEntitlement("premium") → true/false工作区(Workspace)
工作区是租户边界,包含多个 App、成员、购买与配置。每个工作区有唯一 slug(如 neo-studio),用于控制台 URL 与 REST API 路径。
控制台地址:`/w/{slug}/dashboard` · API 前缀:`/v1/workspaces/{slug}/`。鉴权仍通过 API Key,slug 便于人类识别与支持沟通。
明确不在范围内
- 用户认证 / 登录注册
- 推送通知
- 文件存储
- 内置数据分析
- Remote Config
- 通用 BaaS 能力