除了让您的应用能够在 Play 商店中销售数字商品和订阅之外,Google Play 结算还提供用于管理目录、价格和订阅的工具、实用报告,以及由 Play 商店提供支持且用户已熟悉的结账流程。对于在 Play 商店上发布的销售数字商品的应用,也必须满足此要求。
Chrome 88 在 Android 上发布时将推出源代码试用版,可将可信 Web 活动与 Payment Request API 和 Digital Goods API 集成,以便通过 Google Play 结算服务实现购买流程。我们预计,ChromeOS 89 版本也将推出此源试用。
为了简化与 Android 应用的集成,Trusted Web Activity 团队将向 android-browser-helper 引入一个扩展库。本指南将介绍将此库集成到现有应用中所需进行的更改。
注意:本文介绍了 Android 应用的集成。如果您使用 Bubblewrap 构建应用,将能够使用该工具更新您的应用。我们在此问题中跟踪了 Bubblewrap 上的实现。本指南适用于不使用 Bubblewrap 更新应用的开发者。
build.gradle
结算扩展程序库本身依赖于 android-browser-helper
的版本 2.1.0
。请确保您的应用使用的版本不低于该版本。
您还需要为结算扩展库添加实现声明:
dependencies {
...
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.1.0'
implementation 'com.google.androidbrowserhelper:billing:1.0.0-alpha05'
}
DelegationService.java
android-browser-helper 附带一个默认的 DelegationService
,可供应用直接使用。使用结算扩展程序时,您需要稍微自定义 DelegationService
的版本。
为此,您需要创建自己的 DelegationService
类,该类会扩展原始类并替换 onCreate()
。在 onCreate()
中,您需要添加一个方法调用,将应用注册为 Digital Goods API 的处理脚本:
package com.example.yourapp;
import com.google.androidbrowserhelper.playbilling.digitalgoods.DigitalGoodsRequestHandler;
import com.google.androidbrowserhelper.trusted.DelegationService;
public class DelegationService
extends com.google.androidbrowserhelper.trusted.DelegationService {
@Override
public void onCreate() {
super.onCreate();
registerExtraCommandHandler(new DigitalGoodsRequestHandler(getApplicationContext()));
}
}
AndroidManifest.xml
在 Android 清单中,您需要将对委托库的引用更改为您自己的实现。在相应的 service
声明中,将 com.google.androidbrowserhelper.trusted.DelegationService
替换为您新创建的类。
<service
android:name=".DelegationService"
android:exported="true">
<intent-filter>
<action android:name="android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
结算库还引入了两个需要添加到 Android 清单中的新组件:一个可供浏览器连接并检查应用是否支持付款的服务,以及一个用于处理付款流程本身的activity:
<activity
android:name="com.google.androidbrowserhelper.playbilling.provider.PaymentActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|keyboard|orientation|screenLayout|screenSize"
android:exported="true">
<intent-filter>
<action android:name="org.chromium.intent.action.PAY" />
</intent-filter>
<meta-data
android:name="org.chromium.default_payment_method_name"
android:value="https://play.google.com/billing" />
</activity>
<!-- This service checks who calls it at runtime. -->
<service
android:name="com.google.androidbrowserhelper.playbilling.provider.PaymentService"
android:exported="true" >
<intent-filter>
<action android:name="org.chromium.intent.action.IS_READY_TO_PAY" />
</intent-filter>
</service>
详细了解 Digital Goods API 和 Google Play 结算服务
本文介绍了使用 Trusted Web Activity 的 Android 应用专门需要执行的步骤,但 Google Play Billing API 有自己的术语,并且包括客户端和后端组件。我们强烈建议您先阅读 Google Play 结算和 Digital Goods API 文档,了解相关概念,然后再将其集成到正式版应用中。