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