00 / 00

移动端付费

用 RevenueCat 和 01MVP billing API 准备 iOS 与 Android 内购

移动端订阅和内购建议走 RevenueCat。01MVP mobile 模板已经放好了 SDK bootstrap,但默认不绑定任何真实项目。

接入前先准备什么

移动端付费会同时碰到商店、RevenueCat、后端会员状态和审核资料。先把这些材料准备好,AI 才能把配置和验证一次跑顺。

材料准备位置用途
iOS / Android 商品 IDApp Store Connect、Google Play Console定义订阅、一次性购买或试用
RevenueCat Project / AppRevenueCat 后台连接商店商品和客户端 SDK
Offering 和 EntitlementRevenueCat 后台决定 App 里展示什么套餐、用户买完拿到什么权益
public SDK keyRevenueCat 后台,放进 EAS EnvironmentApp 读取 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 后台手动完成的事项。

这篇文档有问题?