Express 条带CLI触发随机事件而不是支付意图。成功

Express 条带CLI触发随机事件而不是支付意图。成功,express,stripe-payments,stripe-cli,Express,Stripe Payments,Stripe Cli,这是我第一次使用Stripe进行测试,我无法对我遇到的这个问题保持清醒的头脑。我从中复制了Node/Express的代码(我刚刚将端口更改为3000并删除了bodyParser,因为我已经用app.use(bodyParser.json())设置了它),并且成功登录到我的帐户 stripe login 在CLI中。 之后,我设置了webhook监听的端点 stripe listen --forward-to http://localhost:3000/webhook 在一切似乎都设置好之后,

这是我第一次使用Stripe进行测试,我无法对我遇到的这个问题保持清醒的头脑。我从中复制了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]
2020-07-04 14:25:32-->充电成功[evt_1h1aqxh9pqvgdtcj7shdaqe]
2020-07-04 14:25:32付款意向成功[evt_1h1aqzh9pqvgdtcl8ajm7po]
2020-07-04 14:25:34已创建付款意向[evt_1H1AR0H9PqQvGDtC1xty9l6R]
2020-07-04 14:25:34充电成功[evt_1H1AU5H9PqQvGDtCHJ95Jb7H]

2020-07-04 14:28:46我也有同样的经历。相同的代码和运行的相同侦听器可以触发不同的Webhook。 当我从Stripe的仪表板创建或取消用户订阅时,它根本不会触发webhook,有时是一些发票webhook,有时是一系列多达10个webhook,包括我期望的创建/取消订阅webhook

天哪,条纹会让人很沮丧。在实施过程的每一步都有缺陷。我已经报道了他们的github,但没有得到任何回应。有些我甚至没有报告

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

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


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

Stripe的开发人员回答:


当您使用Stripe CLI触发事件时,它会在后台生成所有必要的API方法以触发该事件。在本例中,它正在创建并确认PaymentIntent

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

对于其他事件类型(如checkout.session.completed),将触发许多其他事件,这些事件表示获取有效checkout.session.completed事件所必需的对象

如果您只想在本地转发payment_intent.successed事件(在生产过程中最好只为您的webhook端点启用选定的事件类型),那么您可能需要将
-e
参数传递到
stripe listen
,其中包含要侦听的特定事件的逗号分隔列表。在这种情况下,您可以将listen命令更新为:

stripe listen --forward-to http://localhost:3000/webhook -e payment_intent.succeeded
希望有帮助。如果遇到任何问题,请访问support.stripe.com/contact或通过Freenode上的#stripe频道的IRC与团队联系



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

事实上,我从Reddit上的一个官方Stripe开发者那里得到了上述问题的答案,所以我将把它留给任何发现这个的人。