SummerEye part14 -Firebase Stripe連携-

決済手段としてStripeを導入します。

Firebaseでユーザ管理をしているので、こちらに決済のステータスを保存します。

実装する機能は以下の通り。(それぞれ別途記事にまとめたのでリンクを貼っておきます)

 

実際のアプリ上での動きは、以下の通り(Firebase、StripeのIDをそれぞれfb_id、st_idと表記)

①登録

 

②ログイン

 

③決済(要ログイン)

 

Stripe 定期支払い実装

アプリの設計的に月額課金が望ましかったので定期支払いプランを作成しました。

Stripe -定期支払い(Subscription)-

 

 Firebase Cloud Firestoreの実装

こちらにまとめました。

Firebase Cloud Firestore

 

Firebase Authentication、Firebase Cloud Firestore、Stripeの連携

①登録

Firebase AuthenticationとStripeのIDがFirebase Cloud Firestoreに格納されています。

 

 

 

②ログイン

ちょっとエラーが出たので解決しました。

firebase.initialize_app()メソッドは一回だけ実行すればよかったので、関数の外に出しました。

 

③決済

まずStripe側の作業としてカード情報を追加し、サブスクリプションを作成

次にFirebase Cloud Firestoreのドキュメントを更新(planをfreeからbasicに変更)します。

このとき、セッションに保存したfb_idを使えばドキュメントを検索できるので、これを更新対象にすれば良いと思っていたのですが、実際には違いました

なので、セッションにドキュメントのIDも扱うように変更し、更新の際はこのIDからDocumentReferenceオブジェクトを取得し、updateメソッドを実行するようにしました。

 

おまけ

これで登録から決済のフローが実装できました。

細かいところの調整は残りますが、一仕事やり終えた感があります。

 

今回Firebase Realtime Databaseではなくてベータ版のFirebase Cloud Firestoreを使ってみました。

今年の10月くらいにリリースされたばかりで情報も少なく大変でしたが、逆に公式のリファレンスをしっかり読み解くことになったので理解が進みました。いい勉強になりました。

NoSQLを使いこなせるほど使い込んではいないですが、雰囲気RDBとの違いがわかりました。

今後、NoSQLの強みを理解することで今後の選択の幅が広がりました。

 

次回

あとはデザインこちょこちょすればリリースできそう。

コメントを残す