Google Play 請求サービスでは、アプリで Google Play ストアでデジタル商品や定期購入を販売できるだけでなく、カタログ、料金、定期購入を管理するためのツール、便利なレポート、ユーザーに使い慣れた Google Play ストアによる精算フローを利用できます。また、デジタル商品を販売する Google Play ストアで公開されるアプリにも必須です。
Chrome 88 では、Android でオリジン トライアルが開始されます。このトライアルでは、Trusted Web Activities と 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>
また、請求ライブラリには、Android マニフェストに追加する必要がある 2 つの新しいコンポーネントが導入されています。ブラウザが接続して、アプリケーションがお支払いをサポートしているかどうかを確認できるサービスと、お支払いフローを処理するアクティビティです。
<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 のドキュメントを読み、コンセプトを理解することを強くおすすめします。