在受信任的網路活動中使用 Play 帳款服務

除了讓應用程式在 Play 商店銷售數位商品和訂閱項目,Google Play 帳款服務還提供各種工具,協助管理目錄、價格和訂閱項目、提供實用的報表,以及由 Play 商店提供的結帳流程,讓使用者可以輕鬆完成結帳程序。凡是透過 Play 商店發布且販售數位商品的應用程式,也必須符合這項規定。

Chrome 88 在 Android 上推出原始版本測試,可將可信任的網路活動Payment Request APIDigital Goods API 整合,透過 Google Play 結帳系統導入購買流程。我們預計這項來源試用功能也將適用於 ChromeOS 89 版。

為了簡化與 Android 應用程式的整合作業,Trusted Web Activity 團隊正在為 android-browser-helper 推出擴充功能程式庫。本指南將說明將此程式庫整合至現有應用程式時,需要進行哪些變更。

注意:本文將說明 Android 應用程式的整合作業。如果您使用 Bubblewrap 建構應用程式,就可以使用該工具更新應用程式。Bubblewrap 的實作內容已在這個問題中追蹤。本指南適用於使用 Bubblewrap 更新應用程式的使用者。

build.gradle

帳款服務擴充功能程式庫本身會依附於 android-browser-helper2.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 說明文件,並瞭解相關概念,再將其整合至實際應用程式。