跳到主要内容

1 篇博文 含有标签「Webhook」

查看所有标签

Stripe Webhook 不是一次回调:Tuziyo 如何处理幂等与订阅状态同步

· 阅读需 12 分钟
Gwynn
独立开发者 · wawov 作者

最近在给 Tuziyo 接入 Stripe 订阅支付。

最开始的目标看起来很简单:用户选择套餐,跳转到 Stripe Checkout,支付成功后升级会员并发放 Credits。但真正开始处理续费、支付失败、取消订阅和年度套餐后,我发现支付成功页面只是整个流程中最轻的一部分。

真正决定这套系统能不能稳定运行的,是 Webhook。

Stripe 的事件可能延迟、乱序,也可能因为超时被重复投递。如果把每一次 Webhook 都当成只会执行一次的普通回调,最直接的后果就是重复发放 Credits,或者 Stripe 和本地数据库中的订阅状态不一致。

这篇文章记录 Tuziyo 当前订阅了哪些 Stripe 事件、每个事件做了什么,以及我如何用 Cloudflare Workers 和 D1 处理 Webhook 幂等与订阅状态同步。