アプリ内アイテム(非消費)や定期購入の課金を実現する API の呼び出し順を知りたいの?|InAppPurchase|Android|Flutter
in_app_purchase 3.1.5 で「アプリ内アイテム(非消費)」や「定期購入(サブスクリプション)」を課金するフローを実現したいけど、結局、何を呼び出して、どんな順番でやればいいの?
超超超 いい加減 超超超超 いい加減 …に呼び出し順を列挙してみた。でも、分かり易くない?
- isAvailable - 課金 API の利用確認
- purchaseStream - 課金リスナーを事前に登録
- queryProductDetails - アプリ内アイテム(非消費)や定期購入の商品一覧を取得 → 画面 UI に反映
- buyNonConsumable - 商品ボタン押下など → アプリ内アイテム(非消費)や定期購入を課金
- completePurchase - リスナーの受信で課金を確定
最後の課金確定処理「completePurchase」が必要なの、初めてだと不思議だよね。「buyNonConsumable」で buy(購入)しているのだから、そこで終わってもいいじゃんって。
理由は、その課金のタイミングで、不正を混入できるから。リバースエンジニアリング等で課金情報が改竄されていないかどうかを、自分で用意したサーバにて検証する必要があるのだよ(Verifying Google Play purchases)。
でも、ぶっちゃけ…改竄による損害を放置するなら、検証せずに即「completePurchase」することでサーバなしに完結できるけどね?
#関連する記事
- アプリ内アイテムの課金や定期購入(サブスクリプション)の実装で、in_app_purchase か flutter_inapp_purchase か、迷うの?|InAppPurchase|FlutterInappPurchase|Android|Flutter
- InAppPurchaseConnection#queryPastPurchases はどこへ消えた?|InAppPurchase|Android|Flutter
#直近に読んでいた漫画(おすすめ)
コメント
コメントを投稿