やること
- stripeで継続課金
- クレジットカードの情報を編集したい
- でもクレジットカードの情報をやりとりしたり安全なフォーム作るの面倒
- カスタマーポータルでstripeに丸投げしよう
カスタマーポータルの良さ
stripeで継続課金を実装しているとクレジットカード情報の変更を考えないといけない。このやり取りを自分で実装するのもいいが
- クレジットカード情報なので安全なフォームにしないといけない
- 普通にフォーム作るの面倒
だったりするがカスタマーポータルならStripe::BillingPortal::Session.create
でurlを作ってそこに飛ばせばいいし、編集できる項目などをいじりたい場合は管理画面からボタン一つで変更できる。
実装
全体の流れは下記だけ
- 管理画面でカスタマーポータルの設定
- buttonからpost
-
Stripe::BillingPortal::Session.create
でurl作成 - urlをredirect
buttonからpost
<form method="POST" action="/create_customer_portal_session">
<button type="submit">クレジットカード情報確認・編集</button>
</form>
Stripe::BillingPortal::Session.create
でurl作成
routesを作成
post "/create_customer_portal_session" => "users#create_customer_portal_session"
def create_customer_portal_session
session = Stripe::BillingPortal::Session.create({
customer: current_user.stripe_customer_id,
return_url: root_url(only_path: false) + '',
})
redirect_to session.url
end
customerにはcustomer_idを
注意
csrf対策でやり取りできない場合はこのメゾッドだけスキップするなど対策する