実際に届くWEBHOOK: HMAC、リトライ、冪等性

すべての決済Webhook統合が間違える3つのこと。Baynoyが出荷する契約とその理由。

Developers·2026-04-01·6 分で読める
実際に届くWebhook: HMAC、リトライ、冪等性

すべての決済Webhookには3つの保証が必要: 真正性(リクエストが本当に我々から来た)、at-least-once配信(イベントが静かに失われない)、冪等性(再配信がDBを二重課金しない)。

真正性: すべてのBaynoy WebhookはX-Baynoy-Signatureヘッダーを送信します — エンドポイントのシークレットでsha256(timestamp + '.' + body)。タイムスタンプが5分以上古い(リプレイ防御)、または署名が定数時間比較で一致しない場合は拒否。Stripeが使用する正確な形式に従うので、既存のStripe検証ミドルウェアが変更なしで適用されます。

At-least-once: 1m、5m、30m、2h、12h、24hで指数バックオフでリトライ — 6回試行で上限。各試行はレスポンスステータスとともにbaynoy_webhook_deliveriesに行を書き込みます。ダッシュボードのreplay-from-UIボタンは同じdeliveryパイプラインに当たります; 特別なパスなし。

冪等性: すべてのイベントはevent.idを持つ(UUIDv7 — ソート可能、単調増加)。初回受信時に永続化し、unique constraintでDBレベルで重複を拒否。我々は再配信します。制約はあなたのセーフティネットです。

ミドルウェア3行で、単一の支払い通知も失わずに6時間のアウテージを乗り越えるWebhookハンドラーを手に入れます。

記事公開時にお知らせします。下から登録してください。