# 支払い中に支払い詳細を保存する 支払いを受け付け、将来の購入に備えて顧客の支払い詳細を保存する方法をご紹介します。 # ホスト型ページ > This is a ホスト型ページ for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=stripe-hosted. [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) を使用すると、ローコードでの素早い実装が可能であり、顧客は将来の購入に備えて支払いの詳細を保存できるようになります。 ## Stripe を設定する [サーバー側] まず、Stripe アカウントを[登録](https://dashboard.stripe.com/register)します。 アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。 #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## 顧客を作成する [サーバー側] 将来の支払いに備えてカードを設定するには、カードを *Customer (顧客)* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) に関連付ける必要があります。顧客がビジネスでアカウントを作成する際に、Customer オブジェクトを作成します。Customer オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Use the Accounts v2 API to represent customers > > If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` 作成に成功すると、[Customer](https://docs.stripe.com/api/customers/object.md) オブジェクトが返されます。オブジェクトで顧客の `id` を調べて、その値を後で取得できるようにデータベースに保存できます。 これらの顧客は、ダッシュボードの[顧客](https://dashboard.stripe.com/customers)ページで見つけることができます。 ## Checkout セッションを作成する [クライアント側] [サーバー側] ウェブサイトにサーバー側のエンドポイントを呼び出す決済ボタンを追加して [Checkout セッション](https://docs.stripe.com/api/checkout/sessions/create.md)を作成します。 [既存の顧客](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted)の Checkout セッションを作成することもできます。これにより、Checkout フィールドに既知の連絡先情報を事前入力して、その顧客の購入履歴を統合することができます。 ```html Buy cool new product
``` Checkout セッションは、顧客が支払いフォームにリダイレクトされた際に表示される内容をプログラムで示したものです。以下のようなオプションを使用して設定できます。 - 請求する[ラインアイテム](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) - 使用する通貨 `success_url`。お客様のウェブサイト上にあり、決済完了後に顧客が戻されるページの URL 値です。 > デフォルトでは、Checkout セッションは作成後 24 時間で期限切れとなります。 Checkout セッションを作成したら、レスポンスで返された [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) に顧客をリダイレクトします。 #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' post '/create-checkout-session' dosession = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', }) redirect session.url, 303 end ``` ### 決済手段 デフォルトでは、カードとその他の一般的な決済手段が有効になっています。[Stripe ダッシュボード](https://dashboard.stripe.com/settings/payment_methods)で個々の決済手段をオンまたはオフにできます。Checkout では、Stripe は通貨と制限事項を評価して、対応している決済手段を顧客に動的に提示します。 決済手段が顧客にどのように表示されるか確認するには、ダッシュボードで取引 ID を入力するか、または注文金額と通貨を設定します。 [決済手段の設定](https://dashboard.stripe.com/settings/payment_methods)では Apple Pay と Google Pay を有効にすることができます。デフォルトでは、Apple Pay は有効で、Google Pay は無効になっています。ただし、有効になっていても Stripe が除外する場合があります。配送先住所を収集せずに[税金の自動計算を有効にした](https://docs.stripe.com/tax/checkout.md)場合、Google Pay は除外されます。 Checkout の Stripe 上のオンラインページでは、Apple Pay や Google Pay を有効にするために実装内容を変更する必要はありません。Stripe は、これらの決済を他のカード決済と同じように処理します。 ### エンドポイントを確認する ウェブサーバー (`localhost:4242` など) を起動し、次のコマンドを実行して、エンドポイントがアクセス可能であることを確認します。 ```bash curl -X POST -is "http://localhost:4242/create-checkout-session" -d "" ``` 端末に次のようなレスポンスが表示されます。 ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### 導入の確認 これで、顧客を Stripe Checkout にリダイレクトする決済ボタンが使用できるようになりました。 1. 決済ボタンをクリックします。 1. Stripe Checkout 支払いフォームにリダイレクトされます。 構築したシステムが機能しない場合: 1. ブラウザの開発者ツールでネットワークタブを開きます。 1. 決済ボタンをクリックし、サーバー側エンドポイント (`POST /create-checkout-session`) に XHR リクエストが送信されたことを確認します。 1. リクエストが 200 ステータスを返すことを確認します。 1. ボタンクリックリスナー内で `console.log(session)` を使用し、正しいデータが返されたことを確認します。 オンラインで提供される Checkout システムの設定とテストについて詳しくは、[決済を受け付ける](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form)をご覧ください。 ## 支払い方法を保存する [サーバー側] オンラインで提供される Checkout システムを設定した後、顧客が使用する支払い方法を保存するために、システムの設定を選択します。 デフォルトでは、Checkout で 1 回限りの支払いに使用した支払い方法を将来の支払いに使用することはできません。 ### 支払い方法を保存し、オフセッションでその支払い方法に請求する [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) 引数を渡すことで、1 回限りの支払いに使用した支払い方法を保存するように Checkout を設定できます。これは、キャンセル手数料やノーショー手数料などの将来の手数料に使用するために、登録済みの決済手段を取得しなければならない場合に便利です。 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` `サブスクリプション`モードで Checkout を使用すると、Stripe は決済手段を自動的に保存し、次回以降の決済にはその決済手段で請求します。`setup_future_usage` または`サブスクリプション`モードのいずれかで顧客に保存されたカード決済手段は、決済のやり直しの際に Checkout には表示されません (以下を参照)。保存済みの決済情報の使用に関する規約へのリンクには、[カスタムテキスト](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text)を使用することをお勧めします。 > 世界の個人情報保護法は複雑かつ曖昧です。[setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) の実装は既存の個人情報の規制に関わる可能性があるため、事前に法務チームや個人情報担当チームに問い合わせることをお勧めします。支払いの詳細を保存することについては、[欧州データ保護委員会から発行されたガイダンス](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf)をご覧ください。 ### 支払い方法を保存し、Checkout でその支払い方法を事前入力する By default, Checkout uses [Link](https://docs.stripe.com/payments/link/checkout-link.md) to provide your customers with the option to securely save and reuse their payment information. If you prefer to manage payment methods yourself, use [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) when creating a Checkout Session to let your customers save their payment methods for future purchases in Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` このパラメーターを [payment](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) モードまたは [subscription](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) モードで渡すと、今後の購入に備えて顧客が支払い方法を明示的に保存できるようにするためのオプションのチェックボックスが表示されます。顧客がこのチェックボックスをオンにすると、Checkout は [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を指定して支払い方法を保存します。Checkout はこのパラメーターを使用して、今後の購入で支払い方法を事前入力できるかどうかを判断します。`saved_payment_method_options.payment_method_save` を使用する場合、支払い方法を保存するために `setup_future_usage` を渡す必要はありません。 If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](https://docs.stripe.com/connect/use-accounts-as-customers.md). [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) を使用するには `Customer` が必要です。新しい顧客を保存するには、Checkout セッションの [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) を `always` に設定します。それ以外の場合、セッションで顧客や決済手段は保存されません。 `payment_method_save` が渡されていない場合、または顧客が支払い方法の保存に同意しない場合でも、Checkout は、`subscription` モードで作成された支払い方法または `setup_future_usage` を使用して作成された支払い方法を保存します。これらの決済手段の `allow_redisplay` 値は `limited` であるため、購入の返品に備えてこれらの決済手段が事前入力されることがなくなり、カードネットワークの規則およびデータ保護規制に準拠できます。[これらのモードによって有効になるデフォルトの動作を変更する](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout)方法と、`allow_redisplay` の動作を変更または上書きする方法をご紹介します。 > Checkout を使用してカードやその他の決済手段を保存してオフセッションに請求することはできますが、Checkout では保存したカードのみが事前入力されます。[保存したカード情報を事前入力する](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout)方法をご紹介します。初回の支払いなしで決済手段を保存するには、[Checkout の設定モードを使用](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout)します。 ### 保存した決済手段を顧客が削除できるようにする 今後の支払いで再表示されないように、保存された決済手段を顧客が削除できるようにするには、Checkout セッションの作成時に [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) を使用します。 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` 有効なサブスクリプションに関連付けられていて、請求書やサブスクリプションの支払い用にデフォルトの決済手段が保存されていない場合、顧客は決済手段を削除できません。 # 埋め込み型ページ > This is a 埋め込み型ページ for when payment-ui is embedded-form. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=embedded-form. [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) を使用すると、構築済みの決済フォームをウェブサイトに埋め込み、顧客が詳細の購入に備えて支払いの詳細を保存できるようにすることができます。 ## Stripe を設定する [サーバー側] まず、Stripe アカウントを[登録](https://dashboard.stripe.com/register)します。 アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。 #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## 顧客を作成する [サーバー側] 将来の支払いに備えてカードを設定するには、カードを *Customer (顧客)* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) に関連付ける必要があります。顧客がビジネスでアカウントを作成する際に、Customer オブジェクトを作成します。Customer オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Use the Accounts v2 API to represent customers > > If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` 作成に成功すると、[Customer](https://docs.stripe.com/api/customers/object.md) オブジェクトが返されます。オブジェクトで顧客の `id` を調べて、その値を後で取得できるようにデータベースに保存できます。 これらの顧客は、ダッシュボードの[顧客](https://dashboard.stripe.com/customers)ページで見つけることができます。 ## Checkout セッションを作成する [サーバー側] サーバーから、*Checkout Session* (A Checkout Session represents your customer's session as they pay for one-time purchases or subscriptions through Checkout. After a successful payment, the Checkout Session contains a reference to the Customer, and either the successful PaymentIntent or an active Subscription) を作成し、[ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) を `embedded_page` に設定します。[Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md) には、含める[ラインアイテム](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items)や [通貨](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency)などのオプションを設定できます。 [既存の顧客](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted)の Checkout セッションを作成することもできます。これにより、Checkout フィールドに既知の連絡先情報を事前入力して、その顧客の購入履歴を統合することができます。 自社サイトでホストされているカスタムページに顧客を戻すには、そのページの URL を [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url) パラメーターに指定します。URL にテンプレート変数 `{CHECKOUT_SESSION_ID}` を含めて、戻り先ページでセッションのステータスを取得します。Checkout では、リダイレクト前にこの変数が Checkout セッション ID に自動的に置き換えられます。 [戻り先ページの設定](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page)と、[リダイレクト動作をカスタマイズ](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form)するためのその他のオプションについて、詳細をご覧ください。 Checkout セッションの作成後、レスポンスで返される `client_secret` を使用して、[Checkout をマウント](https://docs.stripe.com/payments/checkout/save-during-payment.md#mount-checkout)します。 #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' post '/create-checkout-session' do session = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment',ui_mode: 'embedded_page', return_url: 'https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}' }) {clientSecret: session.client_secret}.to_json end ``` ## Checkout をマウントする [クライアント側] [サーバー側] #### HTML + JS Checkout は [Stripe.js](https://docs.stripe.com/js.md) の一部として利用できます。HTML ファイルのヘッダーに Stripe.js スクリプトを追加してページに含めます。次に、マウンティングに使用する空の DOM ノード (コンテナー) を作成します。 ```html
``` 公開可能な API キーで Stripe.js を初期化します。 Checkout セッションの作成、および client secret の取得をサーバーにリクエストする、非同期の `fetchClientSecret` 関数を作成します。 Checkout インスタンスを作成する際に、この関数を `options` に渡します。 ```javascript // Initialize Stripe.js const stripe = Stripe('<>'); initialize(); // Fetch Checkout Session and retrieve the client secret async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Initialize Checkout const checkout = await stripe.createEmbeddedCheckoutPage({ fetchClientSecret, }); // Mount Checkout checkout.mount('#checkout'); } ``` #### React npm から [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) と Stripe.js ローダーをインストールします。 ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` 埋め込みの Checkout コンポーネントを使用するには、`EmbeddedCheckoutProvider` を作成します。公開可能 API キーを使用して `loadStripe` を呼び出し、返された `Promise` をプロバイダーに渡します。 Checkout セッションの作成、および client secret の取得をサーバーにリクエストする、非同期の `fetchClientSecret` 関数を作成します。この関数をプロバイダーで受け入れられる `options` プロパティに渡します。 ```jsx import * as React from 'react'; import {loadStripe} from '@stripe/stripe-js'; import { EmbeddedCheckoutProvider, EmbeddedCheckout } from '@stripe/react-stripe-js'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('pk_test_123'); const App = () => { const fetchClientSecret = React.useCallback(() => { // Create a Checkout Session return fetch("/create-checkout-session", { method: "POST", }) .then((res) => res.json()) .then((data) => data.clientSecret); }, []); const options = {fetchClientSecret}; return (
) } ``` Checkout は、HTTPS 接続を介して支払い情報をStripeに安全に送信する iframe でレンダリングされます。 > 一部の支払い方法では、別のページにリダイレクトして支払いを確定する必要があるため、Checkout は別の iframe 内に配置しないでください。 ## 支払い方法を保存する [サーバー側] 埋め込み型の Checkout システムを設定した後、顧客が使用する支払い方法を保存するために、システムの設定を選択します。 デフォルトでは、Checkout で 1 回限りの支払いに使用した支払い方法を将来の支払いに使用することはできません。 ### 支払い方法を保存し、オフセッションでその支払い方法に請求する [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) 引数を渡すことで、1 回限りの支払いに使用した支払い方法を保存するように Checkout を設定できます。これは、キャンセル手数料やノーショー手数料などの将来の手数料に使用するために、登録済みの決済手段を取得しなければならない場合に便利です。 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` `サブスクリプション`モードで Checkout を使用すると、Stripe は決済手段を自動的に保存し、次回以降の決済にはその決済手段で請求します。`setup_future_usage` または`サブスクリプション`モードのいずれかで顧客に保存されたカード決済手段は、決済のやり直しの際に Checkout には表示されません (以下を参照)。保存済みの決済情報の使用に関する規約へのリンクには、[カスタムテキスト](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text)を使用することをお勧めします。 > 世界の個人情報保護法は複雑かつ曖昧です。[setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) の実装は既存の個人情報の規制に関わる可能性があるため、事前に法務チームや個人情報担当チームに問い合わせることをお勧めします。支払いの詳細を保存することについては、[欧州データ保護委員会から発行されたガイダンス](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf)をご覧ください。 ### 支払い方法を保存し、Checkout でその支払い方法を事前入力する By default, Checkout uses [Link](https://docs.stripe.com/payments/link/checkout-link.md) to provide your customers with the option to securely save and reuse their payment information. If you prefer to manage payment methods yourself, use [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) when creating a Checkout Session to let your customers save their payment methods for future purchases in Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` このパラメーターを [payment](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) モードまたは [subscription](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) モードで渡すと、今後の購入に備えて顧客が支払い方法を明示的に保存できるようにするためのオプションのチェックボックスが表示されます。顧客がこのチェックボックスをオンにすると、Checkout は [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を指定して支払い方法を保存します。Checkout はこのパラメーターを使用して、今後の購入で支払い方法を事前入力できるかどうかを判断します。`saved_payment_method_options.payment_method_save` を使用する場合、支払い方法を保存するために `setup_future_usage` を渡す必要はありません。 If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](https://docs.stripe.com/connect/use-accounts-as-customers.md). [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) を使用するには `Customer` が必要です。新しい顧客を保存するには、Checkout セッションの [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) を `always` に設定します。それ以外の場合、セッションで顧客や決済手段は保存されません。 `payment_method_save` が渡されていない場合、または顧客が支払い方法の保存に同意しない場合でも、Checkout は、`subscription` モードで作成された支払い方法または `setup_future_usage` を使用して作成された支払い方法を保存します。これらの決済手段の `allow_redisplay` 値は `limited` であるため、購入の返品に備えてこれらの決済手段が事前入力されることがなくなり、カードネットワークの規則およびデータ保護規制に準拠できます。[これらのモードによって有効になるデフォルトの動作を変更する](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout)方法と、`allow_redisplay` の動作を変更または上書きする方法をご紹介します。 > Checkout を使用してカードやその他の決済手段を保存してオフセッションに請求することはできますが、Checkout では保存したカードのみが事前入力されます。[保存したカード情報を事前入力する](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout)方法をご紹介します。初回の支払いなしで決済手段を保存するには、[Checkout の設定モードを使用](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout)します。 ### 保存した決済手段を顧客が削除できるようにする 今後の支払いで再表示されないように、保存された決済手段を顧客が削除できるようにするには、Checkout セッションの作成時に [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) を使用します。 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` 有効なサブスクリプションに関連付けられていて、請求書やサブスクリプションの支払い用にデフォルトの決済手段が保存されていない場合、顧客は決済手段を削除できません。