【问题标题】:Stripe CLI triggering random events instead of payment_intent.succeededStripe CLI 触发随机事件而不是 payment_intent.succeeded
【发布时间】:2020-10-25 00:08:46
【问题描述】:

这是我第一次使用 Stripe 进行测试,我无法解决我遇到的这个问题。我从this link 复制了 Node/Express 的代码(我只是将端口更改为 3000 并删除了 bodyParser,因为我已经使用 app.use(bodyParser.json()) 进行了设置)并且我成功登录到我的帐号输入

stripe login

在 CLI 中。 之后,我设置了我的端点以使用 webhook 监听

stripe listen --forward-to http://localhost:3000/webhook

在一切似乎都设置好之后,我开始测试,但我注意到 Stripe CLI 中有一些随机行为:每次我尝试触发支付意图时都会成功

stripe trigger payment_intent.succeeded

我得到了不同的结果,如下图:

2020-07-04 14:25:32   --> charge.succeeded [evt_1H1AQxH9PqQvGDtCJ7ShdAQE]
2020-07-04 14:25:32  <--  [400] POST http://localhost:3000/webhook [evt_1H1AQxH9PqQvGDtCJ7ShdAQE]
2020-07-04 14:25:34   --> payment_intent.succeeded [evt_1H1AQzH9PqQvGDtCl8ajm7po]
2020-07-04 14:25:34  <--  [200] POST http://localhost:3000/webhook [evt_1H1AQzH9PqQvGDtCl8ajm7po]
2020-07-04 14:25:34   --> payment_intent.created [evt_1H1AR0H9PqQvGDtC1xty9l6R]
2020-07-04 14:25:34  <--  [400] POST http://localhost:3000/webhook [evt_1H1AR0H9PqQvGDtC1xty9l6R]
2020-07-04 14:28:46   --> charge.succeeded [evt_1H1AU5H9PqQvGDtCHJ95Jb7H]
2020-07-04 14:28:46  <--  [400] POST http://localhost:3000/webhook [evt_1H1AU5H9PqQvGDtCHJ95Jb7H]

我从未触发charge.succeeded 或payment_intent.created,但尽管如此,它们还是出现在CLI 中(作为400 错误),而不是正常的200 payment_intent.succeeded。我尝试在控制台记录上面 Stripe Docs 示例中 switch 语句使用的 event.type,它确实表明事件是 charge.succeeded 和 payment_intent.created。

现在我的问题是:这是某种尚未修复的错误还是我做错了什么?也许有人可以帮我解决这个问题吗?

提前感谢您的宝贵时间:)

【问题讨论】:

    标签: express stripe-payments


    【解决方案1】:

    来自 Stripe 的一位开发者的回答:


    当您使用 Stripe CLI 触发事件时,它会在底层创建所有必要的 API 方法来触发该事件。在这种情况下,它正在创建并确认一个 PaymentIntent。

    要获得结果 payment_intent.succeeded 事件,您需要创建一个 PaymentIntent(payment_intent.created 将为此触发)。然后您需要确认付款意图并实际收取付款(导致:charge.created、charge.succeeded 和 payment_intent.succeeded)。

    对于 checkout.session.completed 等其他事件类型,将触发许多其他事件,这些事件代表获得有效 checkout.session.completed 事件的先决条件。

    如果您只想在本地转发 payment_intent.succeeded 事件(并且在生产中只为您的 webhook 端点启用选定的事件类型是个好主意),那么您可能需要将 -e 参数传递给 @ 987654322@ 使用逗号分隔的您要侦听的特定事件列表。在这种情况下,您可以将您的监听命令更新为:

    stripe listen --forward-to http://localhost:3000/webhook -e payment_intent.succeeded
    

    希望对您有所帮助。如果您遇到任何问题,请随时通过 support.stripe.com/contact 或在 Freenode 上的#stripe 频道中的 IRC 与团队联系。


    我希望它能像它帮助我一样帮助别人!

    【讨论】:

    • 这不行,照样做。
    【解决方案2】:

    我遇到了这个错误,我的基于net core5的web api无法解决,但是当降级到net core 3.1以及MVC时,一切都解决了。

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    【解决方案3】:

    我也有同样的经历。相同的代码,相同的监听器运行可以触发不同的 webhook。 当我从 Stripe 的仪表板创建或取消用户订阅时,它根本不会触发 webhook,有时会触发一些发票 webhook,有时会触发多达 10 个 webhook,包括我期望的创建/取消订阅 webhook。

    天哪,条纹可能非常令人沮丧。实施过程的每一步都有错误。我在他们的 github 上报告了一些,但没有得到任何回应。有些我什至没有报告。

    我刚刚下载了新的条带 CLI .deb 包。即使是输入品牌名称这样简单的事情,他们也做错了。它的拼写是“tripe CLI 实用程序”。

    无论如何,我只能建议您确保拥有所有最新的库。他们经常将库升级到较新的版本。

    确保您的条带 CLI 是最新的。与节点服务器上的 stripe 相同。还在他们的 github 上打开一张新票。例如,与 Google 不同,我认为 Stripe 没有任何工程师在 SO 上监控新的 Stripe 相关问题。

    【讨论】:

    • 实际上,我从 Reddit 上的一位官方 Stripe 开发者那里得到了对上述相同问题的回答,所以我将把它留在这里,供任何发现此问题的人使用。
    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2020-01-21
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多