PaymentIntents と SetupIntents の仕組み
決済フローで PaymentIntents と SetupIntents がどのように機能するかをご紹介します。
Payment Intents API と Setup Intents API の主な違いは、その目的にあります。
- Payment Intents API: 決済を収集し、顧客から即座に決済するために使用されます。決済を作成し、取引を処理して売上を収集します。
- Setup Intents API: 決済を作成せずに、決済手段の詳細を収集し、将来の使用に備えて保存するために使用します。決済を処理せずに決済認証情報を設定します。
Payment Intent API | Setup Intents API |
---|---|
即時決済を作成する | 請求なし |
決済のライフサイクルを追跡 | 決済手段の設定の進捗を追跡 |
3D セキュアを使用して、該当する取引の顧客を認証する | 3D セキュアを使用して、決済手段を請求せずに認証し、今後の決済の同意書を作成する |
非同期決済は、アプリケーションの外部で発生する顧客アクションに依存する可能性があるため、管理が難しい場合があります。たとえば、ユーザーは3D セキュアを使用して決済を確定する必要があります。
決済管理をシンプルにするために、Stripe は決済フローの状態を追跡できるステートマシンを使用します。各 API の状態を確認するには、以下の該当するタブを選択します。
PaymentIntent が作成されると、支払い方法が関連付けられるまで、ステータスは requires_
1 になります。
請求金額が分かり次第、PaymentIntent を作成することをお勧めします。これにより、支払いの試行をすべて Stripe で記録することができます。
顧客が支払い情報を入力したら、PaymentIntent を確定できます。
通常、組み込みでは支払い方法の情報が支払いの確定と同時に送信されるため、この状態はスキップされます。
3D セキュアでの認証など、支払いに追加アクションが必要な場合、PaymentIntent のステータスは requires_
1 になります。
口座引き落としなどの非同期の支払い方法の場合、必要なアクションの処理が終わると、PaymentIntent は processing
に移行します。このようなタイプの支払い方法では、処理に最大で数日かかることがあります。カードなど他の支払い方法の場合は処理がスピーディーで、processing
ステータスにはなりません。
売上のオーソリとキャプチャーを個別に行っている場合は、代わりに PaymentIntent を requires_
に移行できます。その場合、売上のキャプチャーを試行すると、ステータスは processing
に移行します。
PaymentIntent のステータスが succeeded の場合は、その決済フローが完了していることを意味します。
売上がお客様のアカウントに入金されていることを確認できたため、確信を持って注文のフルフィルメントを実行できます。顧客に返金する必要がある場合は、Refunds API を使用できます。
支払い処理が失敗した場合 (支払い拒否など)、支払いを再試行できるように PaymentIntent のステータスは requires_
に戻ります。
PaymentIntent は、processing
2 または succeeded
ステータスより前の任意の時点でキャンセルできます。キャンセルすると、今後の支払い処理で PaymentIntent は無効になり、これを取り消すことはできません。売上が保留されている場合は、キャンセルすると売上はリリースされます。
PaymentIntent は、過剰な回数が確定されると自動的に canceled
ステータスに移行する場合もあります。
1 2019-02-11 以前の API のバージョンでは、requires_
の代わりに requires_
、requires_
の代わりに requires_
が表示されます。
2 関連付けられている支払い方法がアメリカの銀行口座であるときは、processing
ステータスの PaymentIntent をキャンセルできます。ただし、キャンセル期間は限定的かつ多様なため、キャンセルが失敗することもあります。