Link を含むカスタムの決済ページを構築する
このガイドでは、Payment 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 の認証または登録のために顧客のメールアドレスを収集する
PaymentIntent を作成するサーバー側
Stripe は PaymentIntent (支払いインテント) オブジェクトを使用して、顧客から支払いを回収する意図を示し、プロセス全体を通して請求の実施と支払い状態の変化を追跡します。
顧客が Link アプリに格納した情報を使用して、Link で決済を受け付けることができます。Link の payment_method.type
を使用しないため、Payment Element で Link を使用した支払いを顧客から受け取ると、この支払いに対する payment_method.type
は card
になります。
Link の payment_method.type
を使用するには、構築済みのシステムを更新して、payment_method_types
に link
を設定します。あるいは、automatic_payment_methods
を enabled
に設定して、Stripe で最適な決済手段が顧客に動的に表示されるようにすることもできます。
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
顧客のメールアドレスを収集する
Link は顧客のメールアドレスを使用して顧客を認証します。決済フローに応じて、「メールアドレスを Payment Element に渡す」、「Payment Element 内で直接メールアドレスを収集する」、または「Link Authentication Element を使用する」というオプションがあります。これらのうち、可能であれば顧客のメールアドレスを Payment Element に渡す方法をおすすめします。
決済フォームを設定するクライアント側
これで、Elements の構築済みの UI コンポーネントを使用してカスタムの決済フォームを設定できるようになりました。構築したシステムを機能させるには、決済ページのアドレスの先頭を http://
ではなく https://
にする必要があります。テストの際には、HTTPS を使用しなくても問題ありません。本番環境で決済を受け付ける準備が整ったら、HTTPS を有効にします。
Stripe に支払いを送信するクライアント側
stripe.confirmPayment を使用し、さまざまな Elements フォームで顧客から収集された情報を使用して支払いを完了します。この関数に return_url を指定して、支払いが完了した後に Stripe がユーザーをリダイレクトする場所を指示します。
ユーザーは、まず銀行のオーソリページなどの中間サイトにリダイレクトされ、その後 Stripe によって return_url
にリダイレクトされる場合があります。
デフォルトのカードと銀行での支払いでは、支払いに成功すると即時に return_url
にリダイレクトされます。return_url
へのリダイレクトが不要の場合は、if_required
を使用して動作を変更できます。
return_url
は、戻りページのレンダリング時に PaymentIntent
の支払いのステータスを表示する Web サイト上のページに対応します。Stripe が顧客を return_url
にリダイレクトするときに、以下の URL クエリーパラメーターを使用して支払いのステータスを確認することができます。return_url
を指定する際は、独自のクエリーパラメーターを追加することもできます。このクエリーパラメーターはリダイレクトプロセス全体で存続します。
パラメーター | 説明 |
---|---|
payment_intent | PaymentIntent の一意の識別子 |
payment_intent_client_secret | PaymentIntent オブジェクトの client secret。 |
支払い後のイベントを処理するサーバー側
支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。Webhook を使用してこれらのイベントを受信し、顧客への注文確認メールの送信、データベースへの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、こうしたイベントをリッスンするように組み込みを設定します。クライアントからのコールバックを待っているときに、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする場合もあります。非同期型のイベントをリッスンするよう組み込みを設定すると、さまざまなタイプの決済手段を 1 つの組み込みで受け付けることができます。
Payment Element を使用して支払いを回収する場合は、payment_intent.succeeded
イベント以外に重要な 2 つのイベントも処理することができます。
イベント | 説明 | アクション |
---|---|---|
payment_intent.succeeded | 顧客が正常に支払いを完了したときに Stripe から送信されます。 | 顧客に注文の確定を送信し、注文のフルフィルメントを実行します。 |
payment_intent.payment_failed | 顧客が支払いを試み、その支払いに失敗した場合に Stripe から送信されます。 | 支払いが processing から payment_failed に変わった場合は、顧客に再度支払いを試すように促します。 |
構築したシステムをテストする
注意
テスト環境の 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 がこのような方法でデータを使用するために必要なすべての権利と同意について開示し、これらを取得することはお客様の責任です。詳細については、プライバシーセンターをご覧ください。