跳转到内容
supastack
浏览文档

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/mobile/revenuecat.md (or send Accept: text/markdown).

设置 RevenueCat 购买

创建 RevenueCat 项目,关联你的 App Store 和 Play 商品,接入校验购买的 SDK 密钥与服务端密钥。

询问本指南
打开方式

初学者演练

为什么有这一节:Apple 和 Google 要求应用内数字购买走它们自己的计费——绝不走 Stripe Checkout——套件强制这条边界。RevenueCat 架在两家商店之上,一次集成覆盖 iOS 和 Android:它跟踪收据、订阅和恢复,你的服务器向 RevenueCat 询问工作区是否已付款。

前提条件:移动端账户指南里的 Apple Developer Program(每年 99 美元)和 Google Play Console(一次性 25 美元)账户——商店商品必须先存在,RevenueCat 才能关联——再加上一个真正用来测试的 EAS 开发构建,因为 Expo Go 根本跑不了原生购买模块。RevenueCat 免费档够测试用;商品上线前这里的一切都不会扣款。

快速术语:RevenueCat 项目装着你关联到商店的应用。商品是在 RevenueCat 里镜像的商店物品。entitlement(权益)是订阅有效期间 RevenueCat 授予的标记——默认 pro。Offering 把商品组合成应用展示的付费墙。公开 SDK 密钥进移动端 env;API 密钥和 webhook 授权值留在服务端。

你要创建的:一个项目、两个关联商店的应用、商品、一个权益、一个 offering——约一小时,大半在等商店商品设置。

创建 RevenueCat 账户和项目

1. 打开 app.revenuecat.com → 注册,用你的产品名创建一个项目。

预期结果:空的项目仪表板,带 Apps、Products、Entitlements、Offerings 和 API keys 标签页——后面几节按顺序把它们填满。

先建商店商品,再关联两个应用

RevenueCat 能引用之前,商店侧的商品必须先存在。iOS:appstoreconnect.apple.com → My Apps → 用你的 ios.bundleIdentifier 建应用记录 → In-App Purchases 或 Subscriptions → 创建你打算销售的订阅商品(测试期间可保持草稿)。Android:play.google.com/console → 建应用 → Monetize → Products → Subscriptions(或应用内商品)。

然后在 RevenueCat 内关联两者:Apps → New app。iOS 选 App Store,填 bundle id,并提供表单要求的 App Store Connect 凭据——每个字段都链到 RevenueCat 自己的设置文档。Android 选 Play Store,填包名,上传 Play 服务账号 JSON——链接的文档带你走完在 Google Cloud 中创建它的过程。

预期结果:两个应用列在项目下,商店控制台显示你的商品已存在——此阶段草稿状态没问题。

商品、权益、offering

1. Products → New:每个商店商品建一个 RevenueCat 商品,并附上对应的 App Store 或 Play 商品 ID——ID 必须与控制台完全一致。

2. Entitlements → New:按 REVENUECAT_ENTITLEMENT_ID 命名——套件默认 pro——并附上授予它的商品。

3. Offerings → New:建一个 offering,加入指向你商品的包,标记为 Current——应用渲染付费墙时读的是 offerings.current。

REVENUECAT_ENTITLEMENT_KEY 保持默认 ai.reference-task:这是套件内部的账本键——与自带 Web 方案授予的键相同——RevenueCat 访问记录在它名下。只有当你的产品方案键变化时才改名。

复制密钥并注册 webhook

Project → API keys 列出下面三种。各平台的公开 SDK 密钥(iOS 是 appl_…,Android 是 goog_…)进 apps/mobile/.env.local——它们标识应用、不带消费权限,EXPO_PUBLIC_ 前缀对它们是正确的。

API 密钥(sk_…,v1 密钥)和 webhook 授权值在 apps/web/.env.local 中仅限服务端——绝不 EXPO_PUBLIC_,绝不提交。服务器用密钥调用 RevenueCat 的订阅者 API 来验证每个工作区的购买状态。

Webhook:RevenueCat → Integrations → Webhooks → URL 设为 {APP_URL}/api/billing/webhook/revenuecat,Authorization 标头值设为任意你编的长随机串——然后把完全相同的字符串放进 REVENUECAT_WEBHOOK_AUTHORIZATION。套件逐字比对标头,其余一律拒绝,因此续费、取消和退款不用等下次打开应用就能到达服务器。

