請求せずに直接保存
提示されたカードの詳細を収集して、オンライン利用のために保存します。
SetupIntents を使用して、カードに請求することなくカードまたはモバイルウォレットの詳細を収集できます。SetupIntent で card_
の PaymentMethod を直接保存することはできませんが、ほとんどの場合、同じカードを表す再利用可能な generated_
の PaymentMethod を作成できます。顧客の視点からは、これらは同じ決済手段に捉えられます。
SetupIntents を使用して、Visa、Mastercard、アメリカン・エキスプレス、ディスカバー、および提携ブランドの Interac、eftpos、girocard のカード情報を収集できます。SetupIntents は、単独ブランドである Interac、eftpos、girocard のカードには対応していません。
SetupIntents を使用してStripe Terminal でカードを保存するには、次のようにする必要があります。
- Customer オブジェクトを作成または取得します。
- プロセスを追跡する SetupIntent (支払い方法設定インテント) オブジェクトを作成します。
- 顧客の同意を収集してから、支払い方法を収集します。
- Stripe に支払い方法の詳細を送信します。
注
この機能の顧客の同意モデルを変更し、レガシーの customer_
パラメーターの代わりに allow_
パラメーターを必須にしました。実装で customer_
を使用している場合は、allow_
を使用するように実装を更新する必要があります。この更新は、2025 年 3 月 31 日に React Native 以外のユーザーには必須になり、React Native ユーザーには 2025 年 9 月 30 日に必須になりました。ガイダンスについては、変更ログエントリーをご覧ください。
注
SetupIntents を使用するには、アプリで使っている SDK のバージョンが 2.
であることが必要です。詳細については、移行ガイドをご覧ください。
顧客を作成または取得する
Stripe で保存したカードに請求するには、カードを Customer に関連付ける必要があります。
確定前に、SetupIntent に顧客を含めると、入力した Customer オブジェクトに、生成されたカードの決済手段が自動的に関連付けられます。
以下のコードをサーバーに含めて、新しい Customer
を作成します。
SetupIntent を作成する
注
SetupIntent を作成する際に 顧客 IDを指定すると、セットアップに成功したときに 顧客
にカード決済手段がアタッチされます。顧客 ID を提供しない場合は、別の呼び出しで決済手段をアタッチする必要があります。
SetupIntent は、将来の支払いに備えて顧客の決済手段を設定する意図を示すオブジェクトです。SetupIntent は、この設定プロセスの各ステップを追跡します。Terminal の場合、このプロセスにはカード保有者の同意の収集と記録が含まれます。
SetupIntent を作成して、customer
、onBehalfOf
(Connect の場合のみ)、usage
の各パラメーターを指定できます。
支払いの開始に必要な情報をアプリですぐに利用できない場合、自社のサーバー側で SetupIntent を作成できます。client secret を使用して retrieveSetupIntent
を呼び出してから、取得した SetupIntent を使用して collectSetupIntentPaymentMethod
を呼び出します。
保存するために決済手段を収集する
SetupIntent を作成したら、SDK を使用して決済手段を収集し、顧客の同意を得ます。allowRedisplay を always
または limited
にして、顧客の決済フローで決済手段が表示される頻度を指定します。
注
顧客からの同意を、文書またはアプリケーションのチェックボックスを使用して収集します。ご登録の地域で適用されるすべての法律、規則、および規制に準拠する必要があります。
支払い方法を収集するには、リーダーに接続する必要があります。アプリが collectSetupIntentPaymentMethod
を呼び出した後、接続されたリーダーはカードが提示されるのを待ちます。
この方法では、接続されたカードリーダーを使用して支払い方法の暗号化データを収集し、その暗号化データを SetupIntent に関連付けます。
注意
支払い方法の収集はローカルで行われ、次のステップまで SetupIntent オブジェクトのオーソリや更新は必要ありません。
収集をキャンセルする
プログラムによるキャンセル
SDK から返される Cancelable オブジェクトを使用して、決済手段の収集をキャンセルできます。
顧客によるキャンセル
取引の setEnableCustomerCancellation を true に設定すると、スマートリーダーの画面にキャンセルボタンが表示されます。キャンセルボタンをタップすると、現在の取引がキャンセルされます。
Stripe に決済手段の詳細を送信する
confirmSetupIntent
を使用して、設定を完了させます。
設定が成功すると、SetupIntent の status プロパティの succeeded
値が SetupAttempt.payment_method_details.card_present.generated_card とともに返されます。これは、オンライン決済に利用できる再利用可能な card
の決済手段です。
注
SetupIntent.payment_method は、物理的に存在するカードのトークン化を表す card_
PaymentMethod であり、オンラインでは請求できません。今後の支払いでは、代わりに生成されたカードが使用されます。顧客側から見ると、同じ決済手段です。
generated_
の決済手段が、SetupIntent の作成時に指定した顧客に自動的に関連付けられます。SetupIntent の latest_
プロパティを展開することで、generated_
の決済手段を取得できます。必ず generated_
の値を確認してください。生成されたカードを使用できない決済手段では、この値が空になるためです。
別の方法として、顧客に関連付けられている支払い方法のリストを取得することで、関連付けられた支払い方法を入手することもできます。
SetupIntent の作成時に顧客を指定しなかった場合は、別個のコールで generated_
を Customer オブジェクトに関連付けることができます。
設定に失敗したら、返されたエラーを調べて原因を特定します。たとえば、顧客から同意を収集できなかったり、Stripe に顧客の同意を通知できなったりした場合、エラーが発生します。
モバイルウォレットに関する考慮事項
保存されたモバイルウォレットは、将来のサブスクリプションや、顧客の代理として開始するその他の支払いなど、off_session の支払いにのみ使用できます。デジタルウォレットによる決済手段を保存する際、generated_
には使用上の特定の考慮事項を示す allow_
が設定されます。
モバイルウォレットに請求する際は、PaymentIntent の確定時に必ず off_
を渡します。顧客が決済フローを実施している場合は、代わりに Apple Pay と Google Pay の連携を使用して、決済手段の提示を再度求めます。
法令遵守
顧客の支払いの詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払いの詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がお客様のウェブサイトやアプリを使用していないときに請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。
支払い方法の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、ウェブサイトおよびアプリに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。
- 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意
- 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。
- 決済金額の決定方法。
- サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。
これらの規約に関する顧客の書面による同意の記録を必ず保管してください。
支払い方法を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の支払い方法を保存して、以降の購入に備えた保存済みの支払方法として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて支払い方法を保存する」チェックボックスの使用があります。