サービスを実現したい企業向けに設計の参考になる情報を提供できればと思う。いう情報は割と自分なりに設計して実装するっていうパターンが多いかと思うが、とても大事なことなので慎重に検討していこう。決済サービスの選択まずは決済サービスをどれにするかって話。ここで一番大事なのは、扱うカード提供会社の種類だ。当然として、その他のクレジットカード会社が使えるのかどうか。ここは顧客のカード登録の自由度を決めるので、実は決済手数料よりもよっぽど大事な項目になる。あとは企業によっては収益が出た後の支払いフローも確認しておいたほうがいいかもしれない。収益の確定はいつで、支払いはいつなのか。黒字倒産するほど急成長することは稀だとは思うが、そのあたりのキャシュフローも事前に把握しておく必要がある。あとは最低限クレジットカードの登録と、そのカード情報をトークン化して決済ができる仕組みがあれば大丈夫だ。最終的にどのクレジットカード決済サービスを使うべきかは自らの意思で判断していただきたい。決済フローの設計さて、月額課金モデルと一口に言えど色々な方法が存在する。以下のようなバリエーションを考えなければならない。有料プランは単一か複数か当然単一の課金プランであればシンプルで実装しやすい。途中のプランアップグレードを考える必要はないし、プランごとに機能を出し分けたりする必要もないからだ。プランを複数用意するケースってのは、使って欲しいターゲットがそれぞれいて、そのターゲットに向けた特別な機能を上位プランでは提供したいという場合になるだろう。いうことで、最初のローンチでは単一プランしかなかったとしても、今後利用の想定ユーザーが増えていくにつれて、単一プランから複数プランに変わることも十分にあり得る。単一プランを選んだとしても今後複数プランが出てきた時にどうすべきかはあらかじめ考えておいたほうがいい。最低限必要になるだろう。(ユーザーがアップグレードした日なのか、全ユーザーが每月末、每月初なのか)いつのタイミングで決済するのがベストなのだろうか。代表的な2つの方法を紹介する。ユーザーが10日にアップグレードしたら毎月10日に課金が走るパターン。これはユーザーにとってわかりやすいし、料金の計算も毎月固定額だからイメージしやすい利点がある。側で実行しなければならない。これは例えばメンテナンスをしたいという時もとても慎重になる必要があったり、コードの修正などもリリース前とリリース後でユーザーに不備が出ないように慎重になる必要がある。この方法はよほどプランや料金体系が固定化されていない限り、やがて困難を伴うことになるだろう。私のオススメは月末や月初に企業毎に逐次決済していく方法だ。これであれば、基本的に決済は毎月末だけ集中すれば良いのでメンテナンス的にも気持ち的にもありがたい。決済はできる限りシンプルにさせることでトラブルを防ぐことができる。この方法の問題を挙げるなら、有料にしたその日から月末までの料金をどうするかという話だ。日割り料金を決済させるか、思い切ってそこは無料にするかのどちらかになるだろう。3か月みたいな長めに設定できるサービスであれば、初月は日割りをなくして無料にするという方法がいいかもしれない。トライアルが2週間で切れるようなサービスであれば反対に日割り料金で初月は決済するような流れになるだろう。基本的にはユーザーには先払いの仕組みとなるだろう。ユーザーが料金を支払っていただいたら、その後の1か月もしくは1年使える権利を買ったことにする方法である。従量課金制にした場合にはそのようにはいかない。従量課金制の場合は前月いくら使ったのかを計算して、月末や月初でそれを請求するか、キャッシュフローを考慮してポイントとして購入していただくかどちらかの方法を選ぶことになるだろう。足し合わせた金額を請求する実装にしている。仕組みはできる限り自前で実装した方がいいと思う。