StripeのWebhookをテストする方法
はじめに
クレジットカード決済のデファクトスタンダードといっても過言ではない Stripe について軽く触れようと思います。 とりあえず、今回は Stripe の Webhook をテストする方法について紹介します。
トンネリングを使う方法
これが 公式ドキュメント で紹介されている方法です。 トンネリングサービスとしては ngrok が挙げられています。
ngrok の簡単な使い方としては、8080番ポートでアプリケーションが動作しているときに以下のコマンドを実行すると URL が発行されてローカルサーバを外部に公開できます。 発行された URL を Stripe のダッシュボードから設定すれば Webhook をテストできるようになります。 非常に簡単ですね。
$ ngrok http 8080
なお、ngrok は無料プランだとサブドメインを固定できないため起動するたびにランダムなURLが発行されます。 そのため、頻繁に Stripe のダッシュボードから URL を書き換える必要があるかもしれません。 さすがに面倒くさいので自動化するコマンドを作ってみました。 以下のコマンドを実行することで ngrok が発行した URL を Stripe の Webhook の URL に自動で反映させることができます。
$ narikiri --key sk_test_************************
ちなみに、sk_test_************************ の部分はテスト用のシークレットキーです。 ダッシュボードから取得してください。 また、制限付きのシークレットキーを使う場合は Webhook エンドポイントの読み書き権限が必要です。 インストール方法などは こちら を参照してください。
モックサーバを使う方法
Stripe の Webhook をシミュレートするローカルサーバに構築する方法です。 この方法を使う場合はできる限りメンテナンスされているものを使うと良いでしょう。 実際の使い方については こちら を参照してください。
ゲートウェイを使う方法
ngrok のようなトンネリングサービスを使う場合、開発者が1人であれば特に問題はありません。 しかし、開発者が複数人いる状況で Webhook をテストするときに、エンドポイントが頻繁に変わるのは使い勝手が非常に悪いです。 そんなときは こちら の記事のようにエンドポイントを1箇所にまとめる方法が望ましいと思います。
おわりに
Stripe の Webhook をテストする方法について紹介しました。 1人で開発する場合は ngrok のようなトンネリングで十分だと思います。 Webhook 処理を複数人で開発する場合はゲートウェイを使う方法が良いのかなと思います。