Stripeで銀行振込のサブスクリプションを実装する際の注意点
参照記事
結局のところ
銀行振込でサブスクリプションを始めるのは、様々な状況を想定した上で実装する必要がある
銀行振込のサブスクを申し込みを受け付けるときに利用できないstripeの機能
1, 支払いリンクによる申し込み受付 (ダッシュボードから3回くらいクリックするとできるやつ)
2, クリエイトセッションでの受付 (checkout->sessions->create でできるやつ)
どちらのUIも綺麗で、実装の手間も少ないものですが、どちらも銀行振込のサブスクでは現時点では利用できません。
そのため他の方法で申し込みを受け付ける必要が発生します。
*クリエイトセッションの場合、1回払い (mode=payment)の場合は利用できます。
参考記事
サブスクリプションで銀行振込を開始する場合
1, サブスクリプションを作成する
$stripe->subscriptions->create
2, 作成したサブスクリプションからインボイスが作成されるので、インボイスをファイナライズする(メールも送信されます)
$useInvoice = $stripe->invoices->finalizeInvoice('in_')
3, ファイナライズしたインボイスから、支払い情報が表示できるURLが取得できるので、該当ページに遷移する
header("Location: " . $useInvoice->hosted_invoice_url)
もしくは、支払い情報を取得してオリジナルのページを作成する
$stripe->customers->createFundingInstructions('cus_',[])
この時点で作成したサブスクリプションは有効、インボイスはオープンのステータスです
webhookでインボイスのステータス管理を行う
下記については、webhookで各種準備する必要がありそうなものです。
1回目の請求書
1-1, 入金された場合、サービスを提供できるようにする (申込段階では未払いのため)
1-2, 未入金のままの場合は、サブスクリプションのステータスを無効化にする
1-3, 過払いの場合は、スタッフによるフォローが行えるようにする
2回目以降の請求書
2-1, 請求書が送信された後に、未入金の場合は、催促のメールを送信するようにする
2-2, それでも未入金の場合は、サブスクリプションのステータスを無効化する
2-3, 過払いがあった場合は、スタッフによるフォローが行えるようにする
銀行振込のサブスクを一言で実装すると言っても、顧客側がアクションを起こして支払いをおこなうため、
様々なことを考慮する必要があります。
手動の銀行振込と比べて、入金管理がなくなる分、考えなければならないシチュエーションも多いなぁ!!
ちなみに、、
振込手数料を気にされるお客様から、まとめて多めに支払うたいという要望も上がりそうですが (過払い)、stripeの残高として保持できる期間(日本では 60 日間)が決まっています。
そのため、月額1万円のサービスを提供したときに、まとめて5ヶ月分 (5万円) 一括で払うよ!ってなっても、時期が来たらstripeから返金手続きが始まります。
別途、年払いや半年払いのサービスを準備する必要がありそうです。