見出し画像

銀行振込含めてすべての決済をStripeに完全移行して見えてきた未来の姿

こんにちは。グループウェア Aipo(アイポ)のプロダクトマネージャーをしている岩崎と申します。

AipoへStripeを導入してからおよそ4年、ついにすべての決済をStripeに移行したので、その話をJP_Stripes Advent Calendar 2020の13日目のエントリーとしてお話させていただきます。

Stripeを導入した当時の話

今から4年前の2016年12月にクレカ決済用にStripeを導入しました。その当時の話はこちらのスライドにまとめてあります。

Stripeで銀行振込を実現した話

今から2年前の2018年11月にStripeで擬似的な銀行振込に対応しました。

ちなみにStripe公式の銀行振込はこちらの方法が参考になります。

すべての決済をStripeに完全移行

タイミングを見て銀行振込ユーザーを少しずつStripe管理に移行していたのですが、2年の時を経てついに銀行振込含めてすべての決済をStripeに完全移行しました。

Stripeとの連携方針をアップデート

今までは自分たちのサービスからStripeのAPIを呼ぶことでシームレスにつなぎこんでいました。変化のすくないビジネスモデルであれば一度作りきってしまえばそれでよいのですが、SaaSというビジネスでは新しいプランの追加やプラン体系の変更が発生します。また、トライアル期間の延長やディスカウントなど個別の対応も発生します。あまりに作り込みすぎるとそれらの柔軟な対応がしづらくなってしまうため、疎結合な作りにアップデートしました。

方針1:APIを呼ばない

まず大きな設計方針として自分たちのサービスから極力APIを呼ばないように方針転換しています。

APIのバージョンアップや仕様変更に追随するのが大変というのも理由の一つですが、プランリニューアルなどの施策を最小最速で対応するために開発コストをかけずに済むようにしたい、というのが大きな理由です。

新しいプランを提供するなどのビジネス戦略を取るときにはいち早く市場に投入したいものですが、1つプランを増やしたいだけなのに、APIを呼んでいるところを改修しないといけないのでこれだけの開発期間がかかります、となるとスピードが出せないためオペレーション側で吸収するように方針を変えました。

今はまだAPIを呼んでいる箇所がありますが最終的にはWebhookを受け取って処理する部分だけ残すように抑えていきたいところです。

方針2:Checkoutを活用する

APIを使うのをやめる際に代替手段として役立ったのがCheckoutです。

以前のCheckoutは自サイトでモーダルダイアログが開いてそこでカード情報などを入力する形式でしたが、新しいCheckoutはStripeドメインで別ページが開かれるようになります。そのため、自分たちのサービスへの組み込みを疎結合にすることができます。(callbackを使って決済後に自サイトで追加の処理をさせることも可能です)

Checkoutの設定の仕方についてはこちらが参考になります。

Checkoutを使うことで新規契約申込みの他に新しいクレカ情報の登録を行うこともできます。デフォルトカードの切替には対応していないため、カードを入力してもらった後にStripeダッシュボード上から切り替える必要があります。

Checkout経由でのカード情報はCardsやSourcesではなくPayment Methodsオブジェクトにデータが入ることになるので、その点だけ注意が必要です。

方針2:Customer portalを活用する(まだやってないけど)

まだ実際には導入していませんが、Customer portalを使うことでユーザーが決済履歴を確認できるようになります。

その他にも設定を有効にすることでプラン変更やデフォルトカードの切替にも対応しています。

Customer portalでは次のような感じで請求書の履歴を表示することができます。今までAPIの結果を整形して自前で請求書の履歴を表示させていましたが、それが不要になりそうです。

方針3:請求書、領収書はStripeの仕組みを使う

前出のスライドではStripeの請求書、領収書はいくつかの理由により使わない、という説明をしていましたが、かなり改善されており実際に運用し始めています。

支払いサイクルへの対応

末締め翌月末払い、末締め翌々月10日払いなどができない、としていましたが、定期決済を作るときにざっくりと翌月末に支払期日になるように調整をしています。

具体的には 61日-契約開始日の日付 で算出をしています。
例えば毎月1日が契約更新日の場合、61日-1日で60日後が支払期日に、毎月20日が契約更新日の場合、61日-20日で41日後が支払期日になるようにすることで翌月末日付近になるようにしています。

より正確にするためにはInvoiceが作成されたタイミングでWebhookを受け取って期日を調整すると良いでしょう。

振込先の表記

現在は振込先情報などのテキストを請求書のフッターに記載することができるようになっています。

クレジットカード、銀行振込に関係なくStripeからメールでの請求書、領収書の送付ができるようになり、請求業務をシンプルにすることができました。(一部郵送希望者にはStripeからのメール請求書とともに郵送での対応をしています。)

去年のアドベントカレンダーでは

とStripeのダッシュボードがかなり強化されてきていることを書きましたが、これもコードを書かなくて済むようになったポイントです。

見えてきた未来の姿

デベロッパー・ファーストと呼ばれているStripeですが、APIを使わなくてもできることが増えてきているので、なるべくAPIを呼ばなくて済むように方針を切り替えました。

決済まわりを自分たちで実装しなくて済むようにStripeを使う、というのが最初の姿でしたが、(今でも十分簡単ですが)より簡単に決済システムを組み込めるからStripeを使う、というようになっていくと考えています。

例えばチャットサポートのツールですとJavascriptのコードを埋め込んで、いくつかの顧客情報をパラメータとして仕込んで終了、くらいの導入のお手軽さですが、Stripeも同じようなお手軽さになっていくと予想しています。

この記事が気に入ったらサポートをしてみませんか?