此插件已转移到 RevenueCat 官方仓库。 请参阅 官方文档 获取更多信息。
如果您更喜欢一个更简单的本机 API 而不使用 RevenueCat, @capgo/native-purchases 实现了直接与 StoreKit 和 Google Play Billing 的应用内购买和订阅功能。
Capacitor 购买是 Capacitor 框架的插件,允许在 iOS 和 Android 上实现应用内购买。它提供了一个简单和一致的 API,使开发者能够轻松地在移动应用中实现应用内订阅和购买。
Capacitor 购买插件的关键功能之一是它与 RevenueCat 集成,RevenueCat 是一个提供应用内订阅和应用内购买工具的平台。RevenueCat 简化了实现应用内订阅和购买的过程,提供了一个简单和一致的 API,并自动化了如验收凭证和用户管理等任务。
使用 RevenueCat,开发者可以轻松地管理订阅、跟踪收入和执行其他相关任务。RevenueCat 提供的功能包括:
- 自动验收凭证
- 用户管理
- 自定义定价模型支持
- 详细分析 -可扩展性
通过使用 Capacitor 购买插件与 RevenueCat 集成,开发者可以节省时间和精力来实现应用内订阅和购买,在移动应用中提供额外的功能,改善用户体验并增加收入。
使用Capacitor购买插件和RevenueCat,开发者可以轻松管理和跟踪应用内订阅和购买,验证收据,并在多个平台上管理用户。它还允许创建自定义定价模型并获取详细的分析以改进性能和收入。
安装
Be sure to use the latest version of Capacitor and the Capacitor Purchases plugin. You can check the latest version of Capacitor and the Capacitor Purchases plugin on the Capacitor website.
安装Capacitor购买插件,运行以下命令:
npm i @capgo/capacitor-purchases
将插件添加到您的应用本机code
npx cap sync
在Xcode中添加应用内购买能力:
然后

1. 创建RevenueCat帐户
本指南将指导您如何使用仅需几行code即可与订阅和RevenueCat的SDK进行上线。
注册新RevenueCat帐户 这里.
📘
💡 这里有一个小提示!
Capgo 建议为每个应用程序/项目创建一个单独的 Capgo 账户,尤其是如果您打算出售应用程序。这将加快转移过程,因为您可以一次性转移整个账户,而不是等待 Capgo 支持团队转移单个项目。
企业/组织
我们建议在注册 Capgo 时使用公司账户,并在项目中设置应用程序。您将能够邀请您的团队成员加入项目,作为 协作者 但 只有项目负责人才能管理账单. 项目协作者无法管理账单细节。
2. 项目和应用程序配置
▶️ 创建一个项目
导航到 Capgo 控制台并 添加一个新项目 从顶部导航菜单下拉列表中选择 项目.

创建新项目弹出窗口
▶️ 添加 App / 平台
来自 项目设置 > 应用 在项目仪表板的左侧菜单中,选择将要添加的应用的平台。

选择应用平台的项目仪表板
字段 App 名称 需要将您的应用程序添加到 RevenueCat 中。其他配置字段可以稍后添加。要进行测试和生产购买,需要配置 Bundle ID(iOS)/ Package 名称(Android)以及共享密钥(iOS)/ 服务凭证(Android)。

Apple App Store 应用程序的应用程序配置页面
📘
💡 这是一个提示!
注册应用程序后,RevenueCat 建议设置 平台服务器通知。这些通知并非必需,但会加快 webhooks 和集成交付时间,减少更新订阅者的延迟时间。
📘
测试和生产应用程序和用户
RevenueCat 本身并不具备单独的测试和生产环境。相反,针对用户的底层交易是通过沙盒和生产环境来区分的。
任何RevenueCat应用都可以从商店中进行沙盒和生产购买。如果您有单独的应用程序用于测试和生产环境,则可以在RevenueCat中创建多个项目以反映您的设置。
此外,用户不受环境的影响。同一用户可以同时拥有激活的沙盒购买和激活的生产购买。
▶️ 服务凭证
需要为RevenueCat设置服务凭证,以便它可以代表您与应用商店进行通信。请参阅RevenueCat指南 App Store Connect 共享密钥, Play Service 凭证和 Amazon Appstore 共享密钥 获取更多信息。
请注意,Play Service 凭证可能需要36小时才能在Google服务器上传播。
3. 产品配置
▶️ 商店设置
在使用RevenueCat来获取产品之前,您必须在各个商店中配置您的产品。 请参阅以下指南: App Store Connect, Google Play Console, Amazon Appstore, Stripe 以帮助您在此过程中导航。
如果您正在销售iOS产品,请务必签署您的“付费应用程序协议”并在 App Store Connect > 协议、税务和银行. 中填写您的银行和税务信息。.
📘
此项需要在测试任何购买之前完成。
您想在测试期间跳过商店设置吗?
了解如何设置 StoreKit 配置文件的更多信息在 RevenueCat 沙盒测试 指南。
▶️ 在 RevenueCat 中配置产品和许可
您在 App Store Connect, Google Play Console, Amazon Appstore,或 Stripe,完成了应用内产品的配置后,您需要将该配置复制到 RevenueCat 控制台中。RevenueCat 使用许可系统来控制对高级功能的访问,以及使用 Offerings 来管理您向客户提供的产品集。
许可是客户在购买特定产品后获得的访问级别。 Offerings 是一种简单的方式,让您可以组织您希望在付费墙上提供的应用内产品,并远程配置它们。RevenueCat 建议使用这些功能来简化您的__CAPGO_KEEP_0__并使您能够在不发布应用程序更新的情况下更改产品。 utilizing these features to simplify your code and enable you to change products without releasing an app update.
配置产品 以设置您的产品,然后将其组织到Offerings或Entitlements中。 RevenueCat步骤4

