Luc*_*Dev 3 express stripe-payments stripe-cli
这是我第一次使用 Stripe 进行测试,我无法解决我遇到的这个问题。我从这个链接复制了 Node/Express 的代码(我只是将端口更改为 3000 并删除了 bodyParser,因为我已经使用 app.use(bodyParser.json()) 对其进行了设置)并且我成功登录了我的帐户打字
stripe login
Run Code Online (Sandbox Code Playgroud)
在 CLI 中。在那之后,我设置了我的端点来监听 webhook
stripe listen --forward-to http://localhost:3000/webhook
Run Code Online (Sandbox Code Playgroud)
一切似乎都设置好后,我开始测试,但我注意到 Stripe CLI 中的一些随机行为:每次我尝试使用
stripe trigger payment_intent.succeeded
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果,如下所示:
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]
Run Code Online (Sandbox Code Playgroud)
我从未触发charge.succeeded 或payment_intent.created,但尽管如此,它们还是出现在CLI 中(作为400 错误)而不是正常的200 payment_intent.succeeded。我尝试控制台记录上面 Stripe Docs 示例中 switch 语句使用的 event.type,它确实显示事件是 charge.succeeded 和 payment_intent.created。
现在我的问题是:这是某种尚未修复的错误还是我做错了什么?也许有人可以帮我解决这个问题吗?
在此先感谢您的时间 :)
来自 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参数传递给以stripe listen逗号分隔的特定列表你想听的事件。在这种情况下,您可以将您的监听命令更新为:
stripe listen --forward-to http://localhost:3000/webhook -e payment_intent.succeeded
Run Code Online (Sandbox Code Playgroud)
希望有帮助。如果您遇到任何问题,请随时通过 support.stripe.com/contact 或在 Freenode 上的 #stripe 频道中的 IRC 与团队联系。
我希望它对某人的帮助和对我的帮助一样多!
Joh*_*Doe -2
我也有同样的经历。相同的代码和运行的相同侦听器可以触发不同的 webhook。当我从 Stripe 的仪表板创建或取消用户订阅时,它根本不会触发任何 Webhook,有时触发一些发票 Webhook,有时触发一系列最多 10 个 Webhook,包括我期望的创建/取消订阅 Webhook。
天哪,条纹可能会非常令人沮丧。实施过程中的每一步都存在错误。有些我已经在他们的github上报告过,但没有得到任何回应。有些我什至没有报告。
我刚刚下载了新的 stripe CLI .deb 包。即使是输入品牌名称这样简单的事情,他们也做错了。它的拼写是“tripe CLI utility”。
无论如何,我只能建议您确保拥有所有最新的库。他们经常将库升级到新版本。
确保您的 stripe CLI 是最新的。stripe与您的节点服务器上相同。还可以在他们的 github 上开一张新票。例如,与 Google 不同,我认为 Stripe 没有任何工程师来监控 SO 上与 Stripe 相关的新问题。
| 归档时间: |
|
| 查看次数: |
1064 次 |
| 最近记录: |