Webhooks: HTTP ステータスコードが 4 (4xx) または 5 (5xx) で始まる場合はどうすればよいですか?

400 ~ 499 または 500 ~ 599 の範囲の HTTP ステータスコードがサーバーから送信され、システムでリクエストを受信したものの処理できなかったことを示す場合は、以下の方法をお試しください。

  1. ダッシュボードで、その他の情報についてサーバーからの応答を確認する: 応答にその他の情報がないこともありますが、これはエラーに応答するようサーバーがどのように設定され、コードがどのように設計されているかによって異なります

  2. サーバーログでエラーや警告をチェックする: これらのエラーは、Webhook 処理コードまたはサーバーの設定問題の可能性があるエラー応答の原因を示します

  3. 受信したイベントに、コードによって処理できる API バージョンがあることを確認する: API バージョンはイベントに含まれるオブジェクトの構造を定義します。受信イベントと処理コード間での API バージョンの不一致は、予期しないエラーを招く可能性があります

4xx および 5xx ステータスコードの原因となるいくつかの一般的なエラーとその解決策については、以下の説明をご覧ください。

エラー: ペイロードの想定される署名と一致する署名が確認できない

このエラーまたは類似するエラー (ライブラリによって表現が異なる可能性があります) は、Webhook の署名確認プロセスが失敗したことを意味します。このエラーは通常、以下のいずれかに起因します。

  • 署名確認プロセスの際に使用した Webhook 署名シークレット (whsec_) に誤りがある

    • イベントを配信する Webhook エンドポイントに一致する Webhook 署名シークレットを使用するようにしてください。これはダッシュボードで特定の Webhook エンドポイントを選択した後に確認できます

    • Stripe CLI をご利用の場合は、stripe listen コマンドを実行すると、使用する Webhook 署名シークレットが生成および表示されます

  • リクエストの本文が Webhook の署名確認が行われる前に変更された

    • Webhook の署名確認プロセスには、Stripe から受信するリクエストそのままの、変更されていない本文が必要です

    • 署名確認前にコードがリクエストの本文の構文解析、フォーマット設定、または何らかの変更を行うと、このようなエラーが表示されます

    • 受信リクエストの元々の本文を変更している可能性があるため、ミドルウェアを含むコードを調整または削除して、再度お試しください

      • 注意: Node.js ミドルウェアによって受信リクエストの本文が変更されることがよくあります。できるだけ、他のミドルウェアの実行前に元々の本文を抽出してください

エラー: 許容範囲外のタイムスタンプ

このエラーまたは類似するエラー (ライブラリによって表現が異なる可能性があります) は、受信したイベントが古すぎて検証できなかったことを意味します。Webhook の署名には時間的要素があり、受信後すぐに検証される必要があります。

以下の方法をお試しください。

  • サーバーの日時が正確に設定されているかどうかを確認します

  • 受信する Webhook の署名を、イベントの受信後すぐに、遅滞なく検証していることを確認します

内部サーバーエラー

これらのエラーは通常、コードが例外、構文解析エラー、または何らかの互換性を破る変更をスローすることで起こります。

たいていの場合、このクラスのエラーは、Webhook を受け付けて処理するサーバーまたはインフラストラクチャーにおける何らかの変更が原因で発生します。新しいコードや変更されたコード、サーバーの更新、または設定の変更は、新たな故障モードや非互換性の問題を引き起こすことがあります。

このエラーが発生した際は、サーバーのエラーログで詳細をチェックしてください。エラーログの場所はサーバーによって異なり、設定、オペレーティングシステム、ウェブサーバー、使用されているプログラミング言語、その他の要素に基づくため、Stripe では具体的な手順をご案内することができません。  Webhook を受信するために使用している以下のいずれかに関して、ログとエラーログ設定の両方を確認することをお勧めします。

  • プログラミング言語 (Ruby、Python、PHP、Java、Node.js、Go、NET など)

  • ウェブサーバー (Nginx、Apache、Microsoft IIS など)

  • クラウドプロバイダーまたはサーバープロバイダー (Amazon Web Services、Google Cloud Computing、Cloudflare など)

Did this answer your question?
We use cookies to improve your experience and for marketing. Read our cookie policy or manage cookies.