商品与权益
如何定义商店商品、配置权益映射,以及理解 Product → Purchase → Entitlement 购买链路。
购买链路
SubHub 不关心你的业务身份,只记录「谁买了什么、获得了什么权益」。一次成功购买会依次产生 Purchase 记录并发放 Entitlement。
访问控制应始终查询 Entitlement(如 hasEntitlement('premium')),而非具体商店 SKU。
如何定义商店商品、配置权益映射,以及理解 Product → Purchase → Entitlement 购买链路。
SubHub 不关心你的业务身份,只记录「谁买了什么、获得了什么权益」。一次成功购买会依次产生 Purchase 记录并发放 Entitlement。
访问控制应始终查询 Entitlement(如 hasEntitlement('premium')),而非具体商店 SKU。
商品(Product)是商店无关的目录项,对应 App Store / Google Play 的内购 SKU。每个商品必须归属一个应用(App),标识符在应用内唯一。
相关文档
权益定义(Entitlement Definition)描述一种访问权限,如 premium、remove_ads。多个商品可映射到同一权益,便于统一鉴权。
权益定义同样按应用隔离 — 同一工作区下不同应用需分别创建。
有效权益指 isActive = true 的成员权益实例,既包括订阅(在有效期内),也包括非消耗型内购(如终身解锁、去广告)。
订阅过期、退款或手动撤销后,对应权益变为失效(isActive = false),但历史发放记录仍保留。
消耗型商品(如金币包)若映射到 Entitlement,购买后同样计入有效权益,直至被业务逻辑消耗或撤销。
常见场景:月度订阅与年度订阅映射到 premium,客户端只需检查 hasEntitlement('premium'),无需区分具体 SKU。
iOS 与 Android 可配置不同商品标识符,但授予同一权益标识。
| 概念 | 配置位置 | SDK / API |
|---|---|---|
| 商品 SKU | 商品标识符 | purchase(productId) 传入商店 ID |
| 购买记录 | Purchase | REST API / Webhook purchase.completed |
| 成员权益 | Entitlement 实例 | hasEntitlement() / list entitlements |