再決済するようにすれば良い。保存しておくということになる。クレジットカード起因で決済に失敗した場合、対象ユーザーへカード変更の依頼を促すメールを送る実装をすれば、毎月の決済フローをほぼ自動化できる。そのユーザーをどうするかってのはサービス次第で決めよう。経験上、3回リトライの仕組みを実装すれば、少なくとも2回目でほぼ全ユーザーの決済は成功する。3回目でも失敗する場合は明らかにその企業が退会を決意したくらいしか起き得ない。サービス側に任せるかを検討したい。(テストは大変だが)。多少の手間をかけて、今後のサービスの料金体系変更に強くさせるのは良いことだと私は考えている。仕組みと同じものを作れる。仕組みを使うべきはどんな時か。これは私の思うことに過ぎないけども、今後のサービスにおいてプラン変更や料金変更がほとんどなく確定されたものであり、かつその決済サービスが(どこかの決済サービスとは違って)残り続けるという確証が持てる場合は選択しても良いだろう。その条件を飲み込めば、月額課金の仕組みをとても素早く構築に、そして確実に実装できる利点が手に入れられる。年額決済のサポートなども決済サービスによっては対応しているところもあり、これらの仕組みをささっと導入できる魅力は大きい。自前で月額と年額をそれぞれ実装するのはなかなか大変だ。両者どちらもトレードオフがあるので、最終的に決めるのは開発者自身である。終わりに月額決済の仕組みはしっかりと設計する能力が求められる。ビジネス的なキャッシュフロー、そしてそれに伴う決済のタイミングや料金の計算方法。どれも念入りにあらゆるパターンを考慮した上で実装していこう。最近は各クレジットカード決済会社がテスト環境と本番環境を完全に分離して開発及びテストをしやすくさせてくれている。そのため入念にテストをすれば、自信を持ってユーザーに決済サービスを提供できることだろう。これから月額課金モデルのサービスを作る方に有意義になれば幸いだ。