Stripe Webhookのテスト:ローカル開発ガイド
StripeのWebhookは、決済やサブスクリプションに関する情報をアプリに通知します。Webhookの受信漏れは、注文の失敗につながります。以前はテストが困難でしたが、Stripe CLIを使えば簡単に行えます。
まず、CLIをインストールします。
- macOS:
brew install stripe/stripe-cli/stripe - Windows:
scoop install stripe - Linux: リリースページを使用してください。
次のコマンドでアカウントを連携します:
stripe login
イベントをサーバーに転送するためのリスナーを開始します:
stripe listen --forward-to localhost:3000/webhooks/stripe
出力された署名シークレット(signing secret)を保存します。それを環境変数に設定してください:
export STRIPE_WEBHOOK_SECRET=whsec_abc123
お金を使わずにイベントをテストできます。トリガーを使用しましょう。
- 決済成功:
stripe trigger payment_intent.succeeded - 決済失敗:
stripe trigger payment_intent.payment_failed - 新規サブスクリプション:
stripe trigger customer.subscription.created
不正なリクエストを防ぐために、署名を検証してください。リクエストの生(raw)のボディを使用します。JSONパーサーを使用すると検証が失敗するため、Expressでは express.raw() を使用してください。
よくあるエラーの解決方法。
- 400レスポンスが返ってくる場合は、署名の検証に失敗しています。
- CLIのシークレットを確認してください。ダッシュボードのシークレットはここでは使用できません。
- ログを確認してください。
本番環境のチェックリスト。
- HTTPSを使用する。
- 本番用のシークレットを使用する。
- 30秒以内にレスポンスを返す。
- 重複したイベントを処理できるようにする。
出典: https://dev.to/digital_trubador/stripe-webhook-testing-local-development-guide-391