Stripe API の概要
Stripe API オブジェクトがどのように連携するか、またその組み合わせのベストプラクティスについてご紹介します。
Stripe API は、使い方がわかると、強力で柔軟なツールとなります。この API の説明では、API の理解を深めるために重要な情報をご紹介します。
- API 全体で使用される中心となる概念
- 成功する支払いの道筋
- 役割を果たすオブジェクトと、それらが必要な場合の特定方法
- これらのオブジェクトを組み合わせて使用するための共通パターンとベストプラクティス
これらのパターンを理解すると、Stripe のチュートリアルにある事前に作成されたコードを超える機能を実現できます。以前の組み込みを移行して、最新のパターンを使用し、シンプルなパターンを新しい方法で組み合わせ、さらに将来の成長に向けて計画を立てることができます。
中心となる概念
すべてがオブジェクト
API を使用して作成したかに関わらず、Stripe アカウントのすべての要素はオブジェクトです。たとえば、残高は Balance (残高) オブジェクトに対応し、顧客は Customer (顧客) オブジェクトで追跡され、支払いの詳細は PaymentMethod (支払い方法) オブジェクトに保存されます。
ローコードまたはコーディング不要の組み込みでも、これらのオブジェクトは生成されます。ダッシュボードで実行したアクションについても同様です。たとえば、ダッシュボードで顧客を手動で作成した場合でも、Customer オブジェクトが作成されます。
オブジェクトはリアルタイムで変化する
Stripe の組み込みは複雑なプロセスに対応します。
API は 1 つのオブジェクトを使用して各プロセスを追跡します。プロセスの開始時にオブジェクトを作成し、それぞれのステップの後で status
を参照して、次に実行する必要のある操作を確認できます。これは「ステートマシン」と呼ばれることがあります。
たとえば、決済の完了時に顧客が複数の支払い方法を試す場合があります。1 つの支払い方法が失敗すると、requires_
の status
が、顧客に別の支払い方法をリクエストするようお客様に知らせます。
組み込みは連携オブジェクトで構成される
決済を受け付けるために、システムは複数のコアオブジェクトを作成し、複数の状態を使用してコアオブジェクトを管理する必要があります。
Stripe の組み込みは、Stripe とやり取りしてこのような作成と管理を処理するシステムです。
組み込みによっては、顧客の追跡、サブスクリプションの管理など、さらに多くの機能が実行されます。それでも、中心になる決済機能は同じオブジェクトとステップによって提供され、その周りに多くのオブジェクトが追加されています。
Payment objects
Stripe は、決済を円滑化するためにさまざまな関連オブジェクトを使用します。特定のニーズに合った実装を構築する前に、これらのオブジェクトがどのように連携するかを理解しておく必要があります。
決済オブジェクトの役割と機能の概要を説明しているこのビデオをご覧ください。
Stripe の決済の導入オプションの詳細については、以下のガイドをご覧ください。
The path to a payment
最新の Stripe の導入では、決済ごとに PaymentIntent (支払いインテント) と呼ばれるオブジェクトが使用されます。名前のとおり、このオブジェクトは支払いを回収するお客様の「意図」を示し、これを実行する過程の各ステップを追跡します。
たとえば、顧客がカートに 100 USD の商品を入れて購入ボタンをクリックするとします。まだ顧客の購入前であり、購入されない可能性もあります (ある時点で顧客が決済フローを中断したり、カード発行会社が支払いを拒否する場合など)。それでも、購入をクリックすることで顧客の購入する「意図」が示され、お客様にはこれをサポートする意思があります。この時点で、組み込みは金額が 100 USD の PaymentIntent
オブジェクトを作成し、残りのプロセスを追跡します。
成功する PaymentIntent
の道筋はいくつかのステータスを遷移します。これを簡略化した図を次に示します。
支払い方法
PaymentIntent は requires_
のステータスで開始します。Stripe ではこれを先に進めるため、顧客の支払い方法に関する詳細 (カード番号または他の決済システムの認証情報) が必要になります。
実装は PaymentMethod (支払い方法) と呼ばれる API オブジェクトを使用して、このような詳細情報を表します。一部の実装では、このオブジェクトを作成して PaymentIntent に関連付けるコードをお客様が記述します。それ以外では、Stripe が詳細を収集してこの操作を行います。Setup Intents API を使用して、今後の PaymentIntents で使用する支払い方法を作成し、保存することもできます。
確定
次のステータスは requires_
です。インタラクティブな決済フローでは、顧客は支払いを行う意思と、指定した手段でそれを実行する意思を確定する必要があります。1 回限りのオンライン決済では、通常支払うボタンをクリックしたときに確定します。
顧客が支払うをクリックするか、インテントを確定すると、API コールで Stripe に通知が届きます。実装によっては、このコールを実行するコードをお客様が作成します。Stripe は Stripe Elements という埋め込み可能な UI エレメントを用意しています。これを利用すると、コードを作成できるようになるとともに、カスタムの実装を構築する柔軟性も提供されます。Stripe Checkout や Payment Links といったその他の実装では、Stripe がコールを実行して、後続のステップを処理します。Stripe を導入し、さまざまなオブジェクトを組み合わせて実際のユースケースに対応するための方法が多数用意されています。オンライン決済向けの導入オプションの詳細をご確認ください。
ほとんどの場合、PaymentIntent が確定されると、資金を移動するという特定の試行を表す Charge (支払い) が作成されきます。Charge は成功または失敗します。失敗した場合、通常は新しい支払いの詳細を指定して PaymentIntent を再度確定すると、支払いを再試行できます。PaymentIntent を新たに作成せずに試行を直ちに実行することを許可すると、購入完了率が上がる傾向にあります。
処理中および成功
インテントの状態は processing
になり、Stripe はこの時点で決済の処理を試みます。
この処理はいつでも Stripe によって実行され、複数のステップに分かれる場合があります (クレジットカードの場合、これらのステップはカードの仕組みに含まれています)。ステップが実行されると、インテントの状態が結果で更新され、succeeded
になるか、失敗した場合は requires_
に戻ります。
完了すると、最後のオブジェクトである Event (イベント) が機能します。Stripe はアクティビティーを示すために Event
オブジェクトを使用します。この例では、アクティビティーは「支払いの成功」または「支払いの失敗」になる可能性があります。一部の実装では、Webhook を使用してイベントに応答するためのカスタムコードをお客様が記述します。その他の Checkout や Payment Links などの実装では、Stripe がイベントをリッスンし、事前に作成された応答を返します。