6 月 3 日の「#Android11: The Beta Launch Show」にぜひご参加ください。

デベロッパー ペイロード

デベロッパー ペイロードは、不正行為の防止や、適切なユーザーへの購入のアトリビューションなど、さまざまな目的で使用されてきました。Google Play Billing Library のバージョン 2.2 では、以前はデベロッパー ペイロードに依存していた対象ユースケースが、ライブラリの他の部分でも完全にサポートされるようになりました。

このサポートが追加されたことにより、バージョン 2.2 以降の Google Play Billing Library ではデベロッパー ペイロードがサポートされなくなっています。デベロッパー ペイロードに関連付けられているメソッドはサポートが終了しており、今後のライブラリ リリースで削除される予定です。AIDL または以前のバージョンのライブラリを使用して行われた購入については、アプリで引き続きデベロッパー ペイロードを取得できます。

変更の詳細については、Google Play Billing Library 2.2 のリリースノートをご覧ください。

購入の確認

購入が本人によって行われ、偽造やリプレイ攻撃が行われていないことを確認するには、購入トークン(Purchase オブジェクトの getPurchaseToken() メソッドで取得できます)と Google Play Developer API を使用することをおすすめします。詳しくは、不正行為や不正使用に対処するをご覧ください。

購入のアトリビューション

ゲームをはじめとする多くのアプリでは、購入を開始したゲーム内の登場人物 / アバターまたはアプリ内のユーザー プロフィールに購入が正しくアトリビュートされていることを確認する必要があります。Google Play Billing Library 2.2 以降では、アプリで購入ダイアログを起動するときに、難読化されたアカウント ID とプロフィール ID を Google に渡すことができます。また、購入の取得時にそれらの ID を返してもらうことができます。

BillingFlowParamssetObfuscatedAccountId()setObfuscatedProfileId() のパラメータを使用し、Purchase オブジェクトの getAccountIdentifiers() メソッドを使ってそれらを取得します。

購入にメタデータを関連付ける

購入に関するメタデータは、自分で管理する安全なバックエンド サーバーに保存することをおすすめします。この購入メタデータは、Purchase オブジェクトの getPurchaseToken メソッドで取得した購入トークンに関連付ける必要があります。このデータを永続化するには、購入が成功した後に PurchasesUpdatedListener を呼び出すときに、購入トークンとメタデータをバックエンドに渡します。

購入フローが中断されてもメタデータが関連付けられるようにするために、先にバックエンド サーバーにメタデータを保存し、その後で購入ダイアログを起動して、ユーザーのアカウント ID、購入しようとしている SKU、現在のタイムスタンプにメタデータを関連付けることをおすすめします。

PurchasesUpdatedListener が呼び出される前に購入フローが中断された場合、アプリが再開して BillingClient.queryPurchases() を呼び出すと、アプリで購入が検出されます。その後、Purchase オブジェクトの getPurchaseTime()getSku()getPurchaseToken() メソッドで取得した値をバックエンド サーバーに送信し、メタデータを調べて購入トークンに関連付けることで、購入処理を続行できます。