除了讓應用程式在 Play 商店銷售數位商品和訂閱項目,Google Play 帳款服務還提供各種工具,協助管理目錄、價格和訂閱項目、提供實用的報表,以及由 Play 商店提供的結帳流程,讓使用者可以輕鬆完成結帳程序。凡是透過 Play 商店發布且販售數位商品的應用程式,也必須符合這項規定。
Chrome 88 在 Android 上推出原始版本測試,可將可信任的網路活動與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 資訊清單的新元件:瀏覽器可連線至的 Service,用於檢查應用程式是否支援付款,以及處理付款流程本身的 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 帳款服務
本文介紹了使用信任的網路活動的 Android 應用程式所需的步驟,但 Google Play 結帳 API 有其專屬的術語,並包含用戶端和後端元件。強烈建議您先閱讀 Google Play 帳款服務和 Digital Goods API 說明文件,並瞭解相關概念,再將其整合至實際應用程式。