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

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);
};

Stripeサポートに聞いてみた
- PaymentMethodの「allow_redisplay」属性が「always」の場合、該当の決済手段がCheckoutセッションに自動入力される。
- セットアップモードで保存された決済手段は、デフォルトでは保存時に 「allow_redisplay: always」 が設定される。
課題
Checkoutのmode='setup'は「デフォルトの支払い方法」を設定しない
デフォルトの支払いではなくてもOK
デフォルトの設定がされていなくても、チェックアウト画面が表示されたときに既に情報が設定されていた。