Elements と Link を使用して以降の支払いを設定する
このガイドでは、Setup Intents API と、Payment Element または Link Authentication Element を使用して、Link による決済を受け付ける方法を紹介します。
Link の認証または登録のために顧客のメールアドレスを収集する方法は 3 種類あります。
- メールアドレスを渡す: defaultValues を使用して、メールアドレスを Payment Element に渡すことができます。決済フローで顧客のメールアドレスまたは電話番号を収集した場合は、このアプローチをお勧めします。
- メールアドレスを収集する: Payment Element で直接、メールアドレスを収集できます。決済フローでメールアドレスを収集しない場合は、このアプローチをお勧めします。
- Link Authentication Element: Link Authentication Element を使用して、1 つでメールアドレスの収集と Link の認証の両方に対応するメールアドレス入力フィールドを作成できます。Address Element を使用している場合は、この方法をおすすめします。
Link の認証または登録のために顧客のメールアドレスを収集する
Customer を作成するサーバー側
将来の支払いに備えて決済手段を設定するには、その手段を Customer (顧客) に関連付ける必要があります。顧客がビジネスでアカウントを作成する際に、Customer
オブジェクトを作成します。Customer
オブジェクトを使用すると、決済手段を再利用したり、複数の支払いを追跡したりできます。
SetupIntent を作成するサーバー側
注
最初に SetupIntent を作成せずに Payment Element をレンダリングする場合は、インテントを作成する前に支払いの詳細を収集するをご覧ください。
SetupIntent (支払い方法設定インテント) は、セッション中に将来の決済に備えて顧客の決済手段を設定するという意図を示すオブジェクトであり、セッションのステータスを追跡します。SetupIntent は、link
と、サポートするその他の決済手段を指定して、サーバーで作成します。
その他の決済手段の設定方法については、将来の支払いを設定するガイドをご覧ください。
client secret を取得する
SetupIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
顧客のメールアドレスを収集する
Link は顧客のメールアドレスを使用して顧客を認証します。決済フローに応じて、「メールアドレスを Payment Element に渡す」、「Payment Element 内で直接メールアドレスを収集する」、または「Link Authentication Element を使用する」というオプションがあります。これらのうち、可能であれば顧客のメールアドレスを Payment Element に渡す方法をおすすめします。
決済フォームを設定するクライアント側
これで、Elements の構築済みの UI コンポーネントを使用してカスタムの決済フォームを設定できるようになりました。構築したシステムを機能させるには、決済ページのアドレスの先頭を http://
ではなく https://
にする必要があります。テストの際には、HTTPS を使用しなくても問題ありません。本番環境で決済を受け付ける準備が整ったら、HTTPS を有効にします。
SetupIntent を送信するクライアント側
収集した詳細を指定し、stripe.confirmSetup を使用して設定を完了します。ユーザーが設定を完了した後に Stripe がユーザーをリダイレクトできるように、この関数に return_url を指定します。支払いが成功すると、Stripe は直ちに Link とカード支払いを return_url
にリダイレクトします。
保存された決済手段に後で請求するサーバー側
顧客に請求する準備ができたら、Customer ID と PaymentMethod ID を使用して、PaymentIntent を作成します。請求する決済手段を見つけるには、顧客に関連付けられた決済手段をリストアップします。
Customer ID と PaymentMethod ID を取得したら、決済の金額と通貨を指定し、次のパラメーターを使用して PaymentIntent を作成します。
- PaymentIntent の confirm プロパティの値を
true
に設定します。これにより、PaymentIntent が作成されると直ちに確定されます。 - payment_method を PaymentMethod の ID に設定します
- Customer を Customer の ID に設定します。
- off_session を
true
に設定します。これにより、認証が必要な場合に顧客がサイトやアプリでアクティブでないときは、PaymentIntent からエラーが送信されます。
実装をテストする
注意
テスト環境の Link アカウントには実際のユーザーデータを保存しないでください。テストアカウントは公開可能キーに関連付けられているため、公開可能なものとして扱ってください。
Link は現在、クレジットカード、デビットカード、および資格要件を満たしたアメリカの銀行口座からの購入にのみ対応しています。Link では、ドメインの登録が必要です。
有効な任意のメールアドレスを使用して、Link のテスト環境のアカウントを作成できます。以下の表には、テスト環境のアカウントの認証に使用できる、固定値のワンタイムパスコードが示されています。
値 | 結果 |
---|---|
以下に記載されていない任意の 6 桁の数字 | 成功 |
000001 | エラー: コードが無効です |
000002 | エラー: コードの有効期限が切れています |
000003 | エラー: 最大試行回数を超えました |
特定の決済手段をテストするには、Payment Element のテスト例をご覧ください。
複数の資金供給元
対応する資金供給元を Stripe が追加した場合でも、貴社で構築済みのシステムを更新する必要はありません。Stripe が自動的に対応し、カード決済や銀行口座決済の場合と同じ売上処理時間と保証が適用されます。
カード認証と 3D セキュア
Link は、カード支払いで 3D Secure 2 (3DS2) 認証をサポートしています。3DS2 では、顧客が支払い時にカード発行会社で追加の認証ステップを完了するように要求されます。3DS を使用して認証が成功した支払いは、ライアビリティシフトの対象になります。
テスト環境で Link を使用して 3DS2 認証のチャレンジフローを起動するには、任意のセキュリティコード、郵便番号、および将来日付の有効期限を指定してテストカード を使用します。
テスト環境では、認証プロセスで認証の模擬ページが表示されます。そのページでは支払い のオーソリまたはキャンセルを行うことができます。支払い をオーソリすると、認証の成功がシミュレーションされ、指定された戻り URL にリダイレクトされます。失敗ボタンをクリックすると、認証の失敗がシミュレーションされます。
詳細については、3D セキュア認証ページをご覧ください。
注
3DS フローのテストでは、3DS2 用のテストカードを使用している場合にのみ Link の認証が起動されます。
Stripe について顧客に開示する
Stripe は顧客の Elements とのやり取りに関する情報を収集して、サービスを提供し、不正利用を防止し、サービスを向上します。これには、Cookie と IP アドレスを使用して、1 つの決済フローセッションで顧客に表示する Elements を特定することが含まれます。Stripe がこのような方法でデータを使用するために必要なすべての権利と同意について開示し、これらを取得することはお客様の責任です。詳細については、プライバシーセンターをご覧ください。