You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stripe Webhook应用错误:验证失败时应返回何种状态码?

Webhook处理错误时的状态码选择

在处理checkout.session.completed这类Webhook时,核心原则是只要成功接收到Webhook请求,就返回200状态码,不管后续业务逻辑是否出错。

原因很直接:Webhook发送方会根据返回的状态码判断请求是否送达。如果返回400或500,发送方会判定请求失败,进而反复重试该Webhook,这会导致服务重复处理同一事件,引发数据重复、逻辑冲突等问题。

哪怕验证organisationId时发现组织不存在,也应该先返回200确认接收,再通过内部错误日志、告警通知等方式处理这个业务异常。

对应你的代码,正确写法如下:

if (!organisation) {
  // 记录错误日志,便于后续排查
  console.error(`Checkout session ${session.id} 存在无效的organisationId: ${metadata.organisationId}`);
  // 返回200表示已成功接收请求
  return res.status(200).send({ code: 'ORGANISATION_NOT_FOUND', message: '指定的组织不存在' });
}

返回的响应内容可以包含错误信息用于排查,但状态码必须设为200,避免触发重复重试。

内容的提问来源于stack exchange,提问作者J.Do

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:39:55