Webhook Payload 測試器

格式化 webhook JSON,產生測試簽章與標頭備忘。

輸入內容只在瀏覽器本機處理。 使用 Web Crypto 產生選填 HMAC-SHA256;顯示的 headers 只是本機測試慣例。

簽章採自訂 x-gogo-* 本機測試慣例,並非任何服務商格式。

使用說明

格式化 webhook JSON,產生測試簽章與標頭備忘。

串接 Stripe 線上金流、GitHub 開源通知或 Slack 機器人時,Webhook 格式總是出錯嗎?本工具協助您快速驗證 JSON Webhook 結構、排版縮排美化,並提供 HMAC-SHA256 簽名試算,讓跨系統通知串接精準無誤!

💡 3 步驟快速上手

① 貼上 Webhook JSON 內文

將第三方平台發送的原始 Webhook Payload 貼入編輯框中。

② 自動驗證語法與格式美化

系統一秒偵測 JSON 語法錯誤並提供階層樹狀縮排與欄位高亮。

③ 計算 HMAC 簽名驗證結果

輸入 Secret 金鑰即可模擬計算 SHA-256 簽名,確保資料傳輸未被竄改。

適用情境

適合建立文件、測試樣本與客服排查資料。

計算或處理方式

使用 Web Crypto 產生選填 HMAC-SHA256;顯示的 headers 只是本機測試慣例。

具體範例

範例:貼上付款完成事件並產生測試 header。

限制與資料處理

顯示的 headers 是本機測試慣例,不代表任何 webhook 供應商的正式驗證格式。

不會。Webhook Payload 測試器只在瀏覽器內處理;請勿貼上正式密鑰或未遮罩的個人資料。

Webhook 非同步架構、HMAC 簽名驗證與冪等性設計指南

一、Webhook 事件驅動(Event-Driven)通訊架構

不同於傳統客戶端不斷發送輪詢(Polling)請求以獲取更新,Webhook 採用「反向 API」模式:當外部系統(如 Stripe 金流付款成功、GitHub 代碼推送、Slack 機器人通知)發生特定事件時,伺服器會主動向預先註冊的目標 URL 發送 HTTP POST 請求並附帶 JSON 事件酬載(Payload)。

這種非同步事件驅動機制大幅降低了伺服器頻寬負擔,但在分散式環境中,開發者必須處理「網路抖動重試」、「重複投遞」與「非依序到達」等邊界狀況。

二、HMAC-SHA256 簽名防偽與防重放攻擊(Replay Attack)

為防止惡意第三方偽造 Webhook 事件,主流服務皆採用 HMAC 密鑰簽名機制:發送方將「時間戳記 + 原始 Payload 內容」使用共享密鑰進行 HMAC-SHA256 計算,並置於 `X-Signature` 或 `Stripe-Signature` 標頭中。

接收端伺服器在解析 Payload 前,必須先使用相同密鑰計算簽名進行比對,並驗證時間戳記是否在容許窗口內(如 5 分鐘內),確保資料既未被竄改,也未遭受重放攻擊。

三、冪等性(Idempotency)與指數退避重試策略

因網路逾時而重試發送的 Webhook 事件可能被重複接收多次。健全的接收端架構必須以事件專屬的 `event_id` 作為唯一鍵,在資料庫中記錄處理狀態。若遇到已處理過的事件,應直接回傳 HTTP 200 OK,杜絕重複扣款或重複發貨等嚴重業務錯誤。

權威資料來源與參考規範

  • IETF RFC 2104:HMAC: Keyed-Hashing for Message Authentication
  • Standard Webhooks Specification
  • OWASP Webhook Security Best Practices

常見問題

Webhook Payload 測試器接受什麼輸入?

輸入 JSON payload 與選填測試密鑰。

Webhook Payload 測試器如何產生結果?

工具格式化 JSON,並可用 Web Crypto 產生本機 HMAC-SHA256 測試簽章。

Webhook Payload 測試器有哪些限制?

顯示的 headers 是本機測試慣例,不代表任何 webhook 供應商的正式驗證格式。

Webhook Payload 測試器會上傳資料嗎?

不會。Webhook Payload 測試器只在瀏覽器內處理;請勿貼上正式密鑰或未遮罩的個人資料。