Google Play 請求サービスでは、アプリで Google Play ストアでデジタル商品や定期購入を販売できるだけでなく、カタログ、料金、定期購入を管理するためのツール、便利なレポート、ユーザーに使い慣れた Google Play ストアによる精算フローを利用できます。また、Google 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
を少しカスタマイズする必要があります。
そのためには、元のクラスを拡張して onCreate()
をオーバーライドする独自の DelegationService
クラスを作成する必要があります。onCreate()
内に、Digital Goods API のハンドラとしてアプリケーションを登録するメソッド呼び出しを 1 つ追加する必要があります。
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>
Billing Library には、Android マニフェストに追加する必要がある 2 つの新しいコンポーネントも導入されています。ブラウザが接続して、アプリケーションがお支払いをサポートしているかどうかを確認できる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 のドキュメントを読み、コンセプトを理解することを強くおすすめします。