# 支払い後に支払い情報を保存する 対面支払いを受け付け、顧客が不在のときに使用するための支払い情報を保存します。 Stripe Terminal を使用して、店舗購入の支払い情報を保存できます。`card_present` 支払いが成功すると、`generated_card` 属性で再利用可能な `card` の PaymentMethod が返されます。以下はそのユースケースです。 - ジムの顧客が初回セッションと会員制サブスクリプションの支払いを対面で行います。取引により、将来のメンバーシップの自動更新に使用する `generated_card` が設定されます。 - 衣料品店の顧客が、レジで購入するときにメールアドレスを提供します。取引により、顧客レコードと、関連付けられた保存済み `generated_card` が作成されます。これにより、顧客が後でその店のウェブサイトにログインし、同じカードを使用して注文できます。 > 初回の対面決済はカード提示取引です。`generated_card` を使用して行われた後続の支払いはすべてカード非提示 (CNP) 取引であり、カード提示取引で利用できる機能 (*ライアビリティシフト* (With some 3D Secure transactions, the liability for fraudulent chargebacks (stolen or counterfeit cards) shifts from you to the card issuer)や [料金体系](https://stripe.com/terminal#pricing)など) は後続の支払いには適用されません。 > この機能の顧客の同意モデルを変更し、`allow_redisplay` パラメーターを必須にしました。`allow_redisplay` を使用するように実装を更新する必要があります。この更新は、2025 年 3 月 31 日に React Native 以外のユーザーには必須になり、React Native ユーザーには 2025 年 9 月 30 日に必須になりました。ガイダンスについては、[変更ログエントリー](https://docs.stripe.com/changelog/acacia/2024-09-30/terminal-remove-customer-consent-require-allow-redisplay.md)をご覧ください。 # サーバー主導型 > This is a サーバー主導型 for when terminal-sdk-platform is server-driven. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=server-driven. ## 顧客を作成する 将来の支払いに備えてカードを設定するには、カードを *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 オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Customers v1 と Accounts v2 のリファレンスを比較する > > Connect プラットフォームが [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、Stripe の [ガイド](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご確認の上、コード内の `Customer` およびイベント参照を同等の Accounts v2 API リファレンスに置き換えてください。 ```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)ページで見つけることができます。 ## PaymentIntent を作成する - [PaymentIntent を作成する](https://docs.stripe.com/api/payment_intents/create.md) [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) の値を指定して PaymentIntent を作成するときに、`generated_card` をリクエストします。顧客が決済フローで操作を行っているときにのみ決済手段の再利用を許可する場合は、`on_session` を指定します。それ以外の場合は、`off_session` を指定してください。 #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Visa、Mastercard、アメリカン・エキスプレス、Discover、ブランド提携の eftpos、ブランド提携の Interac、ブランド提携の girocard のカードは、タイプ `card` として保存できる `card_present` 決済手段としてサポートされています。 ## 決済手段を収集・処理する > この機能を使用するには、API リクエストに `Stripe-Version: 2024-09-30.acacia` を含める必要があります。ガイダンスについては、[変更ログエントリー](https://docs.stripe.com/changelog/acacia/2024-09-30/terminal-remove-customer-consent-require-allow-redisplay.md)をご覧ください。 - [process_payment_intent](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md) - [collect_payment_method](https://docs.stripe.com/api/terminal/readers/collect_payment_method.md) 顧客が支払う準備ができ、[決済手段の詳細の保存に同意](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance)したら、[allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を `always` または `limited` にして、`process_payment_intent` または `collect_payment_method`(プレビュー版) コールに渡します。値は、顧客の決済フローで決済手段が表示される頻度を示します。 ```curl curl https://api.stripe.com/v1/terminal/readers/{{READER_ID}}/process_payment_intent \ -u "<>:" \ -d payment_intent={{PAYMENT_INTENT_ID}} \ -d "process_config[allow_redisplay]"=always ``` ```curl curl https://api.stripe.com/v1/terminal/readers/{{READER_ID}}/collect_payment_method \ -u "<>:" \ -d payment_intent={{PAYMENT_INTENT_ID}} \ -d "collect_config[allow_redisplay]"=always ``` - [confirm_payment_intent](https://docs.stripe.com/api/terminal/readers/confirm_payment_intent.md) `collect_payment_method` フローを使用すると、PaymentMethod の確定前にカードブランドや資金供給手段などの有用なデータにアクセスできるようになりますが、別途 PaymentIntent の確定を求められます。 ```curl curl https://api.stripe.com/v1/terminal/readers/{{READER_ID}}/confirm_payment_intent \ -u "<>:" \ -d payment_intent={{PAYMENT_INTENT_ID}} ``` ## generated_card にアクセスする 将来の使用に対応できる手段による支払いが成功すると、`requires_capture` または `succeeded` 状態の PaymentIntent が返されます。[generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) の決済手段を取得するには、PaymentIntent の [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) プロパティを展開して、[payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present) を表示します。PaymentIntent 作成コールで顧客 ID を渡した場合、再利用可能な PaymentMethod が [Customer (顧客)](https://docs.stripe.com/api/customers.md) オブジェクトに自動的に関連付けられます。それ以外の場合は、別のコールで[手動で関連付ける](https://docs.stripe.com/api/payment_methods/attach.md)ことができます。 [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) に `generated_card` の値が含まれていることを必ず確認してください。デジタルウォレットによる決済、単独ブランドの Interac、eftpos、girocard によるカード決済などの一部の決済では、生成されたカードが作成されない場合があります。このような状況が発生し、再利用可能な決済手段が必要な場合、次の 2 つのオプションがあります。 - [支払いを受けずに決済手段を保存する](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md)フローを使用して、別の決済手段を保存するように顧客に求めます。 - 対面決済を返金し、取引が失敗したことを示し、顧客に別の決済手段を使用するように指示します。 ## モバイルウォレットに関する考慮事項 保存されたモバイルウォレットは、将来のサブスクリプションや、顧客の代理として開始するその他の支払いなど、[off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) の支払いにのみ使用できます。デジタルウォレットによる決済手段を保存する際、`generated_card` には使用上の特定の考慮事項を示す `allow_redisplay=limited` が設定されます。 モバイルウォレットに支払いを試行する場合は、PaymentIntent の確認時に必ず `off_session=true` を渡してください。顧客が決済フローに存在する場合、[Apple Pay](https://docs.stripe.com/apple-pay.md) と [Google Pay](https://docs.stripe.com/google-pay.md) の組み込みを使用して決済手段の提示を再度求める必要があります。 ## 法令遵守 顧客の支払い詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払い詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がウェブサイトやアプリを使用していないときに請求する、MOTOを注文する、店舗で請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。 決済手段の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、決済フローに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。 - 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意 - 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。 - 決済金額の決定方法。 - サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。 これらの規約に関する顧客の書面による同意の記録を必ず保管してください。 決済手段を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の決済手段を保存して、以降の購入に備えた保存済みの決済手段として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて決済手段を保存する」チェックボックスの使用があります。 # JavaScript > This is a JavaScript for when terminal-sdk-platform is js. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=js. ## 顧客を作成する 将来の支払いに備えてカードを設定するには、カードを *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 オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Customers v1 と Accounts v2 のリファレンスを比較する > > Connect プラットフォームが [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、Stripe の [ガイド](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご確認の上、コード内の `Customer` およびイベント参照を同等の Accounts v2 API リファレンスに置き換えてください。 ```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)ページで見つけることができます。 ## PaymentIntent を作成する - [PaymentIntent を作成する](https://docs.stripe.com/api/payment_intents/create.md) [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) の値を指定して PaymentIntent を作成するときに、`generated_card` をリクエストします。顧客が決済フローで操作を行っているときにのみ決済手段の再利用を許可する場合は、`on_session` を指定します。それ以外の場合は、`off_session` を指定してください。 #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Visa、Mastercard、アメリカン・エキスプレス、Discover、ブランド提携の eftpos、ブランド提携の Interac、ブランド提携の girocard のカードは、タイプ `card` として保存できる `card_present` 決済手段としてサポートされています。 ## 決済手段を収集・処理する - [collectPaymentMethod (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#collect-payment-method) 顧客が支払う準備ができ、[決済手段の詳細の保存に同意](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance)したら、[allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を `always` または `limited` にして、`collectPaymentMethod` コールに渡します。値は、顧客の決済フローで決済手段が表示される頻度を示します。 ```javascript async () => { // clientSecret is the client_secret from the PaymentIntent you created in Step 2. const result = await terminal.collectPaymentMethod(clientSecret, { config_override: { allow_redisplay: "always" } }); if (result.error) { // Placeholder for handling result.error } else { // Placeholder for confirming result.paymentIntent } } ``` ## generated_card にアクセスする 将来の使用に対応できる手段による支払いが成功すると、`requires_capture` または `succeeded` 状態の PaymentIntent が返されます。[generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) の決済手段を取得するには、PaymentIntent の [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) プロパティを展開して、[payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present) を表示します。PaymentIntent 作成コールで顧客 ID を渡した場合、再利用可能な PaymentMethod が [Customer (顧客)](https://docs.stripe.com/api/customers.md) オブジェクトに自動的に関連付けられます。それ以外の場合は、別のコールで[手動で関連付ける](https://docs.stripe.com/api/payment_methods/attach.md)ことができます。 [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) に `generated_card` の値が含まれていることを必ず確認してください。デジタルウォレットによる決済、単独ブランドの Interac、eftpos、girocard によるカード決済などの一部の決済では、生成されたカードが作成されない場合があります。このような状況が発生し、再利用可能な決済手段が必要な場合、次の 2 つのオプションがあります。 - [支払いを受けずに決済手段を保存する](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md)フローを使用して、別の決済手段を保存するように顧客に求めます。 - 対面決済を返金し、取引が失敗したことを示し、顧客に別の決済手段を使用するように指示します。 ## モバイルウォレットに関する考慮事項 保存されたモバイルウォレットは、将来のサブスクリプションや、顧客の代理として開始するその他の支払いなど、[off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) の支払いにのみ使用できます。デジタルウォレットによる決済手段を保存する際、`generated_card` には使用上の特定の考慮事項を示す `allow_redisplay=limited` が設定されます。 モバイルウォレットに支払いを試行する場合は、PaymentIntent の確認時に必ず `off_session=true` を渡してください。顧客が決済フローに存在する場合、[Apple Pay](https://docs.stripe.com/apple-pay.md) と [Google Pay](https://docs.stripe.com/google-pay.md) の組み込みを使用して決済手段の提示を再度求める必要があります。 ## 法令遵守 顧客の支払い詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払い詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がウェブサイトやアプリを使用していないときに請求する、MOTOを注文する、店舗で請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。 決済手段の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、決済フローに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。 - 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意 - 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。 - 決済金額の決定方法。 - サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。 これらの規約に関する顧客の書面による同意の記録を必ず保管してください。 決済手段を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の決済手段を保存して、以降の購入に備えた保存済みの決済手段として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて決済手段を保存する」チェックボックスの使用があります。 # iOS > This is a iOS for when terminal-sdk-platform is ios. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=ios. ## 顧客を作成する 将来の支払いに備えてカードを設定するには、カードを *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 オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Customers v1 と Accounts v2 のリファレンスを比較する > > Connect プラットフォームが [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、Stripe の [ガイド](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご確認の上、コード内の `Customer` およびイベント参照を同等の Accounts v2 API リファレンスに置き換えてください。 ```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)ページで見つけることができます。 ## PaymentIntent を作成する - [PaymentIntent を作成する](https://docs.stripe.com/api/payment_intents/create.md) [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) の値を指定して PaymentIntent を作成するときに、`generated_card` をリクエストします。顧客が決済フローで操作を行っているときにのみ決済手段の再利用を許可する場合は、`on_session` を指定します。それ以外の場合は、`off_session` を指定してください。 #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Visa、Mastercard、アメリカン・エキスプレス、Discover、ブランド提携の eftpos、ブランド提携の Interac、ブランド提携の girocard のカードは、タイプ `card` として保存できる `card_present` 決済手段としてサポートされています。 ## 決済手段を収集・処理する > この機能には、iOS SDK v4.3.0 以降が必要です。 - [collectPaymentMethod (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)collectPaymentMethod:delegate:completion:) 顧客が支払う準備ができ、[決済手段の詳細の保存に同意](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance)したら、[allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を `always` または `limited` にして、`collectPaymentMethod` コールに渡します。値は、顧客の決済フローで決済手段が表示される頻度を示します。 #### Swift ```swift import UIKit import StripeTerminal class PaymentViewController: UIViewController, ReaderDisplayDelegate { // Label for displaying messages from the card reader let readerMessageLabel = UILabel(frame: .zero) var collectCancelable: Cancelable? = nil // ... // Action for a "Subscribe" button func subscribeAction() throws { let params = try PaymentIntentParametersBuilder().setCustomer(""{{CUSTOMER_ID}}"").build() Terminal.shared.createPaymentIntent(params) { createResult, createError in if let error = createError { print("createPaymentIntent failed: \(error)") } else if let paymentIntent = createResult { print("createPaymentIntent succeeded") let config = try CollectConfigBuilder().setAllowRedisplay(AllowRedisplay.always).build() self.collectCancelable = Terminal.shared.collectPaymentMethod(paymentIntent, config) { collectResult, collectError in if let error = collectError { print("collectPaymentMethod failed: \(error)") } else if let collectPaymentMethodPaymentIntent = collectResult { print("collectPaymentMethod succeeded") // ... Confirm the PaymentIntent Terminal.shared.confirmPaymentIntent(collectPaymentMethodPaymentIntent) { confirmResult, confirmError in if let error = confirmError { print("confirmPaymentIntent failed: \(error)") } else if let confirmedPaymentIntent = confirmResult { print("confirmPaymentIntent succeeded") } } } } } } } ``` ## generated_card にアクセスする 将来の使用に対応できる手段による支払いが成功すると、`requires_capture` または `succeeded` 状態の PaymentIntent が返されます。[generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) の決済手段を取得するには、PaymentIntent の [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) プロパティを展開して、[payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present) を表示します。PaymentIntent 作成コールで顧客 ID を渡した場合、再利用可能な PaymentMethod が [Customer (顧客)](https://docs.stripe.com/api/customers.md) オブジェクトに自動的に関連付けられます。それ以外の場合は、別のコールで[手動で関連付ける](https://docs.stripe.com/api/payment_methods/attach.md)ことができます。 [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) に `generated_card` の値が含まれていることを必ず確認してください。デジタルウォレットによる決済、単独ブランドの Interac、eftpos、girocard によるカード決済などの一部の決済では、生成されたカードが作成されない場合があります。このような状況が発生し、再利用可能な決済手段が必要な場合、次の 2 つのオプションがあります。 - [支払いを受けずに決済手段を保存する](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md)フローを使用して、別の決済手段を保存するように顧客に求めます。 - 対面決済を返金し、取引が失敗したことを示し、顧客に別の決済手段を使用するように指示します。 ## モバイルウォレットに関する考慮事項 保存されたモバイルウォレットは、将来のサブスクリプションや、顧客の代理として開始するその他の支払いなど、[off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) の支払いにのみ使用できます。デジタルウォレットによる決済手段を保存する際、`generated_card` には使用上の特定の考慮事項を示す `allow_redisplay=limited` が設定されます。 モバイルウォレットに支払いを試行する場合は、PaymentIntent の確認時に必ず `off_session=true` を渡してください。顧客が決済フローに存在する場合、[Apple Pay](https://docs.stripe.com/apple-pay.md) と [Google Pay](https://docs.stripe.com/google-pay.md) の組み込みを使用して決済手段の提示を再度求める必要があります。 ## 法令遵守 顧客の支払い詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払い詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がウェブサイトやアプリを使用していないときに請求する、MOTOを注文する、店舗で請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。 決済手段の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、決済フローに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。 - 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意 - 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。 - 決済金額の決定方法。 - サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。 これらの規約に関する顧客の書面による同意の記録を必ず保管してください。 決済手段を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の決済手段を保存して、以降の購入に備えた保存済みの決済手段として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて決済手段を保存する」チェックボックスの使用があります。 # Android > This is a Android for when terminal-sdk-platform is android. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=android. ## 顧客を作成する 将来の支払いに備えてカードを設定するには、カードを *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 オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Customers v1 と Accounts v2 のリファレンスを比較する > > Connect プラットフォームが [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、Stripe の [ガイド](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご確認の上、コード内の `Customer` およびイベント参照を同等の Accounts v2 API リファレンスに置き換えてください。 ```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)ページで見つけることができます。 ## PaymentIntent を作成する - [PaymentIntent を作成する](https://docs.stripe.com/api/payment_intents/create.md) [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) の値を指定して PaymentIntent を作成するときに、`generated_card` をリクエストします。顧客が決済フローで操作を行っているときにのみ決済手段の再利用を許可する場合は、`on_session` を指定します。それ以外の場合は、`off_session` を指定してください。 #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Visa、Mastercard、アメリカン・エキスプレス、Discover、ブランド提携の eftpos、ブランド提携の Interac、ブランド提携の girocard のカードは、タイプ `card` として保存できる `card_present` 決済手段としてサポートされています。 ## 決済手段を収集・処理する > この機能には、Android SDK v4.0.0 以降が必要です。 - [collectPaymentMethod (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/collect-payment-method.html) 顧客が支払う準備ができ、[決済手段の詳細の保存に同意](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance)したら、[allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を `always` または `limited` にして、`collectPaymentMethod` コールに渡します。値は、顧客の決済フローで決済手段が表示される頻度を示します。 #### Kotlin ```kotlin val config = CollectPaymentIntentConfiguration.Builder() .setAllowRedisplay(AllowRedisplay.ALWAYS) .build() val cancelable = Terminal.getInstance().collectPaymentMethod( paymentIntent, config, callback = object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` ## generated_card にアクセスする 将来の使用に対応できる手段による支払いが成功すると、`requires_capture` または `succeeded` 状態の PaymentIntent が返されます。[generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) の決済手段を取得するには、PaymentIntent の [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) プロパティを展開して、[payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present) を表示します。PaymentIntent 作成コールで顧客 ID を渡した場合、再利用可能な PaymentMethod が [Customer (顧客)](https://docs.stripe.com/api/customers.md) オブジェクトに自動的に関連付けられます。それ以外の場合は、別のコールで[手動で関連付ける](https://docs.stripe.com/api/payment_methods/attach.md)ことができます。 [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) に `generated_card` の値が含まれていることを必ず確認してください。デジタルウォレットによる決済、単独ブランドの Interac、eftpos、girocard によるカード決済などの一部の決済では、生成されたカードが作成されない場合があります。このような状況が発生し、再利用可能な決済手段が必要な場合、次の 2 つのオプションがあります。 - [支払いを受けずに決済手段を保存する](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md)フローを使用して、別の決済手段を保存するように顧客に求めます。 - 対面決済を返金し、取引が失敗したことを示し、顧客に別の決済手段を使用するように指示します。 ## モバイルウォレットに関する考慮事項 保存されたモバイルウォレットは、将来のサブスクリプションや、顧客の代理として開始するその他の支払いなど、[off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) の支払いにのみ使用できます。デジタルウォレットによる決済手段を保存する際、`generated_card` には使用上の特定の考慮事項を示す `allow_redisplay=limited` が設定されます。 モバイルウォレットに支払いを試行する場合は、PaymentIntent の確認時に必ず `off_session=true` を渡してください。顧客が決済フローに存在する場合、[Apple Pay](https://docs.stripe.com/apple-pay.md) と [Google Pay](https://docs.stripe.com/google-pay.md) の組み込みを使用して決済手段の提示を再度求める必要があります。 ## 法令遵守 顧客の支払い詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払い詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がウェブサイトやアプリを使用していないときに請求する、MOTOを注文する、店舗で請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。 決済手段の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、決済フローに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。 - 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意 - 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。 - 決済金額の決定方法。 - サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。 これらの規約に関する顧客の書面による同意の記録を必ず保管してください。 決済手段を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の決済手段を保存して、以降の購入に備えた保存済みの決済手段として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて決済手段を保存する」チェックボックスの使用があります。 # React Native > This is a React Native for when terminal-sdk-platform is react-native. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=react-native. ## 顧客を作成する 将来の支払いに備えてカードを設定するには、カードを *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 オブジェクトを使用すると、支払い方法を再利用したり、複数の支払いを追跡したりできます。 > #### Customers v1 と Accounts v2 のリファレンスを比較する > > Connect プラットフォームが [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) を使用している場合は、Stripe の [ガイド](https://docs.stripe.com/connect/use-accounts-as-customers.md)をご確認の上、コード内の `Customer` およびイベント参照を同等の Accounts v2 API リファレンスに置き換えてください。 ```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)ページで見つけることができます。 ## PaymentIntent を作成する - [PaymentIntent を作成する](https://docs.stripe.com/api/payment_intents/create.md) [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) の値を指定して PaymentIntent を作成するときに、`generated_card` をリクエストします。顧客が決済フローで操作を行っているときにのみ決済手段の再利用を許可する場合は、`on_session` を指定します。それ以外の場合は、`off_session` を指定してください。 #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Visa、Mastercard、アメリカン・エキスプレス、Discover、ブランド提携の eftpos、ブランド提携の Interac、ブランド提携の girocard のカードは、タイプ `card` として保存できる `card_present` 決済手段としてサポートされています。 ## 決済手段を収集・処理する - [collectPaymentMethod (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#collectpaymentmethod) 顧客が支払う準備ができ、[決済手段の詳細の保存に同意](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance)したら、[allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) を `always` または `limited` にして、`collectPaymentMethod` コールに渡します。値は、顧客の決済フローで決済手段が表示される頻度を示します。 ```js const { paymentIntent, error } = await collectPaymentMethod({ paymentIntent: paymentIntent.id, allowRedisplay: "always", }); if (error) { // Placeholder for handling exception return; } // Placeholder for confirming paymentIntent ``` ## generated_card にアクセスする 将来の使用に対応できる手段による支払いが成功すると、`requires_capture` または `succeeded` 状態の PaymentIntent が返されます。[generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) の決済手段を取得するには、PaymentIntent の [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) プロパティを展開して、[payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present) を表示します。PaymentIntent 作成コールで顧客 ID を渡した場合、再利用可能な PaymentMethod が [Customer (顧客)](https://docs.stripe.com/api/customers.md) オブジェクトに自動的に関連付けられます。それ以外の場合は、別のコールで[手動で関連付ける](https://docs.stripe.com/api/payment_methods/attach.md)ことができます。 [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) に `generated_card` の値が含まれていることを必ず確認してください。デジタルウォレットによる決済、単独ブランドの Interac、eftpos、girocard によるカード決済などの一部の決済では、生成されたカードが作成されない場合があります。このような状況が発生し、再利用可能な決済手段が必要な場合、次の 2 つのオプションがあります。 - [支払いを受けずに決済手段を保存する](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md)フローを使用して、別の決済手段を保存するように顧客に求めます。 - 対面決済を返金し、取引が失敗したことを示し、顧客に別の決済手段を使用するように指示します。 ## モバイルウォレットに関する考慮事項 保存されたモバイルウォレットは、将来のサブスクリプションや、顧客の代理として開始するその他の支払いなど、[off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) の支払いにのみ使用できます。デジタルウォレットによる決済手段を保存する際、`generated_card` には使用上の特定の考慮事項を示す `allow_redisplay=limited` が設定されます。 モバイルウォレットに支払いを試行する場合は、PaymentIntent の確認時に必ず `off_session=true` を渡してください。顧客が決済フローに存在する場合、[Apple Pay](https://docs.stripe.com/apple-pay.md) と [Google Pay](https://docs.stripe.com/google-pay.md) の組み込みを使用して決済手段の提示を再度求める必要があります。 ## 法令遵守 顧客の支払い詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払い詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がウェブサイトやアプリを使用していないときに請求する、MOTOを注文する、店舗で請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。 決済手段の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、決済フローに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。 - 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意 - 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。 - 決済金額の決定方法。 - サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。 これらの規約に関する顧客の書面による同意の記録を必ず保管してください。 決済手段を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の決済手段を保存して、以降の購入に備えた保存済みの決済手段として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて決済手段を保存する」チェックボックスの使用があります。