デベロッパー ペイロードはこれまで、不正行為の防止や適切なユーザーへの購入のアトリビューションなど、さまざまな目的で使用されてきました。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()
の値と正確には一致しないため、両方の値は大まかな形でしか比較できません。たとえば、それぞれの値が一定の期間内にあるかどうかを確認できます。