如何对前端的 Stripe PaymentIntent 成功 webhook 做出反应

kon*_*tur 7 webhooks stripe-payments

我正在使用 PaymentIntent 将 web 应用程序更新为 Stripes SCA 就绪流。

到目前为止,我已经工作(在我的本地测试服务器上):

  1. 在前端生成意图并将秘密传递给表单
  2. 使用元素将卡片收集到
  3. 使用 handleCardPayment 创建费用

现在这是我不确定的部分。handleCardPayment 响应似乎都表示一个succeeded事件,但文档警告不要使用此响应,而是等待 Webhook 响应,然后才完成客户订单。

第五步:异步完成客户的订单

您可以使用 Stripe.js 返回的 PaymentIntent 在客户端完成付款时向您的客户提供即时反馈。但是,您的集成不应尝试在客户端处理订单履行,因为客户可能会在付款完成后但在履行过程开始之前离开页面。相反,您需要处理异步事件,以便在付款成功时收到通知并推动履行。文档

到目前为止一切顺利,我已经设置了测试 webhook 并通过 ngrok 进行隧道传输,我实际上可以从 Stripe webhook 接收 paymentIntent。

现在,我的问题就出现在 Stripe 文档结束的地方。从按下“支付”按钮的角度来看,我应该如何处理 UI,以及如何在前端检测到 Webhook 已被触发?

我想知道我是否应该轮询我自己的服务器,它反过来检索一个数据库结果,指示是否已收到此订单的 webhook?或者从技术上和从用户体验的角度来看,处理这个问题的合理方法是什么?

任何指针?

小智 6

我刚刚实现了这个,我决定轮询我自己的服务器以获取更新并要求用户等待。Webhook 将我们的内部表示标记为“付费”,因此我们不需要轮询 Stripe。如果 Webhook 在 30 秒内没有出现,我们会告诉用户可以离开页面,并且我们会通过电子邮件向他们发送结果。

从技术上讲,这些 Webhooks 可能需要长达 7 天的时间才能进入,因此 Stripe 不希望您让用户等待。实际上,它几乎总是在 5 秒内到达,我宁愿让用户等待并在同一会话中看到最终确认。