請求せずに直接保存
提示されたカードの詳細を収集して、オンライン利用のために保存します。
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 日に必須になりました。ガイダンスについては、変更ログエントリーをご覧ください。
メモ
SDK のバージョン 5. では、収集する統合ステップと確定する統合ステップが 1 つの processSetupIntent ステップに統合されました。
顧客を作成または取得する
Stripe で保存したカードに請求するには、カードを Customer に関連付ける必要があります。
確定前に、SetupIntent に顧客を含めると、入力した Customer オブジェクトに、生成されたカードの決済手段が自動的に関連付けられます。
以下のコードをサーバーに含めて、新しい Customer を作成します。
SetupIntent を作成する
メモ
SetupIntent を作成する際に顧客 ID を指定すると、セットアップに成功したときに Customer にカード決済手段がアタッチされます。顧客 ID を提供しない場合は、別の呼び出しで決済手段をアタッチする必要があります。
SetupIntent は、将来の支払いに備えて顧客の決済手段を設定する意図を示すオブジェクトです。SetupIntent は、この設定プロセスの各ステップを追跡します。Terminal の場合、このプロセスにはカード保有者の同意の収集と記録が含まれます。
SetupIntent を作成して、customer、onBehalfOf (Connect の場合のみ)、usage の各パラメーターを指定できます。
決済の開始に必要な情報をアプリですぐに利用できない場合は、サーバーで SetupIntent を作成できます。クライアントシークレットを使用して retrieveSetupIntent を呼び出し、取得した SetupIntent を使用して processSetupIntent を呼び出します。
保存するために決済手段を収集する
SetupIntent を作成したら、SDK を使用して決済手段を収集し、顧客の同意を得ます。allowRedisplay を always または limited にして、顧客の決済フローで決済手段が表示される頻度を指定します。
メモ
顧客からの同意を、文書またはアプリケーションのチェックボックスを使用して収集します。ご登録の地域で適用されるすべての法律、規則、および規制に準拠する必要があります。
SetupIntent を処理 するには、リーダーに接続されていることを確認してください。アプリが processSetupIntent を呼び出した後、接続されたリーダーはカードを待機します。
この方法では、接続されたカードリーダーを使用して支払い方法の暗号化データを収集し、その暗号化データを SetupIntent に関連付けます。
注意
支払い方法の収集はローカルで行われ、次のステップまで SetupIntent オブジェクトのオーソリや更新は必要ありません。
収集をキャンセルする
プログラムによるキャンセル
SDK から返される Cancelable オブジェクトを使用して、決済手段の収集をキャンセルできます。
顧客によるキャンセル
CustomerCancellation はデフォルトで有効になっているため、スマートリーダーユーザーにはキャンセルボタンが表示されます。キャンセルボタンをタップすると、アクティブな取引がキャンセルされます。取引でこの動作を切り替えるには、setCustomerCancellation を使用します。
Stripe に決済手段の詳細を送信する
前回の processSetupIntent の呼び出しは、 確定 を処理するため、それ以上のアクションは必要ありません。
設定が成功すると、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 の連携を使用して、決済手段の提示を再度求めます。
法令遵守
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. For example, the European Data Protection Board has issued guidance regarding saving payment details. These requirements generally apply if you want to save your customer’s payment method for future use. This applies in situations such as presenting a customer’s payment method to them in the checkout flow for a future purchase, or charging them when they’re not actively using your website or app, placing a MOTO order, or in your store.
Add terms to your checkout flow that state how you plan to save payment method details and allow customers to opt in. If you plan to charge the customer while they’re not actively checking out, make sure (at a minimum) that your terms also cover the following:
- 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することをお客様に許可するという、顧客からお客様への同意
- 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いまたはサブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。
- 決済金額の決定方法。
- サブスクリプションサービスに使用される支払い方法を設定する場合は、キャンセルに関するポリシー。
これらの規約に関する顧客の書面による同意の記録を必ず保管してください。
When you save a payment method, you can only use it for the specific purpose that you included in your terms. If you want to charge customers when they’re not actively checking out and also save the customer’s payment method to present to them as a saved payment method for future purchases, you must explicitly collect consent from the customer. One way to do so is with a “Save my payment method for future use” checkbox.