沙盒购买在生产之外自动放行;生产 env 里的 REVENUECAT_ALLOW_SANDBOX=true 启动时会被拒绝,所以上线后保持不设置。

# apps/mobile/.env.local
EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY=appl_…
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY=goog_…

# apps/web/.env.local — server side
MOBILE_PURCHASES_PROVIDER=revenuecat
REVENUECAT_SECRET_API_KEY=sk_…
REVENUECAT_WEBHOOK_AUTHORIZATION=<the exact Authorization value set on the webhook>
REVENUECAT_ENTITLEMENT_ID=pro
REVENUECAT_ENTITLEMENT_KEY=ai.reference-task

用沙盒购买验证

购买只在开发或生产构建内运行——Expo Go 完全没有原生模块,所以这一步假设 eas build --profile development 已产出开发客户端(EAS 指南负责构建它)。

1. 把开发构建装到登录了沙盒账户的设备或模拟器:iOS 用 App Store Connect → Users and Access → Sandbox Testers;Android 用 Play Console → license testing。

2. 在应用中打开付费墙,用沙盒账户购买。预期结果:购买在沙盒中完成——不真的扣款——恢复购买可用,工作区权益显示激活,服务端记录在 ai.reference-task 键下。

常见失败:付费墙为空表示 offering 不是 Current 或商品没关联;设备上购买失败表示商店商品仍是草稿或登错了沙盒账户;权益永不翻转表示 MOBILE_PURCHASES_PROVIDER/EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER 关着,或 webhook Authorization 不匹配——RevenueCat 仪表板列出每次 webhook 送达的状态。

如果你想继续完成设置,可以阅读《构建和设备验证》。

常见问题

14 个问题

supastack 是什么?

supastack 是用于构建 AI 驱动 SaaS 产品的模块化基础。它把通用基础设施整合在一起,让你专注于产品专属的功能。

它支持 Web 和移动端吗?

支持。supastack 包含 Next.js 与 Expo 应用,作为 Web 与移动端体验的起点。

包含哪些认证方式?

Better Auth 覆盖邮箱/密码、OTP 与社交登录。个人工作区随账户一起开通,产品记录从第一天起就有边界。

AI 是如何支持的?

supastack 包含可配置的多供应商 AI、用量追踪、预算,以及加密的自带密钥(BYOK)支持。

订阅如何处理?

对于基于该套件构建的产品,Stripe 计费、订阅与权限构成付费访问的基础。供应商密钥仅存于服务端。

我的产品专属代码放在哪里?

产品专属功能保留在独立的代码库中,产品通过配置接入 supastack 的基础模块。

supastack 如何定价?

套件为一次性购买、终身更新:单框架 249 美元(限时优惠价,较常规价 349 美元优惠 100 美元),或全框架(Next.js、iOS、Android)499 美元(限时优惠价,较常规价 599 美元优惠 100 美元),每个额外开发者席位 75 美元。套件本身没有订阅。本站结账后通过邮件发送许可证密钥,仓库访问通过 GitHub 邀请授予。

工作区如何界定我的数据?

用户记录按 workspaceId 划定边界。身份、权限、AI 用量、计费事件与审计条目都留在个人工作区边界内。

后台任务如何工作?

Trigger.dev 是明确的任务运行时。JobRunner 契约只承诺 enqueue、status 与 cancel——工作流语义保持 Trigger.dev 专有且显式。

邮件与营销触达有何不同?

事务性邮件覆盖产品工作流,如任务完成通知。冷触达与营销活动属于产品自身的范畴,不在本套件的邮件模块内。

移动端购买如何运作?

移动端已支持 RevenueCat 原生购买和恢复购买,访问权限由服务端验证。发布前需配置商店账户并完成设备测试。Web 计费保持独立。

AI 供应商密钥存放在哪里?

自带密钥凭证经过加密且仅存于服务端。密钥在日志中被脱敏;用量与预算在工作区级别保持可见。

结账支持哪些付款方式?

Stripe 托管结账接受银行卡,在 Stripe 账户启用后还可提供支付宝与微信支付——方便中国买家。钱包授权为异步确认,付款完成后许可证页面会立即更新。

我能申请退款吗?

获得代码仓库访问权限后,supastack 将永久归你所有,因此无法退款。但请放心,你将获得包含终身更新的完整源代码,可为你自己或客户构建并发布无限数量的产品。你只需注意不能转卖代码,也不能将仓库作为启动模板二次分发。

CN
主题