00 / 00
移动端付费
用 RevenueCat 和 01MVP billing API 准备 iOS 与 Android 内购
移动端订阅和内购建议走 RevenueCat。01MVP mobile 模板已经放好了 SDK bootstrap,但默认不绑定任何真实项目。
接入前先准备什么
移动端付费会同时碰到商店、RevenueCat、后端会员状态和审核资料。先把这些材料准备好,AI 才能把配置和验证一次跑顺。
| 材料 | 准备位置 | 用途 |
|---|---|---|
| iOS / Android 商品 ID | App Store Connect、Google Play Console | 定义订阅、一次性购买或试用 |
| RevenueCat Project / App | RevenueCat 后台 | 连接商店商品和客户端 SDK |
| Offering 和 Entitlement | RevenueCat 后台 | 决定 App 里展示什么套餐、用户买完拿到什么权益 |
| public SDK key | RevenueCat 后台,放进 EAS Environment | App 读取 entitlement,属于客户端公开值 |
| 服务端同步方案 | 01MVP API 或 webhook | 把商店购买结果同步到业务会员状态 |
| sandbox 测试账号 | Apple / Google 商店后台 | 真机测试购买、续费、取消和退款 |
第一版可以先让 App 读取 RevenueCat entitlement,再把会员展示做出来。真正限制高价值功能时,建议服务端也确认会员状态,避免只信客户端本地状态。
配置公开 SDK key
本地开发:
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY="appl_xxx"
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY="goog_xxx"
EXPO_PUBLIC_REVENUECAT_ENTITLEMENT_ID="pro"生产构建时,把同样的公开值放进 EAS Environment,或写进 products/01mvp/apps/mobile/eas.json 的 production profile。
这些 key 是 RevenueCat 的客户端公钥,可以进 App bundle。别把服务端 API key 放进 Expo 变量。
App 内状态
移动端 helper 在:
products/01mvp/apps/mobile/src/lib/revenuecat.ts它会按平台选 iOS 或 Android SDK key。没配置 key 时 App 显示未配置状态;配好后就能读取 entitlement。
和 Web billing API 的关系
移动端首页会调用:
orpc.billing.plans.queryOptions()这让 App 能展示后端当前公开的付费计划。RevenueCat 管商店侧购买和 entitlement,Web/API 管业务计划、订单、会员状态或后续 webhook 同步。
和服务端会员状态的关系
MVP 阶段建议把逻辑分成两层:
| 层级 | 负责什么 | 注意点 |
|---|---|---|
| App | 展示套餐、发起购买、读取 RevenueCat entitlement | 只放 public SDK key,不放 webhook secret |
| 服务端 | 决定用户是否能访问 Pro 功能 | RevenueCat webhook secret、商店 server API key 都只放服务端 |
如果产品里有跨 Web、Mobile、Desktop 的统一会员权益,服务端应该成为最终判断来源。App 端读到 entitlement 后,可以请求 API 刷新用户会员状态。
上架前检查
- App Store Connect 中创建内购产品
- Google Play Console 中创建订阅或一次性商品
- RevenueCat 中创建 Project、App、Products、Offerings、Entitlements
EXPO_PUBLIC_REVENUECAT_ENTITLEMENT_ID与 RevenueCat entitlement 一致- 如果服务端要接收 RevenueCat webhook,把 webhook secret 放在服务端 secrets,不要放进 Expo
复制给 AI
请帮我把 01MVP mobile 接入 RevenueCat 付费。
我会提供 iOS public SDK key、Android public SDK key、entitlement id、RevenueCat offering id、商店商品 ID,以及是否需要服务端同步会员状态。
请只把 public key 放进移动端构建环境;webhook secret 和商店服务端密钥只允许放服务端。
完成后请跑移动端测试,并列出还需要我在 App Store Connect / Google Play / RevenueCat 后台手动完成的事项。这篇文档有问题?