請求せずに直接保存
提示されたカードの詳細を収集して、オンライン利用のために保存します。
SetupIntents を使用して、カードに請求することなくカードまたはモバイルウォレットの詳細を収集できます。SetupIntent で card_ の PaymentMethod を直接保存することはできませんが、ほとんどの場合、同じカードを表す再利用可能な generated_ の PaymentMethod を作成できます。顧客の視点からは、これらは同じ決済手段に捉えられます。
警告
generated_ PaymentMethod を使用して行われた支払いはすべて、カード非提示 (CNP) 取引であり、カード提示取引で利用できる機能 (ライアビリティシフトや 料金体系など) はこれらの支払いには適用されません。
SetupIntents を使用して、Visa、Mastercard、American Express、Discover、およびブランド提携している Interac、eftpos、girocard のカード詳細を収集することができます。ただし、ブランド提携している Interac カードはリーダーに挿入する必要があります。つまり、タッチ決済ではサポートされていません。
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 API は、BBPOS WisePOS E および Stripe リーダー S700 と互換性があります。
顧客を作成または取得する
Stripe で保存したカードに請求するには、カードを Customer に関連付ける必要があります。
確定前に、SetupIntent に顧客を含めると、入力した Customer オブジェクトに、生成されたカードの決済手段が自動的に関連付けられます。
以下のコードをサーバーに含めて、新しい Customer を作成します。
SetupIntent を作成する
メモ
SetupIntent を作成する際に顧客 ID を指定すると、セットアップに成功したときに Customer にカード決済手段がアタッチされます。顧客 ID を提供しない場合は、別の呼び出しで決済手段をアタッチする必要があります。
SetupIntent は、将来の支払いに備えて顧客の決済手段を設定する意図を示すオブジェクトです。SetupIntent は、この設定プロセスの各ステップを追跡します。Terminal の場合、このプロセスにはカード保有者の同意の収集と記録が含まれます。
サーバーで SetupIntent を作成し、payment_ パラメーターに card_ を含める必要があります。顧客が決済フローにいる場合にのみ決済手段を再利用する場合は、usage=on_ を指定します。
保存するために決済手段を収集する
SetupIntent を作成したら、決済手段を収集し、顧客の同意を得ます。allow_redisplay を always または limited にして、顧客の決済フローで決済手段が表示される頻度を指定します。
メモ
顧客からの同意を、文書またはアプリケーションのチェックボックスを使用して収集します。ご登録の地域で適用されるすべての法律、規則、および規制に準拠する必要があります。
SetupIntent の収集と確認の両方を処理する process_setup_intent エンドポイントを呼び出す必要があります。顧客が同意した場合は、allow_ を always または limited に設定します。
この方法では、接続されたカードリーダーを使用して支払い方法の暗号化データを収集し、その暗号化データを SetupIntent に関連付けます。
注意
支払い方法の収集はローカルで行われ、次のステップまで SetupIntent オブジェクトのオーソリや更新は必要ありません。
収集をキャンセルする
プログラムによるキャンセル
cancel_action を呼び出すことで、決済手段の収集をキャンセルできます。
Stripe に決済手段の詳細を送信する
前回の process_setup_intent の呼び出しは、 確定 を処理するため、それ以上のアクションは必要ありません。
設定が成功すると、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 の連携を使用して、決済手段の提示を再度求めます。
法令遵守
顧客の支払い詳細を保存する際、適用されるすべての法律、規制、ネットワークの規則に準拠する責任はお客様にあります。たとえば、欧州データ保護委員会は、支払い詳細の保存に関するガイダンスを発行しています。これらの要件は通常、以降の購入時の決済フローでの顧客の支払い方法を提示する、顧客がウェブサイトやアプリを使用していないときに請求する、MOTOを注文する、店舗で請求するなど、将来に備えて顧客の支払い方法を保存する場合に適用されます。
決済手段の詳細を保存する趣旨、顧客がオプトインできるようにする規約を、決済フローに追加します。顧客がオフラインのときに顧客に請求する予定の場合は、少なくとも以下に関する説明を規約に含めてください。
- 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意
- 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。
- 決済金額の決定方法。
- サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。
これらの規約に関する顧客の書面による同意の記録を必ず保管してください。
決済手段を保存した場合、その使用は、規約に記載された特定の用途にのみ使用できます。顧客がオフラインであるときに請求し、さらに顧客の決済手段を保存して、以降の購入に備えた保存済みの決済手段として顧客に提示する場合は、顧客から明示的に同意を収集する必要があります。そのための方法の 1 つとして、「今後の使用に備えて決済手段を保存する」チェックボックスの使用があります。