🦄

Stripe Checkoutのsaved_pa​​yment_method_optionsについて

2024/04/30に公開

はじめに

株式会社ウェイブCoolmicのエンジニアをしている布施です。
Coolmicは日本のコミックを海外向けに配信するWEBサービスです。

CoolmicではStripeを利用してクレジットカード、Apple Pay、Google Payの決済を実装しています。
今回はStripe Checkoutの仕様変更に対応したことについて書きたいと思います。

サンプルコードは全てRuby(Rails)です。

仕様変更の内容

  • subscriptionモードの場合、あるいはpaymentモードでpayment_intent_data.setup_future_usageを設定した場合に
    Checkoutで使用されたPaymentMethodはallow_redisplay: limitedとして保存される
  • allow_redisplay: limitedのPaymentMethodは、デフォルトでは次回は自動入力されない

詳細はこちら

対応方法

  • saved_pa​​yment_method_options.payment_method_saveを設定することにより、
    ユーザーはPaymentMethodを保存するかどうかをチェックボックスで選択することができるようになる
  • PaymentMethodはallow_redisplay: alwaysとして保存され、次回は自動入力される
  • saved_payment_method_options.allow_redisplay_filtersunspecifiedlimitedを含めることにより、Stripeの変更以前に保存されたPaymentMethodも自動入力されるようにすることができる

こんな感じで書きました。参考

session = Stripe::Checkout::Session.create(
  {
    # 省略
    mode: "payment",
    saved_payment_method_options: {
      allow_redisplay_filters: %w[always limited unspecified],
      payment_method_save: "enabled",
    },
  }
)
redirect_to session.url, allow_other_host: true

画面イメージ

おまけ

  • saved_pa​​yment_method_options.payment_method_saveを使用するとき、Apple Payを有効にしている場合はCheckoutにApple Payボタンが表示される
    payment_intent_data.setup_future_usageを設定している場合はApple Payボタンは表示されない)

https://zenn.dev/wwwave/articles/689b26da6132b2
で書いていたやりたかったことが実現できるようになりました。
Stripe最高

最後に

今回のStripeの仕様変更により、当初やりたかったUIの実装ができるようになってとても助かりました。
Stripe最高

宣伝

株式会社ウェイブでは、電子コミックやアニメの配信サービスなどを自社開発で運営しております。
新しい技術を積極的に取り入れたモダンな環境が整っているウェイブで一緒に働いてみませんか?
興味ある方は是非こちらをご覧ください!

https://recruit.wwwave.jp/

wwwave's Techblog

Discussion