導入方法の設計
Payment Element を導入する前に、どのような選択が必要かをご紹介します。
Payment Element の導入を構築する前に、ビジネス要件に合った導入パスを選択します。
次の図は、Payment Element を導入する際に利用できる導入ガイドの概要を示しています。
以下のセクションでは、Payment Element を導入する際に必要となる 2 つのアーキテクチャーの選択について説明します。
PaymentIntent オブジェクトまたは SetupIntent オブジェクトを作成するタイミングを選択する
Payment Element は、顧客から支払い情報を収集して、支払いを回収しているのか、将来使用するために支払い方法を設定しているのかに応じて、PaymentIntent オブジェクトまたは SetupIntent オブジェクトに設定します。顧客が決済を開始する際、以下を行うことができます。
Payment Element のみを作成する: 顧客が支払うボタンを押して決済フォームを送信するまで、PaymentIntent または SetupIntent の作成と確定を延期します。このオプションは、以下のような場合に選択します。
複数ページの決済フローを使用していて、支払いの詳細を収集するページが支払い送信または注文のサマリーのページより前に表示されます。2 段階の確認機能を構築する方法をご覧ください。
購入中のアイテムやアイテムの数量の変更や、割引コードの追加といった顧客の選択に基づいて金額が変化する可能性がある動的な決済ページを使用している場合。顧客が支払うをクリックするまで Intent 作成を延期することで、クライアントで行われた変更と Intent を同期する必要がなくなります。これは、金額の変更は特定の支払い方法の利用資格に影響するために必要です。クライアントで Intent を確定する場合は PaymentIntent を作成する前に支払いの詳細を収集する方法を確認して、サーバーで Intent を確定する場合はサーバーで支払いを確定する方法をご覧ください。
PaymentIntent/SetupIntent と Payment Element の両方を作成する: 決済ページを読み込む前に PaymentIntent または SetupIntent を作成して、Payment Element を作成し、Elements オブジェクトの作成時のパラメーターとして Intent の
client_
を指定し、2 つを関連付けます。このオプションは、以下のような場合に選択します。secret - 静的な決済ページを使用していて、導入を素早く設定したい場合。決済を受け付ける方法をご覧ください。
PaymentIntent または SetupIntent を確定する場所を選択する
Payment Element によって収集された支払い情報は、確定時に PaymentIntent または SetupIntent に転送されます。顧客が支払うをクリックすると、以下のいずれかを行うことができます。
クライアントで PaymentIntent/SetupIntent を確定する: クライアントのコードが Stripe SDK を呼び出すと、Intent を確定する API が呼び出されます。Stripe SDK は、3D セキュアによる認証など、必要な次のアクションも自動的に処理し、エラーメッセージのローカライゼーションも行います。このオプションは、以下の場合に選択します。
- サーバーでの Intent の確定をさらに制御する必要はなく、最速の導入を求めている場合。
サーバーで PaymentIntent/SetupIntent を確定: サーバーのコードで API を直接呼び出して Intent を確定します。次のアクションが必要な場合は、手動で処理するか、Stripe SDK (stripe.handleNextAction を使用して処理する必要があります。このオプションは、以下のような場合に選択します。
- 支払い方法の制限やプラットフォーム手数料の調整などのビジネスロジックをサーバーで確定前に実行する必要がある場合。ビジネスロジックの実行後、ビジネスロジックを無効にする可能性がある変更をクライアントが行えないように、即座にサーバーで Intent を確定します。