Webhook
中级通用
Webhook 是一种事件通知方式:你把接收地址交给另一个系统,对方在指定事件发生后,向这个地址发送 HTTP 请求。它解决了反复查询事件结果的问题,比如支付平台在订单付款后通知你的网站更新状态。
你可能会说:「用户付款后,我想让网站自己收到支付结果并更新订单,不用一直去查支付平台。」
动手看看订单付款后自动更新状态
1
网站先把接收地址交给支付平台,并约定付款成功时通知它;订单此时还是待支付。
要点Webhook 是怎样把事件送到你这里的?
- 1
先约定事件和接收地址
你在发送方配置想接收的事件,以及自己后端提供的接收地址。比如订阅“付款成功”,支付平台发生这件事后,就知道该把消息发到哪里。
- 2
发送方主动发来请求
事件发生后,发送方通常会向接收地址发送 HTTP 请求,并在请求中带上事件数据。你的后端收到后,可以根据订单编号查找订单,再处理这次状态变化。
- 3
接收成功不等于只会收到一次
网络超时或处理失败可能让发送方重试,所以同一事件可能到达多次。你可以先验证请求确实来自发送方,再用事件编号或业务状态避免重复更新;具体怎么验证,要看对方提供的机制。
容易混淆的地方
普通 API 调用通常是你需要数据时主动请求;Webhook 则是你提供接收地址,等对方在事件发生后主动通知你。它也不同于 WebSocket:Webhook 适合系统之间传递事件,不负责维持浏览器页面与服务器的实时连接。收到通知后,页面若要立即变化,还需要另行更新页面数据。
什么时候用
适合用
- 支付平台确认付款后,通知你的后端更新订单,并触发发货流程。
- 代码仓库出现新的提交后,通知你的服务启动构建或测试。
- 表单服务收到新线索后,通知你的后台创建待跟进记录。
不适合用
- 用户点开订单页才需要看最新状态时,直接调用查询 API 就够了,不必为这次读取配置 Webhook。
- 聊天页面需要持续显示新消息时,用 WebSocket 等实时通信方案更合适;Webhook 不负责连接用户的浏览器。
- 同一个页面里切换标签页或展开面板时,用前端状态处理即可,没有跨系统事件要通知。
练一练选一个答案,看看解释
你的网站接入了外部支付平台。用户付款后,网站需要更新订单;同一笔付款的通知可能因超时被重复发送。你会让 AI Agent 怎么实现?
让 AI 帮你做复制给 AI Agent 直接用
请为网站接入支付成功 Webhook:提供后端接收端点,按支付平台提供的方式验证请求来源,根据事件中的订单编号更新状态,并处理重复通知。先说明需要我提供哪些平台配置,再给出实现和测试思路。