階段 4 · 資料放哪、怎麼串
Webhook
外部服務在事件發生時主動通知你的系統。
先用一句話理解
外部服務在事件發生時主動通知你的系統。
打個比方
像包裹送達時物流主動傳簡訊給你。
什麼時候會遇到
付款完成、訂閱取消、表單送出、第三方事件同步時。
再往深一點看
Webhook 是「反過來的 API 呼叫」:平常是你的程式主動去問外部服務,webhook 則是外部服務在某件事發生時,主動打一個 HTTP 請求到你預先提供的網址通知你。它的重點是事件驅動——你不必一直輪詢問「付款好了沒」,而是付款一好對方就自動通知你。因為這個網址是公開的,任何人都可能偽造請求,所以幾乎所有 webhook 都會附帶簽章讓你驗證來源真偽。
舉個例子
你串 Stripe 收款:使用者付款成功後,Stripe 自動打你的 /api/webhook 網址並帶上付款事件。你的後端要先用 Stripe 簽章驗證這是真的通知,確認無誤再把訂單標記為已付款、寄出收據。
常見誤解
- - 沒有驗證 webhook 簽章,導致有人偽造「付款成功」通知就能騙到服務。
- - 在 webhook 裡做很慢的工作卻不快點回應 200,對方判定逾時就重送,造成重複處理。
- - 忘了同一事件可能被重送,沒做冪等處理(idempotency),同一筆付款被記兩次。
相關名詞
相關服務
StripeGitHubResend