概要
Flutterで課金処理を実現する際にRevenueCatというサードパーティのサービスを利用すると簡易に実装することが可能です。しかし、RevenueCatでの設定やAndroidでのデバッグにハマりポイントがいくつかあったので紹介したいと思います。
RevenueCatとは
RevenueCat は製品の購入やサブスクリプションなどのネイティブアプリ向けの課金処理を数行のコードで実現し、dashboardでアナリティクスを把握することが出来ます。クロスプラットフォームに対応しておりFlutterやReactNative, UnityなどのSDKもサポートされています。利用料はこちらで(https://www.revenuecat.com/pricing ) 、小規模のサービスであれば無料で利用可能で、webhookやslackとの統合などを行ったり、RevenueCatを通した1ヶ月の収益が $10,000 を超える場合は有料プランとなります。
レシートの検証など、サーバが必要となる処理に関しても委譲できるため簡易に課金処理の実装が可能となります
RevenueCatでの設定
この記事ではFlutterでの実装を想定した設定を紹介します。基本的な設定は Quick start に記載された通りに行いますが、下記の流れとなります
- RevenueCatにアプリ情報、アプリに紐づくApp Store Connect, Google Play Consoleの登録
- App Store Connect, Google Play Consoleに製品情報を登録
- アプリに課金処理を実装
注意点としては、Google Play Consoleに製品情報を登録するためには、一度アプリのApp Bundleをupload後に登録することが可能となります。
App Store Connectの紐付けはすんなり済みますが、Google Play Consoleの紐付けがやっかいなのでGoogle Play Consoleの紐付け設定を紹介します。
Google Play Consoleの紐付け
前提として、AndroidでRevenueCat経由でGoogle Play Consoleで設定した製品情報の取得や課金処理の分析をするためには、Google Cloud Platform (GCP)のCloud Pub/Sub と Monitoring Viewerというサービスを利用して行います。そのため、下記の設定が必要となります
- GCPにGoogle Play Consoleに紐づくアカウントを作成(Google Play Console Developer)、サービスアカウントの作成
- 作成したサービスアカウントが上記2つのサービス(pub/sub, monitoring)を利用するためのRoleの設定
- 作成したGCPアカウントがRevenueCat経由でGoogle Play Consoleの製品情報を取得できるようにRevenueCatにcredential json情報を設定
2.はRoleの設定時でハマりポイントがあり、RevenueCatのドキュメントにあるPub/Sub AdminとMonitoring Viewer のRoleを設定しないとRevenueCatにjson登録時にvalidationで弾かれてしまいます。
しかし、ドキュメント通りに進めてもRole選択時にPub/Sub AdminとMonitoring ViewerのRoleが出てこない問題がありました…
この問題が発生している場合は、サービスアカウントの作成後に GCPの左にある IAM -> 対象のサービスアカウントの右にある編集ボタンをクリック -> 別のロールを追加 でRoleが出てくるのでこちらから追加します
3. こちらは基本的にはドキュメントにある通り進めれば設定可能ですが、紐づくGCPが異なる場合やRoleが足りない場合はRevenueCatで弾かれ、弾かれた時のアラートはjson登録するフォームの上部に表示されているため、そこのエラー内容を確認しましょう。
またドキュメントにある通り、設定後即時反映ではなく時間をおいてから課金処理ができるようになる点に関しても注意しましょう
Important
It can take up to 36 hours for your Play Service Credentials to work properly with the Android Developer API. You may see “Invalid Play Store credentials” errors and be unable to make purchases with RevenueCat until this happens.
Flutter + RevenueCatでの課金処理実装
課金の実装はこちらの記事がとても参考になります。https://zenn.dev/sakutech/articles/revenuecat-flutter-in-app-purchase
製品の復元処理がないと、iOSの審査でリジェクトされるため実装しておきましょう
課金処理の確認方法
iOSの場合は、実機に対してrelease buildをすることでRevenueCat経由で課金情報の取得、課金処理が可能となります。Androidは少しやっかいで、クローズドテストでアプリ公開後に課金処理ができるようになるため、release buildで出来ない点に注意です。
RevenueCatのコミュニティーでも明記されています(https://community.revenuecat.com/sdks-51/why-are-offerings-or-products-empty-124
実際にSandbox環境で課金処理をした場合、RevenueCatのdashboardの Overview -> Viewing sandbox data をオンにすることで確認できます
宣伝
この課金処理を実装した個人アプリは DearGuest というアプリです!ブライダル系のアプリなので、あなたが対象者もしくは周りにマッチしそうな人がいれば紹介して、インストールして使って頂けると幸いです!
