テスト
Webhook のテストとデバッグ
本番環境にデプロイする前に、webhook 連携が正しく動作することを確認してください。このページでは、ローカル環境で webhook を受信する方法と、配信や確認でよくある失敗の原因を特定する方法について説明します。
Webhook には公開アクセス可能な URL が必要なため、開発中はローカルサーバーをインターネットに公開する必要があります。
Cloudflare Tunnels は、ファイアウォールのポートを開放することなくローカルサーバーを公開できる無料の手段です。
cloudflared tunnel --url localhost:3000https://abc123.trycloudflare.com のような公開 URL が発行されます。この URL を Webhook の設定で使用してください:
{
"url": "https://abc123.trycloudflare.com/webhook"
}- エンドポイントにアクセスできない - サーバーがインターネットから到達可能であり、ファイアウォールが受信接続を許可していることを確認してください
- HTTP を使用している - webhook の URL は HTTPS を使用する必要があります
- イベントが間違っている - webhook 設定の
eventsフィルターを確認してください - タイムアウトエラー - エンドポイントが 10 秒以内に応答することを確認してください
最もよくある原因は、生のリクエストボディではなく、パース済みの JSON ボディを使用していることです。2つ目の原因は誤ったシークレットを使用していることです。アカウント設定の値と一致しているか確認してください。
// ❌ 誤り - 解析後のボディを使用している
const signature = crypto
.createHmac('sha256', secret)
.update(JSON.stringify(req.body))
.digest('hex');
// ✅ 正解 - 生のボディを使用する
app.use('/webhook', express.raw({ type: 'application/json' }));
app.post('/webhook', (req, res) => {
const signature = crypto
.createHmac('sha256', secret)
.update(req.body) // 生のバッファ
.digest('hex');
});Was this page helpful?Suggest editsRaise issue