
在移动应用的订阅变现方案中,RevenueCat 已经成为开发者最常用的后台服务之一。它帮我们解决了:
- Google/Apple 订阅验证
- 用户权益统一管理
- Webhook & 分析
- 价格、Offer、订阅组管理
- 跨平台(iOS + Android)统一 SDK
本文将从零开始,带你完成 Google Play + RevenueCat 的完整接入流程,避免你踩坑。
一、准备工作
在开始前,你需要准备以下内容:
项目
描述
Google Play Console 开发者账号
已完成注册、缴费
已上传至少一个 build(内部测试也行)
才能启用应用产品区
RevenueCat 账号
免费版即可
Google Cloud Platform (GCP) 账号
用于生成 Service Account JSON
App 内已准备订阅 UI
可后续接 RevenueCat SDK
二、在 Google Play Console 创建订阅产品
注意:Google Play 必须先上传一个 APK/AAB 后,才会解锁订阅页面。
1. 进入订阅页面
路径:
csharp
Monetize with play → Products → Subscriptions

如果你第一次使用,会看到:
"Your app doesn't have any subscriptions yet"
点击 Create subscription。
2. 创建订阅产品

推荐格式:
项目
示例
Product ID
linguadiary_monthly_1
Base Plan ID
monthly
Duration
P1M(一个月)
Price
$4.99(示例)
再创建一个年订阅:
项目
示例
Product ID
linguadiary_yearly_12
Base Plan ID
yearly
Duration
P1Y(1年)
3. 添加税务 & 国家分发
必要,不然订阅无法售卖。

三、在 Google Cloud Platform 生成 Service Account JSON(最关键)
这是 RevenueCat 用来验证 Google Play 订阅的关键文件。
1. 进入 GCP 控制台

2. 确保与 Google Play 绑定同一个项目
Play Console 的 API access 会告诉你当前使用的 "GCP 项目"。
进入同名项目即可。
3. 创建 Service Account
路径:
sql
IAM & Admin → Service Accounts → Create Service Account
填写:
- 名称:revenuecat-play-service
- Role(权限):必须勾选 Service Account Admin + Pub/Sub Admin
👉 缺权限会导致错误:
Your Google service account credentials do not have permissions to access the Google Cloud Pub/Sub API

4. 创建 JSON 密钥并下载
在 Service Account → Keys → Add Key → JSON
会下载一个:
xxxx-revenuecat.json
这是要上传到 RevenueCat 的。

四、在 Google Play Console 授权这个 Service Account

五、在 RevenueCat 绑定 Google Play
进入:

RevenueCat → Projects → Apps → (你的 Android App)
选择:
1. Add Store → Google Play
上传你刚才下载的 JSON。

2. 在 RevenueCat 创建产品
路径:
sql
Products → New Product

填写:
- Product ID(必须与 Google Play 完全一致)
- Offering(可添加 default)
RevenueCat 会自动同步 Google Play 价格、时长、Offer。
六、在 App 内实现 RevenueCat SDK(Flutter 示例)
ini
import 'package:purchases_flutter/purchases_flutter.dart';
void main() async {
await Purchases.configure(PurchasesConfiguration(
"public_sdk_key_google",
));
}
// 获取订阅产品
final offerings = await Purchases.getOfferings();
final package = offerings.current?.availablePackages.first;
// 购买
await Purchases.purchasePackage(package);
// 查询是否是 Pro
final info = await Purchases.getCustomerInfo();
final isPro = info.entitlements.all["pro"]?.isActive ?? false;
七、常见问题(踩坑大全)
1. RevenueCat 报错:CONFIGURATION_ERROR
原因:
- Google Play 本地化语言没填
- Base Plan 没启用
- 未发布
- Service Account 权限不够
- Google Play 未启用 API access 授权
- Google Cloud Pub/Sub 未开
2. 看到 These products are not found
原因:
- Product ID 不一致(大小写不一致都不行)
- Google Play 未发布(Draft 状态)
- 未勾选国家/地区
- Base Plan 没启用(must be Active)
所有东西都准备好了,结果还是查不出来产品,一定进去这个菜单开启bill

3. SDK 一直加载不到 Offerings
原因:
- RevenueCat 未成功读取 Google Play
- 服务账号 JSON 权限不足
- App 没有开网络
八、测试订阅(免费)
- 在 Google Play → License Testing 添加 Gmail 测试账户
- 删掉 app
- 登录测试 Gmail
- 从 Closed Testing 下载你 app
- 购买会显示价格 0 或 $0.01
九、发布正式版本
当订阅正常工作 →
发布 app →
RevenueCat 负责自动验证所有付款 →
你只专注展示订阅 UI 和权益即可。
结语
接入 Google Play 的订阅最容易踩坑在:
- API access 权限不完整
- Service Account JSON 权限缺失
- Google Play 本地化没填
- Base plan 未激活
- RevenueCat 未正确绑定应用