デベロッパー ペイロードはこれまで、不正行為の防止や適切なユーザーへの購入のアトリビューションなど、さまざまな目的で使用されてきました。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 を返してもらうことができます。
BillingFlowParams で setObfuscatedAccountId() と setObfuscatedProfileId() のパラメータを使用し、Purchase オブジェクトの getAccountIdentifiers() メソッドを使ってそれらを取得します。
購入にメタデータを関連付ける
購入に関するメタデータは、自分で管理する安全なバックエンド サーバーに保存することをおすすめします。この購入メタデータは、Purchase オブジェクトの getPurchaseToken メソッドで取得した購入トークンに関連付ける必要があります。このデータを永続化するには、購入が成功した後に PurchasesUpdatedListener を呼び出すときに、購入トークンとメタデータをバックエンドに渡します。
購入フローが中断されてもメタデータが関連付けられるようにするために、先にバックエンド サーバーにメタデータを保存し、その後で購入ダイアログを起動して、ユーザーのアカウント ID、購入しようとしている SKU、現在のタイムスタンプにメタデータを関連付けることをおすすめします。
PurchasesUpdatedListener が呼び出される前に購入フローが中断された場合、アプリが再開して BillingClient.queryPurchasesAsync() を呼び出すと、アプリで購入が検出されます。その後、Purchase オブジェクトの getPurchaseTime() メソッド、getSku() メソッド、getPurchaseToken() メソッドで取得した値をバックエンド サーバーに送信し、メタデータを調べて購入トークンに関連付けることで、購入処理を続行できます。最初に保存したタイムスタンプは Purchase オブジェクトの getPurchaseTime() の値と正確には一致しないため、両方の値は大まかな形でしか比較できません。たとえば、それぞれの値が一定の期間内にあるかどうかを確認できます。