Guide
Webhookを処理する
Webhookは少なくとも一回届く前提で、署名を検証し、event IDで重複を除外してから処理します。
Delivery flow
- 1受信
raw bodyと署名ヘッダーを保持
- 2検証
時刻とHMAC署名を検証
- 3重複排除
evt_preview_01を一意に記録
- 4処理
Jobを再取得して次工程へ
Verify the signature
Pseudo verification
const expected = hmacSha256(webhookSecret, timestamp + "." + rawBody);if (!timingSafeEqual(signature, expected)) { return new Response("invalid signature", { status: 401 });}JSON化する前のbodyを使う
署名対象はraw bodyです。parse後に再構築したJSONで検証しません。
Retries and duplicates
| 状況 | 期待する処理 |
|---|---|
2xx | 配信完了 |
408 / 429 / 5xx | 指数バックオフで再送 |
同じevent ID | 成功済みなら副作用を再実行しない |
順序が前後 | Jobを再取得して現在状態を正本にする |

