カード支払いを回収する
Stripe Terminal を使用したカード支払いの回収ができるように、アプリケーションとバックエンドを準備します。
Stripe Terminal で支払いを回収するには、アプリケーションに決済フローを記述する必要があります。Stripe Terminal SDK を使用して、1 つの支払いセッションを表すオブジェクトである PaymentIntent (支払いインテント) を作成して更新します。
Terminal の組み込みは支払いプロセスにおける失敗に対応できるように設計されており、支払いプロセスを複数のステップに分割し、各ステップを安全に再試行できるようになっています。
- PaymentIntent を作成します。
- 決済を処理します。顧客のカードの承認は、SDK が決済を処理するときに行われます。
- (オプション) 支払いをキャプチャーする
PaymentIntent を作成するクライアント側サーバー側
支払いを回収する最初のステップは、支払いフローを開始することです。顧客がチェックアウトを開始するとき、アプリケーションは PaymentIntent オブジェクトを作成する必要があります。これは、Stripe での新しい支払いセッションを表します。
クライアント側またはサーバー側で PaymentIntent を作成できます。
テスト金額を使用して、さまざまな結果を生成してみてください。00 で終わる金額では、支払いが承認されます。
よくある間違い
クレジットカードが拒否された場合は、決済インテントを再作成しないでください。代わりに、同じ決済インテントを再利用して、二重請求を回避します。
クライアント側
クライアントから PaymentIntent を作成します。
警告
アプリが Verifone P400 に接続されている場合は、iOS SDK から PaymentIntent を作成できません。代わりに、サーバー側で PaymentIntent を作成し、SDK の Terminal. メソッドを使用して、アプリ内に PaymentIntent を取得する必要があります。
サーバー側
支払いの開始に必要な情報がアプリですぐに利用できない場合は、サーバで PaymentIntent を作成することができます。
次の例は、サーバで PaymentIntent を作成する方法を示しています。
Terminal の支払いでは、payment_ パラメータに card_ が含まれている必要があります。
以下のように決済フローを制御できます。
card_支払いの支払いフローを完全に制御するには、present capture_をmethod manualに設定します。これにより、支払いを確定する前に照合ステップを追加できます。- 1 ステップで支払いのオーソリとキャプチャーを行うには、
capture_をmethod automaticに設定します。
オーストラリアで決済を受け付けるには、capture_ をautomaticまたは manual_ に設定する必要があります。詳細については、Stripe のオーストラリアのドキュメントをご覧ください。カナダで Interac 支払いを受け付けるには、payment_ に interac_ も含める必要があります。詳細については、Stripe のカナダのドキュメントをご覧ください。
PaymentIntent には、個々の PaymentIntent に固有のキーである client secret が含まれています。client secret を使用するには、これをサーバーで PaymentIntent から取得し、クライアント側に渡す必要があります。
PaymentIntent を取得するには、client secret を使用して retrievePaymentIntent を呼び出します。
PaymentIntent を取得したら、それを使用して processPaymentIntent を呼び出します。
支払いを処理するクライアント側
顧客が提示したカードで決済を即時に処理するか、決済の処理に進む前にカード詳細を調べるかを選択できます。大半のユースケースでは、API コール数が少なく抑えられ、統合がシンプルになるため、即時に処理することをお勧めします。ただし、カードの承認前に独自のビジネスロジックを挿入する場合は、収集と確定の 2 段階のフローを使用できます。
支払いをキャプチャーするサーバー側
ステップ 1 の PaymentIntent の作成時に capture_ を manual として定義した場合、SDK はオーソリ済みでキャプチャーはされていない PaymentIntent をアプリケーションに返します。オーソリとキャプチャーの違いについて、詳細を確認してください。
アプリが SDK から確定済みの PaymentIntent を受信したら、その支払いをキャプチャーするようにアプリからバックエンドに対して通知するようにしてください。バックエンドにエンドポイントを作成し、PaymentIntent ID を受け付け、それをキャプチャーするように Stripe API にリクエストを送信します。
capture コールが成功すると、PaymentIntent のステータスは succeeded になります。
メモ
キャプチャーされたプラットフォーム手数料が連結アカウントに対して正確であることを確認するために、支払いを手動でキャプチャーする前にそれぞれの PaymentIntent を調べ、必要に応じてプラットフォーム手数料を修正します。
支払いを照合する
ビジネスの支払いアクティビティを監視するため、毎日の最後の作業としてサーバで PaymentIntent と内部注文システムを照合することをお勧めします。
PaymentIntent のステータスが requires_ のままの場合には、以下の 2 つの可能性があります。
顧客のカード明細上の不要なオーソリ
- 原因: ユーザーが取引の途中でアプリの決済フローを中止した
- 解決策:キャプチャーされていない
PaymentIntentが、サーバーにある完了済みの注文に関連付けられていない場合には、キャンセルできます。キャンセルされたPaymentIntentを使用して支払いを実行することはできません。
顧客からの売上回収が未完了
- 原因: 支払いをキャプチャーするようにバックエンドに通知する、アプリからのリクエストのエラー
- 解決策:キャプチャーされていない
PaymentIntentが、サーバにある完了済みの注文に関連付けられており、その注文について他の支払い (現金による支払いなど) を受けていない場合には、この PaymentIntent をキャプチャーできます。
チップを徴収する アメリカのみ
アメリカでは、対象ユーザーは支払いのキャプチャー時にチップを徴収できます。
