只改一个 URL · 无需 SDK · Apache 2.0 验签库

Stripe Webhook 保险
为 AI SaaS 准备。

你的处理程序调用一次大模型要 45 秒。Stripe 约 20 秒就超时并重试。你的客户被重复履约:发货、入账或发邮件,都会发生两次。

AnyHook 位于发送方和你的处理程序之间。保存、重试、记录和重放一切,不用改动你的处理程序代码。

Free每月 10,000 个事件
$20Pro · 50,000 个事件
$90Scale · 250,000
Stripe Webhook
生产环境
失败20.04s

evt_3Pk2X3b1Lcx

请求超时。Stripe 会按退避策略重试,最多持续 3 天。

~ stripe-cli
$ stripe webhooks update we_1234
    --url in.anyhook.net/u/app
✓ Endpoint updated
✓ Delivering to AnyHook
anyhook · 已投递
200 OK

evt_3Pk2X3b1Lcx

第 1 次尝试 · 已应答发送方 · 处理程序 47.2 秒

0丢弃
·
100%已投递
handler.ts
// before
await llm.run(evt); /* 45s */

// after
return Response.json({ ok: true });
示例

已避免的发送方重试

127

01

三种吃掉你收入的超时。

StripeWebhook
20s

大模型调用超过约 20 秒 → Stripe 判定失败并重试 → 处理程序运行两次 → 重复履约。

/v1/webhook_endpoints · status: failed

Slack事件
3s

机器人必须在 3 秒内回复。AI 智能体要 30 秒 → Slack 重试 3 次 → 你的机器人最多可能回复 4 次。

ShopifyWebhook
5s

应答晚了就算失败:4 小时内重试 8 次,之后反复失败会删除订阅。订单再也不会进来。

02

选一个适合你现阶段的套餐。

Pro

推荐
$20/月

面向生产环境的 Webhook 流量。比你自己花 2 周搭建重试机制更便宜。

  • 每月 50,000 个事件
  • 10 个 App · 30 天内可重放,保留 1 年
  • 5 次投递尝试 · 投递超时 120 秒
  • 超额按每 1,000 个事件 $0.15 计费,不会悄悄丢弃
  • 邮件、Slack 或 Discord 告警 · 每次投递都带签名

一次投递是否真的来自我们,你不必只听我们说。签名验证库和 MCP 服务器采用 Apache 2.0 许可:github.com/gba3124/anyhook-mcp。中继服务本身不开源。

03

三步。三十秒。

  1. 第 1 步

    注册。拿到你的接收 URL。

    用邮箱或 Google 账号注册。AnyHook 会给你一个类似 https://in.anyhook.net/you/app 的接收 URL。Free 套餐无需信用卡。

  2. 第 2 步

    在 Stripe(或其他平台)里换掉 URL。

    打开 Stripe Dashboard → Webhooks → 编辑端点 → 粘贴 AnyHook URL。GitHub、Shopify、Slack 的 Events API 和 Paddle 也是同样的改法。你的处理程序代码完全不用动。

  3. 第 3 步

    看着事件到达。任何事件都能重放。

    AnyHook 保存事件,约 1 秒向发送方返回 200,再转发给你的处理程序并重试(至少一次;按 X-AnyHook-Delivery 去重)。失败的事件留在控制台里,配有一键 Replay 按钮。

04

只适合一种具体情况。

适合

  • 有真实生产流量的独立 SaaS 或 B2B 产品
  • 用 Stripe 收费的产品(Checkout、Subscriptions、Connect)
  • 处理程序要做实打实的 AI 工作:大模型调用、RAG、智能体运行
  • 自己手写、但不完全放心的重试逻辑
  • 你能在平台的管理后台里换掉一个 URL

不适合

  • 还没有收入:Webhook 可靠性还不是你最大的风险
  • 已经在生产环境中使用 Inngest / Hookdeck / Svix
  • 需要工作流引擎(持久化函数、调度):用 Inngest
  • 企业私有化部署,且有严格的禁止流量出云策略
  • 实时事件流场景(Kafka、WebSocket、SSE)
05

老实回答。

为什么不直接用 Inngest 或 Hookdeck?

如果你有工程人力去安装 SDK、把处理程序重写成持久化函数,Inngest 很好。AnyHook 适合想在不改变处理程序结构的前提下解决问题的团队:改一个 Webhook URL,保留你现有的代码。

Free 套餐真的免费吗?永久免费?

是的。每月 10,000 个事件(每天上限 1,000 个),1 个 App,无需信用卡。我们让它大到足够业余项目上线,又小到生产流量自然会升级。没有套路,也不会过期。

不是 Stripe 的 Webhook 呢?

GitHub、Shopify、Slack 的 Events API、Paddle、Linear、Clerk,都可以用同样的换 URL 方式。签名验证方式会根据传入的请求头自动识别。

AnyHook 开源吗?

部分开源,值得说清楚是哪些部分。签名验证库和 MCP 服务器以 Apache 2.0 许可发布在 github.com/gba3124/anyhook-mcp,所以你可以验证我们签名的每次投递,既不用信任我们,也不用依赖我们。负责接收、保存和重试的中继服务不开源,目前也没有可自托管的版本。

AnyHook 能看到我的 Webhook 请求体吗?

我们对它做静态加密存储(AES-256-GCM)。在你套餐的重放窗口内(3 / 30 / 90 天)可以重放;之后 Free 套餐的事件会被删除,付费套餐则保留只读加密归档(Pro 套餐 1 年,Scale 套餐 7 年)。密钥从不离开我们的基础设施。在 Pro 和 Scale 套餐上,你还可以开启零保留模式,事件投递后会从日志中清除它的请求头和请求体;加密归档会保留它的副本。

如果月中就超出了 Free 套餐怎么办?

在 Free 套餐上,超出月度配额的事件会被暂存在你的日志里,最多再暂存配额的 20%,升级后即可重放;超过这个数量或超过每日上限后,边缘节点会返回 429,不保存任何内容,你会收到一封邮件。升级到 Pro 会立即解除限制;Pro 套餐的超额费用是每 1,000 个事件 $0.15,还可以在控制台里设置可选的支出上限,超出上限的事件会被暂存,而不是计费。

30 秒。无需信用卡。

只改一个 URL。
今晚睡个好觉。

免费注册,拿到你的接收 URL,在 Stripe 里换上它。AnyHook 接住所有重试,你的处理程序照今天的方式继续运行。