作者 / Caren Chang, Engineer
销售数字内容是许多 应用的主要营收渠道。具体形式包括销售应用内的特定商品 (如游戏金币) 以及订阅计划 (比如允许用户在限定时间内访问高级功能)。Google Play Billing 作为一个数字内容销售的工具和服务的集合,可以帮助开发者在 Android 应用中销售线上商品。
本文将从基础知识开始,带大家逐步深入,详细了解 Google Play Billing 3,及其用例和最佳实践。
1. 设置 Android 应用以使用 Google Play Billing 开发库
第一步,也是最重要的一步,是设置 Android 应用以使用 Google Play Billing 开发库。
向 app/build.gradle 文件中添加以下依赖关系,在应用中实现 Google Play Billing:
添加库依赖关系后,为应用构建一个发布版 ,并将其上传到 Google Play 管理中心。
2. 添加应用内产品
为了使更快、更简单,您可以将您的 Google 帐号添加到 Google Play 开发者帐号的 " (License )" 中。这样,只要包名称与 Play Store 中的 匹配,就可以使用调试版本和调试签名进行。
3. 检查设置是否成功
在 Play 管理中心中设置好产品后,您可以在应用中查询产品的详细信息来检查设置是否成功。
如果一切顺利,您将会看到刚刚添加进 Play 管理中心的产品的详细信息!
4. 接入 Google Play Billing 开发库
下一步,便是如何在您的 Android 应用中接入 Google Play Billing 开发库。
本文将以一次性购买的生命周期为例,即在应用中销售数字商品及授予用户的过程。如果您在应用中提供了订阅功能,您也可以阅读往期文章《订阅取消后的那些事儿——恢复订阅和重新订阅》了解更复杂生命周期的订阅流程。
一次性产品可以是消耗品,也可以是非消耗品。消耗品意味着用户可以再次购买。例如,如果您的游戏允许用户购买金币,您可以将金币做成消耗品,让用户可以多次购买。非消耗品意味着用户只能购买一次,典型示例是包含额外应用内功能的升级包。
在 Google Play 管理中心配置应用内产品后,其销售过程如下:
2. 获取用户的既有购买记录 - 成功设置 BillingClient 后,您的应用现在可以调用 queryPurchases() 来查询用户先前的购买记录。
3. 呈现待售产品 - 在本文的前半部分我们谈到了如何在 Google Play 管理中心中设置产品以及如何在应用中查询这些产品。在调用 querySkuDetailsAsync() 获取每个产品的 SkuDetails 后,即可使用这些信息设置对应的界面。
4. 启动购买流程 - 当用户点击产品进行购买时,您的应用需要带上产品 SkuDetails 来调用 launchBillingFlow(),从而向用户展示 Google Play 购买界面 (如下图所示)。
5. 处理购买结果 - 在用户退出 Google Play 购买界面时 (点击 "购买" 按钮完成购买,或者点击 "返回" 按钮取消购买),onPurchaseUpdated() 回调会将购买流程的结果发送回您的应用。然后,根据 BillingResult.responseCode 即可确定用户是否成功购买产品。如果 responseCode == OK,则表示购买已成功完成。
onPurchaseUpdated() 会传回一个 Purchase 对象列表,其中包括用户通过应用进行的所有购买。每个 Purchase 对象都包含 sku、purchaseToken 和 isAcknowledged 以及其他很多字段。使用这些字段,您可以确定每个 Purchase 对象是需要处理的新购买还是不需要进一步处理的既有购买。
6. 和确认购买 - 使用 Play Billing Library 3.0 时,您的应用需要确认购买成功才能完成购买流程。如果您的应用未在 72 小时内确认购买,则用户会自动收到退款,并且 Google Play 会撤消该购买交易。
如果您的应用包含服务器组件,您应在验证成功后再确认购买。我们强烈推荐开发者对所有的应用内购买进行验证。请查看本指南了解有关打击欺诈性购买的更多信息。
7. 授予用户产品 - 完成上述步骤后,您的应用就可以向用户授予他们购买的应用内产品了!
如果您想查看 Google Play Billing 开发库的资源,可以在此处访问官方文档。我们还提供了一些示例,演示了实现 Billing 库的最佳实践。本文中的代码示例可以在 GitHub 上获取。
如果您的应用目前尚未使用 Play Billing Library 3,务必查看我们的迁移指南,将您的应用迁移到最新的 Play Billing Library。
推荐阅读