2024/03/20
Stripe連携の実装の仕方を調べる
決済代行会社のStripeと連携すべく、いよいよ実装に着手。
連携の仕方については、概要をつかむのにこちらの記事が参考になった。
- https://zenn.dev/ryota_iwamoto/articles/web_checkout_on_mobile_app
- もちろん公式を踏まえる:サブスクリプションの実装を構築する | Stripe のドキュメント
さて実際に連携するには、サーバーサイドでAPIを呼び出したりWebhookを受け取ったりする処理が必要になってくるようだ。
Flutterはクライアントサイドの言語。サーバサイドの実装は何か他で用意しないといけない。Firebaseで言うとCloud Functionsを利用することになる。
私はFirebaseのCloud Functionsを使ったことは無く、完全に初めて。
サンプルを動かすこと自体は難しくなかったが、flutterから呼び出したときにエラーが「internal」しか出ないのがすごく困った。
- 色々調べてもどうしても原因が分からず、エミュレーターで試したところ取れる情報が少し増えた。どうもデフォルトのサンプルそのままだと応答が読み取れず、JSONにしないといけないようようだということが分かった。
- レスポンスをJSONに直したり再度デプロイしたりしているうちに、本番でも動くようになった
結局本番でちゃんとエラーが表示されるようになってよかった。Cloud Functionsのエミュレーターの使い方も覚えたし良しとしよう。
課金の入り口となる機能も着手
このツールは多くの人に気軽に使い始ってもらいたいので基本は無料で提供したい。
しかしそうは言っても利用してもらうたび、私がクラウド業者に支払うお金がかかってしまう。
そこでサーバ維持のために少額(月200~300円程度)の有料プランを提供しようとしているが、何をもって課金するかは難しい。
Firebaseの基準で考えると利用するデータ量が多ければお金を払って頂くという考えになる。ただユーザから見ると、データ量が○○bytesなどで課金だと分かりづらい。
長い間考えた結果「作成できるキャンバス数(ファイル数)が一定以上増えたら有料の固定プラン」というふうにした。これならキャンバスが少ないうちは無料で使えて、本格的に利用頂く場合のみ少しの月額費用を払うという形になる。従量課金は精神衛生上良くないので、なるべく固定費用にしたい。
但しキャンバス数だけを課金の基準とすると、課金逃れとして1つの巨大なキャンバスに無数のアイディアを配置してずっと使い回すというようなことも出来てしまう。そこで無料の場合には1キャンバスに作成できるアイディアの数にも上限を設けることにした。
参考:idea Lane 利用プラン – idea Lane
クライアント側の実装としては、まずは無料ユーザの上限を超えた場合に、メッセージを表示するようにした。(OKを押した後の中身はまだ)
課金以外の対応としては、リレーション関連の表示を調整したりなどを行った。
※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています
この記事はアイディア整理ソフト「idea Lane」の開発記録です
↓どなたでも、ユーザ登録だけで無料ですぐに使えます↓
テキストベースの思考整理ツール「idea Lane」
コメント