Webhook を使用してアクションをトリガーする
Webhook は、Stripe からイベントを受信する HTTP エンドポイントです。
Webhook を使用すると、決済フロー外で実際に発生する以下のような支払いイベントに関する通知を受け取ることができます。
- 支払いの成功 (
payment_intent.succeeded
) - 支払いへの不審請求の申請 (
charge.dispute.created
) - Stripe アカウントの利用可能な残高 (
balance.available
)
ダッシュボードが支払いの返金または顧客情報の更新などの 1 回限りのアクションの用途に適しているのに対して、Webhook はお客様の支払いの組み込みを拡張する場合に不可欠であり、ビジネスに影響する重要なイベントを大量に処理するのに役立ちます。
独自の Webhook を構築する
お客様独自のサーバで Webhook ハンドラを構築し、オフラインのすべての決済フローを管理できます。まず、Stripe からのリクエストを受信できるエンドポイントを公開し、CLI を使用して組み込みをローカルでテストします。Stripe からの各リクエストには Event (イベント) オブジェクトと、修正された Stripe 上のオブジェクトへの参照が含まれます。
Webhook エンドポイントを作成する
お使いのアプリケーションで新しいエンドポイントを追加します。リクエスト本文で送信されたイベントオブジェクトの type
フィールドを確認することにより、特定のイベントに対応できます。ここでは、Webhook が機能していることを確認するため、標準的な出力を確認しましょう。
新しいエンドポイントを追加した後で、サーバを起動します。
Stripe CLI をインストールして設定する
その他のインストールオプションについては、Stripe CLI を使ってみるをご覧ください。
Stripe CLI をインストールしたら、コマンドラインで stripe login
を実行して Stripe アカウントにリンクするためのペアリングコードを生成します。Enter キーを押してブラウザを立ち上げ、アクセスを許可する Stripe アカウントにログインします。生成された API キーは 90 日間有効です。ダッシュボードの API キーの下で、キーを修正したり削除したりできます。
stripe login Your pairing code is: humour-nifty-finer-magic Press Enter to open up the browser (^C to quit)
既存の API キーを使用する場合は、--api-key
フラグを使用します。
stripe login --api-key
Your pairing code is: humour-nifty-finer-magic Press Enter to open up the browser (^C to quit)sk_test_4eC39HqLyjWDarjtT1zdp7dc
Webhook をローカルでテストする
CLI を使用して、listen
コマンドでローカル Webhook エンドポイントにイベントを転送します。
アプリケーションがポート 4242 で実行されていると仮定し、以下を実行します。
stripe listen --forward-to http://localhost:4242/webhook
別の端末タブで、trigger
CLI コマンドを使用して模擬 Webhook イベントをトリガーします。
stripe trigger payment_intent.succeeded
listen
タブには次のイベントが表示されます。
[200 POST] OK payment_intent.succeeded
また、サーバが実行中の端末タブにも「PaymentIntent was successful! (PaymentIntent は正常に処理されました)」と出力されます。
Webhook エンドポイントをデプロイする
Webhook エンドポイントを本番環境にデプロイする準備ができたら、以下の 2 つの操作が必要です。
テスト環境のキーではなく、本番環境の API キーを使用します。
Stripe ダッシュボードまたは API で、Webhook エンドポイントを設定します。
ダッシュボードでエンドポイントを設定するには、Webhook の設定に移動します。
「エンドポイントを追加」をクリックして、エンドポイントの URL、Stripe API バージョン、および Stripe から送信する特定のイベントを入力します。
アプリケーションの Webhook エンドポイントのシークレットを、エンドポイントのダッシュボードに表示される新しいシークレットに置き換えます。
これで完了です。アプリケーションで本番環境のイベントを受け付ける準備ができました。Webhook エンドポイントの設定の詳細については Webhook Endpoint API を参照し、テスト環境でのテストについては開発者用ガイドを参照してください。