【问题标题】:Retry events in stripe after enabling the webhook启用 webhook 后在条带中重试事件
【发布时间】:2022-07-29 14:51:53
【问题描述】:

我已经实现了一个支付模块,其中有一个 Stripe webhook 用于监听和处理 Stripe 触发的事件。一旦我们服务器上的 webhook 处于 Listening 状态,一切正常。有时我们的服务器可能存在网络或服务问题,导致将 webhook 的状态设置为disabled。通过停止和启动服务重新激活服务器上的 webhook 后,我想自动获取所有未收到的事件。

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

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

你能帮我解决一下吗?

【问题讨论】:

  • 您必须与 Stripe 核实一下,他们是否提供这样的重新发送失败的 webhook ...
  • Stripe 对于失败的 webhook 事件 [1] 确实具有重试逻辑。 livemode 和 testmode 的行为不同。我建议通读该链接,因为它解释了您在交付尝试和重试方面的预期。如果事件超过重试期,还有一个 API 可以查询错过的事件。 [1]stripe.com/docs/webhooks/best-practices#retry-logic

标签: php stripe-payments


【解决方案1】:

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

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

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

从我一周的实验中,至少在 “测试”模式下使用 Stripe Checkout,我发现 Stripe 不会发送大部分时间对我的 webhook 进行任何重试,即使我故意返回 400 http 响应 或超时响应 200 http 响应条纹

而且,我为 4 种事件类型“payment_intent.created”、“payment_intent.succeeded”、“charge.succeeded”和“checkout.session”一一返回了 400 个 http 响应 .completed",然后等待 Stripe 重试。最后,Stripe所有 4 种事件类型发送了 "setup_intent.created"

实际上,我向 Stripe 支持询问了我上面提到的所有 花费超过 3 或 4 小时,但他们甚至对 Stripe 表示可怕的支持进食时间。因此,您最好自己解决有关 Stripe 的任何问题,因为您比他们更了解 Stripe。或者只是使用其他支付服务。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 2022-10-18
    • 2018-02-10
    • 2020-07-18
    • 2021-06-05
    • 2019-04-14
    • 2015-02-04
    • 2016-10-10
    • 2022-01-13
    相关资源
    最近更新 更多