Open2

Stripeのチェックアウト画面に登録済みの支払い方法が表示されない

TohdaTohda

setup_future_usage: 'off_session' を指定してもカードが保存されない。

export const redirectToSampleCheckout = async (
  price: string, // 価格ID
  customer: string, // 顧客アカウントID
) => {
  const session = await stripe.checkout.sessions.create({
    payment_method_types: ['card'],
    payment_intent_data: {
      setup_future_usage: 'off_session',
    },
    customer,
    line_items: [
      {
        price,
        quantity: 1,
      },
    ],
    mode: 'payment',
    success_url: `${process.env.NEXT_PUBLIC_BASE_URL}`,
    cancel_url: `${process.env.NEXT_PUBLIC_BASE_URL}`,
  });

  if (!session.url) return null;

  redirect(session.url);
};
TohdaTohda

Stripeサポートに聞いてみた

  • PaymentMethodの「allow_redisplay」属性が「always」の場合、該当の決済手段がCheckoutセッションに自動入力される。
  • セットアップモードで保存された決済手段は、デフォルトでは保存時に 「allow_redisplay: always」 が設定される。

課題

Checkoutのmode='setup'は「デフォルトの支払い方法」を設定しない

https://qiita.com/hideokamoto/items/453486d61fb425c1d4db

デフォルトの支払いではなくてもOK

デフォルトの設定がされていなくても、チェックアウト画面が表示されたときに既に情報が設定されていた。