LoginSignup
20
10

More than 5 years have passed since last update.

Google Play Billing Libraryの課金後のメソッドについてメモ(queryPurchases()とqueryPurchaseHistoryAsync())

Last updated at Posted at 2018-11-12

以下のQiitaで課金するまでの流れはなんとなくわかりましたが、その後に使うこれらのメソッドが良くわからないので、少し調べました。
簡単なGoogle Play Billing Libraryの課金の流れ

queryPurchases()とqueryPurchaseHistoryAsync()などはBillingClientクラスのメソッドです。
これらを使うと課金したもの(Purchase)についての情報を課金後に取得する事ができます。
ちょっとドキュメント読んでもピンとこなかったので調べてみました。

課金でトラブルがあっても責任はおえないため、自分で検証して確認してください :bow:
何かこうしたほうが良いなど、コメントあればください :pray:

こんな感じのアプリを作って、検証してみました
image.png

それぞれの特徴

メソッド 同期、非同期 未消費のPurchaseが"ない"とき 未消費のPurchaseが"ある"とき 同じアカウントの他の端末での変更
queryPurchases(sku) : Purchase 同期 何も取得できない 消費していないPurchaseを取得できる 反映されない
queryPurchaseHistoryAsync(skuType) : List<Purchase> 非同期 Sku毎に最後に消費したPurchaseが取得できる 消費していないPurchaseも含め、Sku毎にPurchaseを取得できる 反映される

課金したもの(Purchase)は消費(consume)することができます。課金後にconsumeAsync()を呼ぶことで、Purchaseを消費することができます。
消費していない間、PurchaseをGoogle Playが保持してくれていて、自社サービスのサーバーにちゃんと課金の反映できるまで消費しないということができます。

取得できるPurchaseの情報の違い

launchBillingFlow後のonPurchasesUpdated()で取得できるPurchase(危なそうなものは..で省略しています)

Purchase. Json: {"orderId":"GPA.33..46","packageName":"com.github.takahirom.hogehoge","productId":"item1","purchaseTime":1542021978243,"purchaseState":0,"purchaseToken":"gd..Ze"}

queryPurchases()で取得できるPurchase ("launchBillingFlow後のonPurchasesUpdated()で取得できるPurchase"と全く同じ)

Purchase. Json: {"orderId":"GPA.33..46","packageName":"com.github.takahirom.hogehoge","productId":"item1","purchaseTime":1542021978243,"purchaseState":0,"purchaseToken":"gd..Ze"}

queryPurchaseHistoryAsync()で取得できるPurchase

取得できている情報がぜんぜん違うorderIdpackageNameがない代わりに、productId(SKU)やdeveloperPayloadがある。purchaseTokenはあるので、それは使える。

Purchase. Json: {"productId":"item1","purchaseToken":"gd..Ze","purchaseTime":1542021978243,"developerPayload":null}

データ削除して起動した時の挙動した時

未消費のPurchaseがないとき かつ アプリのデータ削除した時も、未消費のPurchaseがあるとき かつ アプリのデータ削除した時も、同じように取得可能。

まとめ

queryPurchases()はカジュアルに未消費のPurchaseがあるかどうかを確認するのに使って消費を行い、
端末を変えたり、データ削除後の履歴を辿りたい時にqueryPurchaseHistoryAsync()を使うと良さそうです。

20
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
10