跳到正文

Webhook

中级通用

Webhook 是一种事件通知方式:你把接收地址交给另一个系统,对方在指定事件发生后,向这个地址发送 HTTP 请求。它解决了反复查询事件结果的问题,比如支付平台在订单付款后通知你的网站更新状态。

你可能会说:「用户付款后,我想让网站自己收到支付结果并更新订单,不用一直去查支付平台。」

读之前建议先了解

动手看看

接收地址买家支付平台网站接收地址订单库待支付
1

网站先把接收地址交给支付平台,并约定付款成功时通知它;订单此时还是待支付。

要点

  1. 1

    先约定事件和接收地址

    你在发送方配置想接收的事件,以及自己后端提供的接收地址。比如订阅“付款成功”,支付平台发生这件事后,就知道该把消息发到哪里。

  2. 2

    发送方主动发来请求

    事件发生后,发送方通常会向接收地址发送 HTTP 请求,并在请求中带上事件数据。你的后端收到后,可以根据订单编号查找订单,再处理这次状态变化。

  3. 3

    接收成功不等于只会收到一次

    网络超时或处理失败可能让发送方重试,所以同一事件可能到达多次。你可以先验证请求确实来自发送方,再用事件编号或业务状态避免重复更新;具体怎么验证,要看对方提供的机制。

容易混淆的地方

普通 API 调用通常是你需要数据时主动请求;Webhook 则是你提供接收地址,等对方在事件发生后主动通知你。它也不同于 WebSocket:Webhook 适合系统之间传递事件,不负责维持浏览器页面与服务器的实时连接。收到通知后,页面若要立即变化,还需要另行更新页面数据。

什么时候用

适合用

  • 支付平台确认付款后,通知你的后端更新订单,并触发发货流程。
  • 代码仓库出现新的提交后,通知你的服务启动构建或测试。
  • 表单服务收到新线索后,通知你的后台创建待跟进记录。

不适合用

  • 用户点开订单页才需要看最新状态时,直接调用查询 API 就够了,不必为这次读取配置 Webhook。
  • 聊天页面需要持续显示新消息时,用 WebSocket 等实时通信方案更合适;Webhook 不负责连接用户的浏览器。
  • 同一个页面里切换标签页或展开面板时,用前端状态处理即可,没有跨系统事件要通知。

练一练

你的网站接入了外部支付平台。用户付款后,网站需要更新订单;同一笔付款的通知可能因超时被重复发送。你会让 AI Agent 怎么实现?

让 AI 帮你做

请为网站接入支付成功 Webhook:提供后端接收端点,按支付平台提供的方式验证请求来源,根据事件中的订单编号更新状态,并处理重复通知。先说明需要我提供哪些平台配置,再给出实现和测试思路。

接下来学什么