デベロッパー ペイロード

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

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

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

購入の確認

購入が本人によって行われ、偽造やリプレイ攻撃ではないことを確認するには、購入トークン(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.queryPurchasesAsync() を呼び出すと、アプリで購入が検出されます。その後、Purchase オブジェクトの getPurchaseTime() メソッド、getSku() メソッド、getPurchaseToken() メソッドで取得した値をバックエンド サーバーに送信し、メタデータを調べて購入トークンに関連付けることで、購入処理を続行できます。最初に保存したタイムスタンプは Purchase オブジェクトの getPurchaseTime() の値と正確には一致しないため、両方の値は大まかな形でしか比較できません。たとえば、それぞれの値が一定の期間内にあるかどうかを確認できます。