ISSUEでStripe connectで銀行振込を実装しました
2022年10月01日 8:41
こんにちはISSUEの寒河江です。
ISSUEにStripe connectを利用した銀行振込を実装しました。ただ、Stripeの銀行振込は2022年4月にリリースされたばかりということもあり、実装例がほとんどなく実装には苦労しました。ISSUEでの実装例を参考に詰まったところなど皆さんの参考になれば幸いです。
ISSUEはエンジニアと企業とのマッチングプラットフォームです。また、単発のタスクだけではなく継続の依頼もあるので、エンジニアの報酬は数十万/月規模の決済になります。そのような状況から下記の問題が発生していました。
以上をふまえて、銀行振込の実装に踏み切りました。
【プラットフォームの登場人物と役割】
Stripeでは銀行振込用の口座としてcustomerごとに、バーチャル口座が作成されます。決済時はこのバーチャル口座に振込むとconnectアカウントに送金されます。
ISSUEでは請求下記のようなフローで作成しています。
①エンジニアが稼働分の請求する
②①が問題なければ承認する
この処理ではStripe側にデータの作成はされません。プラットフォームによっては仮売り上げする場合もあるかとは思いますが、弊社では実売り上げのタイミングと時間が空くことも少なくないので実装しませんでした。
この時、Stripe側にpaymet_intentデータが作成されます。payment_intentや基本的なフィールドの内容は別の記事でも解説しているので省略しています。
重要なのは後半のpayment_method_types
からpayment_method_options
までのパラメータになります。このパラメータをpayment_intent作成時にセットすることで銀行振込決済の処理に切り替わります。
企業(支払い側)のStripeアカウントの残高に、支払いに対する残高が不足していた場合はレスポンスのpayment_intent.next_action
の中に 値が入ります。next_action中にはdisplay_bank_transfer_instructions
という振込先の口座情報がセットされます。この振込先口座情報
を支払い失敗時にクライアントに表示したり、メール送信をして振込を促すようにしましょう。
不足残高はnextAction["display_bank_transfer_instructions"].amount_remaining
にセットされています。
銀行振込を支払い方法に設定している際は、口座残高や振込先を常に把握できるようにしておくと安心です。
振込口座取得用のコードサンプルです。
ISSUEでは下記のように表示しています。
customerに紐づいた現在の口座残高を取得するサンプルコードです。
簡単ですが、以上が銀行振込の実装方法の説明になります。
クレカ決済と違い、決済を行うたびに口座情報を見に行かなければならない、銀行振込の自動化があまり浸透していないのでクライアントにキャッチアップコストがかかるなどの問題があります。UX・UIの改善をしていき、快適な請求体験を提供できればと思います。
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。
目次を見る