Stripe payments 如何防止在付款异步时更改购物车
下面的步骤说明了我在Stripe的PaymentIntent流中遇到的问题,但对于我所研究的其他支付网关,您可以提出类似的方法,其中成功支付的最终通知从支付网关异步发送到商户站点Stripe payments 如何防止在付款异步时更改购物车,stripe-payments,e-commerce,shopping-cart,Stripe Payments,E Commerce,Shopping Cart,下面的步骤说明了我在Stripe的PaymentIntent流中遇到的问题,但对于我所研究的其他支付网关,您可以提出类似的方法,其中成功支付的最终通知从支付网关异步发送到商户站点 客户在购物车中添加10件物品A,现在总共100美元 客户进入结帐页面。服务器为$100总额创建一个条带PaymentIntent,并将“客户端密码”发送到浏览器 客户的浏览器显示结帐页面,显示总共100美元,以及Stripe的付款表单 客户打开一个新标签,将10个B项添加到他们的购物车中,现在总计200美元 客户返回“
我正在努力解决的是,在结帐开始和收到付款通知之间的间隙中可能发生的事情。考虑到这些支付网关都在使用这些异步模型,必须有一个简单的解决方案来解决这个(和类似的)问题,但我真的被卡住了-任何建议都将不胜感激。我认为您在这里遗漏的主要一点是PaymentIntent金额是在服务器端设置的。这意味着,当您的客户打开一个新选项卡并向其购物车添加更多项目时,您应该能够反映新的金额。然后,当他们切换回另一个选项卡并完成付款时,您应该在PaymentIntent中反映总金额
您的客户可能仍然会看到与实际收取的金额不同的结帐过程,在这种情况下,我建议您考虑实施,以确保他们总能在购物车中看到总金额。我认为您在这里遗漏的主要一点是PaymentIntent金额是在服务器端设置的。这意味着,当您的客户打开一个新选项卡并向其购物车添加更多项目时,您应该能够反映新的金额。然后,当他们切换回另一个选项卡并完成付款时,您应该在PaymentIntent中反映总金额
您的客户可能仍然会看到结账过程中的金额与实际收取的金额不同,在这种情况下,我建议您考虑实施,以确保他们总能在购物车中看到总金额。谢谢Paul-非常感谢您的回复。但我觉得这个解决方案是行不通的。我们现在必须在每个页面加载上调用Stripe的API来检查PaymentIntent的状态,也许还需要另一个调用来用新的总数更新它。这将使我的网站速度慢得令人无法接受。我可以理解为什么WebSocket可能有用,但它们也很难实现。如果我们需要在每个页面加载或WebSocket上对Stripe的API进行服务器端调用,那么PaymentIntents在我看来是不可行的。除非还有更多我不明白的地方。我想我可能还不够清楚。让我用你的步骤再试一次:1。当用户登录或会话启动时,创建PaymentIntent并保存ID 2、3,与步骤4相同。打开新选项卡时,从会话中检索PaymentIntent服务器端,无需前端页面加载逻辑5。PaymentIntent在步骤4中更新,因此尽管旧选项卡仍显示旧价格,PaymentIntent具有新值6。如果
handleCardPayment
返回一个200,您知道支付已经成功,webhook用于您自己的日志记录。对于步骤6,请参见此处:旧的charge API和PaymentIntents之间不应该有任何区别,它可以根据需要同步或异步。您说:“4.从会话中检索PaymentIntent服务器端,无需前端页面加载逻辑“我不是说前端的页面加载逻辑。我说的是后台。用户打开一个新选项卡,这意味着浏览器向我们的服务器发送一个新请求。我们如何回应?我们从会话中知道PaymentIntent存在,因此我们必须检索它以检查状态。也许他们