階段 4 · 資料放哪、怎麼串

Webhook

外部服務在事件發生時主動通知你的系統。

先用一句話理解

外部服務在事件發生時主動通知你的系統。

打個比方

像包裹送達時物流主動傳簡訊給你。

什麼時候會遇到

付款完成、訂閱取消、表單送出、第三方事件同步時。

再往深一點看

Webhook 是「反過來的 API 呼叫」:平常是你的程式主動去問外部服務,webhook 則是外部服務在某件事發生時,主動打一個 HTTP 請求到你預先提供的網址通知你。它的重點是事件驅動——你不必一直輪詢問「付款好了沒」,而是付款一好對方就自動通知你。因為這個網址是公開的,任何人都可能偽造請求,所以幾乎所有 webhook 都會附帶簽章讓你驗證來源真偽。

舉個例子

你串 Stripe 收款:使用者付款成功後,Stripe 自動打你的 /api/webhook 網址並帶上付款事件。你的後端要先用 Stripe 簽章驗證這是真的通知,確認無誤再把訂單標記為已付款、寄出收據。

常見誤解

  • - 沒有驗證 webhook 簽章,導致有人偽造「付款成功」通知就能騙到服務。
  • - 在 webhook 裡做很慢的工作卻不快點回應 200,對方判定逾時就重送,造成重複處理。
  • - 忘了同一事件可能被重送,沒做冪等處理(idempotency),同一筆付款被記兩次。

相關名詞

相關服務

StripeGitHubResend

相關工具