【问题标题】:How to make Stripe manually resend an event to webhook如何让 Stripe 手动将事件重新发送到 webhook
【发布时间】:2019-06-18 08:23:56
【问题描述】:

我一直在使用 Stripe API,并且它已经成功调用了我的 Webhook 大约一年了。

但是昨天第一次出现问题。 webhook 没有成功完成其预期的操作,但还是返回了 200 状态码,因此 Stripe 没有重试。

我现在已经修复了 Webhook 上的错误,但不知道如何让 Stripe 为这个特定事件重复 webhook 调用。我可以检索事件,但没有重新发送的按钮。怎么做?

【问题讨论】:

  • 正如其他人指出的那样,您无法让 Stripe 重新向您发送 webhook 成功响应的事件,但是由于您可以在 Stripe 中提取事件并显示已交付的 JSON 有效负载,您可以使用 CURL 或任何其他工具使用相同的 JSON 有效负载向您的 webhook 端点发出请求。

标签: api stripe-payments


【解决方案1】:

既然返回了 200,那么检索该事件将是您最好的选择。目前无法手动重试(https://stripe.com/docs/webhooks#responding-to-a-webhook):

在实时模式下,我们将尝试在最多三天内以指数级回退方式交付您的 webhook。在测试模式下,我们会在几个小时内重试 3 次。在此之后无法手动重试 Webhook,但您可以查询事件以将您的数据与任何错过的事件相协调。

通过仪表板查看有关特定事件的信息时,您可以通过单击 Webhook 详细信息部分中的端点 URL 来查看我们尝试将事件发送到端点的次数。这将向您显示我们从您的端点收到的最新响应,以及所有尝试过的 webhook 的列表以及我们收到的相应 HTTP 状态代码。

【讨论】:

  • 这不再是真的;现在可以在 Stripe 仪表板中在返回 200 时进行手动重试(参见下面的屏幕截图)。
【解决方案2】:

可以手动重新发送 webhook 事件。

在 Stripe 控制面板中,选择 Developers > Webhooks,然后找到您正在使用的 webhook 并按下“重新发送”小图标。

请注意,对于成功的事件,您仍然可以通过单击省略号然后“重新发送”来重新发送它们(这是一项较新的功能)。

【讨论】:

  • 是的,这适用于失败的调用,但不适用于返回 200 状态代码的调用。
  • 它有效,我最近也这样做了。现在我面临一个新问题,显示的 webhook 尝试不会超过 15 天前。
  • @Sygmoral 限制不再存在 - 您现在可以重新发送返回 200 状态代码的事件。
【解决方案3】:

Stripe cli 允许 stripe events resend IDOFTHEEVENT --live --webhook-endpoint=IDOFTHEWEBHOOK(将 IDOFTHEEVENT 替换为事件的 id,将 IDOFTHEWEBHOOK 替换为 webhook 的 id,当您在 webhook 的页面上时,您可以在 URL 中找到它)。

否则,您可以复制/粘贴发送到 webhook 的事件,然后使用 postman 等工具将其发送到您的端点。

【讨论】:

  • 即使事件超过 15 天也有效!也就是说,请确保使用密钥stripe login --api-key sk_live_... 对 CLI 进行身份验证,否则您将收到如下权限错误:"The provided key 'rk_live_...' does not have the required permissions for this endpoint on account 'acct_...'. Having the 'rak_webhook_write' permission would allow this request to continue."
  • 请注意,如果您在测试模式下测试事件,则需要删除 --live。并使用在测试模式下生成的 webhook 和事件的 ID。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 2019-08-05
  • 2021-09-30
  • 1970-01-01
  • 2019-01-17
  • 2020-01-21
  • 2015-10-24
  • 2019-04-14
相关资源
最近更新 更多