アプリ内アイテム(非消費)や定期購入の課金を実現する API の呼び出し順を知りたいの?|InAppPurchase|Android|Flutter


in_app_purchase 3.1.5 で「アプリ内アイテム(非消費)」や「定期購入(サブスクリプション)」を課金するフローを実現したいけど、結局、何を呼び出して、どんな順番でやればいいの?

超超超 いい加減 超超超超 いい加減 …に呼び出し順を列挙してみた。でも、分かり易くない?


  1. isAvailable - 課金 API の利用確認
  2. purchaseStream - 課金リスナーを事前に登録
  3. queryProductDetails - アプリ内アイテム(非消費)や定期購入の商品一覧を取得 → 画面 UI に反映
  4. buyNonConsumable - 商品ボタン押下など → アプリ内アイテム(非消費)や定期購入を課金
  5. completePurchase - リスナーの受信で課金を確定


最後の課金確定処理「completePurchase」が必要なの、初めてだと不思議だよね。「buyNonConsumable」で buy(購入)しているのだから、そこで終わってもいいじゃんって。

理由は、その課金のタイミングで、不正を混入できるから。リバースエンジニアリング等で課金情報が改竄されていないかどうかを、自分で用意したサーバにて検証する必要があるのだよ(Verifying Google Play purchases)。

でも、ぶっちゃけ…改竄による損害を放置するなら、検証せずに即「completePurchase」することでサーバなしに完結できるけどね?


#関連する記事


#直近に読んでいた漫画(おすすめ)

コメント

このブログの人気の投稿

アプリがターゲットとする Android API レベルを変更するの?|targetSdkVersion|SDK|Android|Flutter

Android SDK バージョン(コンパイルに使用する Android API レベル)を変更するの?|compileSdkVersion|SDK|Android|Flutter

ImagePicker を操作すると「Lost connection to device.」とだけ言い残して強制終了するの?|iOS|Flutter