RevenueCatSDK可以无缝地在各个平台上实现购买和订阅,同时与RevenueCat服务器同步令牌。
如果您遇到与SDK相关的问题,请参阅
If you run into issues with the SDK, see 以获取指导。 仅使用您的公共__CAPGO_KEEP_0__密钥来配置购买
📘
Only use your public SDK key to configure Purchases
You can get your public SDK key from the API 下获取您的公共密钥 __CAPGO_KEEP_0__ 菜单项
项目设置 在控制台中。 您应该只在应用启动时配置共享实例的 .shared instance in the SDK.
,之后通过访问 Configuring SDK __CAPGO_KEEP_0__中共享整个应用。要了解更多信息和最佳实践,请参阅RevenueCat的指南:《配置__CAPGO_KEEP_0__》。
确保您只使用公共 __CAPGO_KEEP_0__ 密钥配置。您可以阅读有关RevenueCat可用的不同 __CAPGO_KEEP_1__ 密钥的更多信息 购买 与您的公共 SDK 密钥一起使用。您可以阅读有关RevenueCat可用的不同 API 密钥的更多信息 身份验证指南.
import { CapacitorPurchases } from '@capgo/capacitor-purchases'
import { isPlatform } from '@ionic/vue' // use the right one for your framework
CapacitorPurchases.setDebugLogsEnabled({ enabled: import.meta.env.DEV }) // Enable to get debug logs in dev mode
if (isPlatform('ios')) {
CapacitorPurchases.setup({ apiKey:'appl_******'})
} else if (isPlatform('android')) {
CapacitorPurchases.setup({ apiKey:'goog_******'})
}
在开发环境中,RevenueCat建议启用更详细的调试日志。有关这些日志的更多信息,请参阅 调试指南 如果您打算与现有购买 __CAPGO_KEEP_0__ 一起使用RevenueCat,请参阅
If you’re planning to use RevenueCat alongside your existing purchase code, refer to their guide on 使用用户 ID 配置购买.
📘
如果您在应用中有用户身份验证系统,则可以在配置时或稍后使用
提供用户标识符。要了解更多信息,请参阅RevenueCat关于
.logIn()的指南 识别用户.
SDK将自动从Apple、Google或Amazon获取配置的产品信息并检索产品信息。因此,当客户打开您的购买屏幕时,已加载的产品将可用。 已配置的产品 ▶️ 获取和显示可用产品
使用用户ID配置购买 如果您在应用中有用户身份验证系统,则可以在配置时或稍后通过调用 获取更多信息和最佳实践,请参阅RevenueCat指南。
显示产品
📘
获取和显示可用产品
识别用户
.logIn()获取更多信息,请参阅RevenueCat指南。 __CAPGO_KEEP_0__将自动从Apple、Google或Amazon获取配置的产品信息并检索产品信息。因此,当客户打开您的购买屏幕时,已加载的产品将可用。.
The SDK 将自动从 Apple、Google 或 Amazon 等平台获取已配置的产品,并从这些平台获取产品信息。因此,当客户打开您的购买屏幕时,已可用的产品将已经加载好。 已配置的产品 和从 Apple、Google 或 Amazon 等平台获取的产品信息。
以下是获取 Offerings 的示例。您可以使用 Offerings 来组织您的付费墙屏幕。有关更多信息和最佳实践,请参阅 RevenueCat 的指南《显示产品》。 如果获取您的 Offerings
const { offerings } = await CapacitorPurchases.getOfferings()
if (offerings.current !== null) {
// Display current offering with offerings.current
}
产品 或可用的, 包为空,则是由于在各个商店中配置问题。 已配置的产品 和从 Apple、Google 或 Amazon 等平台获取的产品信息。
在 App Store Connect 中,这通常是因为 '付费应用程序协议' 未更新或产品未达到 '准备提交' 状态。 在 GooglePlay 中,这通常发生在应用程序未发布在封闭测试轨道且未添加有效测试用户时。
有关解决此问题的更多信息,请参阅 RevenueCat 帮助中心 ▶️ 完成购买.
Capgo 提供了一个简单的方法来实现购买功能。
The SDK includes a simple method for facilitating purchases. The purchase:package 以下示例展示了如何使用 Capgo 进行购买并确认解锁 'your_entitlement_id' 内容。有关详细信息,请参阅 RevenueCat 的关于 'Making Purchases' 的指南。
The code sample below shows the process of purchasing a package and confirming it unlocks the “your_entitlement_id” content. More details about the purchase:package 您可以在任何时候使用此方法获取最新状态,并且在应用程序生命周期中安全地多次调用此方法。 购买.
const purchase = async (p: Package): Promise<PurchaserInfo | null> => {
try {
// console.log('purchase', p)
const data = await CapacitorPurchases.purchasePackage({
identifier: p.identifier,
offeringIdentifier: p.offeringIdentifier,
})
const purchaserInfo = data.purchaserInfo
// console.log('listenBuy', purchaserInfo)
if (purchaserInfo.activeSubscriptions.includes(p.identifier)) {
// set the user as paid
}
return purchaserInfo
}
catch (e) {
console.error('listenBuy error', e)
}
return null
}
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ 自动缓存最新的 CustomerInfo 在更新时 — 所以在大多数情况下,这个方法从缓存中拉取并运行非常快。
通常在决定显示哪个 UI 组件给用户时,以及用户执行需要特定权限等级的操作时,会调用这个方法。
📘
💡 这是一个小技巧!
您可以获取有关订阅的更多信息,除了是否有效之外。参见 订阅状态 了解订阅是否设置为续费,用户信用卡是否存在问题,以及更多信息。
RevenueCat 允许您的用户恢复他们的应用内购买,重新激活他们之前从 同一商店账户 (Apple、Google 或 Amazon 账户)购买的任何内容。我们建议所有应用都提供一些方法让用户触发恢复方法。请注意,Apple 需要在用户无法访问他们购买的内容(例如卸载/重新安装应用,丢失账户信息等)时提供恢复机制。
const res = await CapacitorPurchases.restoreTransactions()
const purchaserInfo = res.purchaserInfo
const ids: string[] = [] // extract active subscriptions ids
purchaserInfo.activeSubscriptions.forEach((id) => {
ids.push(id)
})
如果两个不同的 App 用户 ID 从同一个底层存储账户(Apple、Google或Amazon账户)中恢复交易。 RevenueCat可能尝试在两个App用户ID之间创建一个别名,并将它们视为同一用户。有关不同可配置恢复行为的更多信息,请参见 Restoring Purchases 指南。
由于SDK在任何平台上都能顺畅工作,用户购买信息的变化可能来自各种来源。您可以通过遵循可选委托方法来响应客户的任何变化, CustomerInfo 此方法将在__CAPGO_KEEP_0__接收到来自 purchases:receivedUpdated:.
This method will fire whenever the SDK receives an updated CustomerInfo 或 getCustomerInfo(), purchase(package:), purchase(product:)的更新 restorePurchases().
客户信息更新 不会 从RevenueCat后端推送到您的应用程序,更新只能通过向RevenueCat发起出站网络请求来实现,如上所述。
根据您的应用程序,忽略委托并简单地在下一次启动应用程序或SDK方法的完成块中处理客户信息的变化可能足够了。
CapacitorPurchases.addListener('purchasesUpdate', (data) => {
console.log('purchasesUpdate', data)
})
👍
恭喜你!
你已经成功地实现了一个功能全面的订阅购买系统,而不用花一个月的时间写 code。恭喜你!
示例应用
要下载更多关于如何整合 SDK 的完整示例,请访问RevenueCat示例应用资源。
我将很快发布一个使用 Capacitor 和 Vue.js 的示例应用。
If you need to move deep usage of the Capacitor SDK check the documentation 这里.
下一步
\
- 如果你还没有,请确保你的产品配置正确,查看RevenueCat 关于权利的指南.
- 如果你想使用自己的用户标识符,请阅读关于 设置应用用户 ID .
- 如果您从其他系统转移到 RevenueCat,请参阅 RevenueCat 指南 迁移您的现有订阅.
- 一旦您准备好测试您的集成,请遵循 RevenueCat 指南 测试和调试.
- 如果您符合 App Store 小型商业计划的资格,请参阅 RevenueCat 指南 如何申请并通知 RevenueCat
如果您需要在应用中实时更新
加入我们 👇
注册这里获取您的帐户
继续从应用内购买中获取 capacitor
如果您正在使用 在应用内购买capacitor 来计划付款和购买,连接它与 Capgo Pricing 为Capgo Pricing中的产品工作流 Payment system Payment system的实现细节 @capgo/native-purchases @capgo/native-purchases的实现细节 Getting Started Getting Started的实现细节,和 Revenue Playbook for the implementation detail in Revenue Playbook.