启用 webhook 后重试条带中的事件

问题描述 投票:0回答:2

我实现了一个支付模块,其中有一个 Stripe webhook 用于监听和处理 Stripe 触发的事件。一旦我们服务器上的 webhook 处于

Listening
状态,一切就正常了。有时我们的服务器可能存在网络或服务问题,导致将 webhook 的状态设置为
disabled
。通过停止和启动其服务来重新激活服务器上的 Webhook 后,我想获取所有未自动收到的事件。

有关更多信息,我应该说我启动了条带监听服务,如下所示:

nohup ./stripe listen --forward-to https://example.com/stripe/webhook & 

你能帮我解决一下吗?

php stripe-payments webhooks api-retries stripe-events
2个回答
1
投票

我真的很怀疑如果有时,你的服务器可能有网络或服务问题,导致将webhook的状态设置为禁用

我认为问题是因为Stripe本身而不是因为你。

当您的 webhook 返回 400 http 响应 或超时响应 200 http 响应Stripe 某些特定事件类型“ payment_intent.created ”时,您似乎希望您的 webhook 从 Stripe 重试, “ payment_intent.succeeded”,“ charge.succeeded”,“ checkout.session.completed”

从我为期一周的实验来看,至少在 “测试”模式下使用 Stripe Checkout,我发现 Stripe 不会向我的 webhook 发送任何重试 大部分时间即使我有意返回 400 http 响应 或响应超时 200 http 响应Stripe

并且,我为4个事件类型“ payment_intent.created”、“ payment_intent.succeeded”、“ charge.succeeded”和“ checkout.session.completed”一一返回了400个http响应,然后等待从Stripe重试。最后,Stripe所有 4 种事件类型发送了 “setup_intent.created”。因此,您的 Webhook 将能够获取仅一种事件类型“setup_intent.created”作为重试。

实际上,我向

Stripe支持询问了我上面提到的所有内容花费了超过3或4个小时,但他们甚至对Stripe不太了解,这意味着可怕的支持吃饭时间。所以,你最好自己解决有关 Stripe 的任何问题,因为你比他们更了解 Stripe。或者只是使用其他支付服务。


0
投票
截至目前(2024-02-23)

文档关于重试说:

事件传递行为

本节帮助您了解有关 Stripe 如何将事件发送到 Webhook 端点的不同行为。

重试行为

在实时模式下,Stripe 会尝试将给定事件传送到您的 Webhook 端点,持续时间长达 3 天,并呈指数回退。在仪表板的“事件”部分中,您可以查看下次重试的时间。

在测试模式下,Stripe 在几个小时内重试 3 次。此后,您可以使用仪表板的事件部分手动重试将各个事件传输到 Webhook 端点。您还可以查询错过的事件以协调任何时间段内的数据。

即使您手动重试将各个 Webhook 事件传输到给定端点并且尝试成功,自动重试仍会继续。

© www.soinside.com 2019 - 2024. All rights reserved.