gpt4 book ai didi

stripe-payments - 异步付款时如何防止购物车更改

转载 作者:行者123 更新时间:2023-12-05 07:25:03 25 4
gpt4 key购买 nike

下面的步骤说明了我在 Stripe 的 PaymentIntent 流程中遇到的问题,但是对于我看过的其他支付网关,您可以想出类似的东西,其中成功支付的最终通知是从支付网关异步发送给商家的网站。

  1. 客户将 10 件商品 A 添加到他们的购物车中,现在总计 $100
  2. 客户转到结帐页面。服务器为总计 100 美元创建一个 Stripe PaymentIntent,并将“client_secret”发送到浏览器。
  3. 客户的浏览器显示结帐页面,显示总计 100 美元和 Stripe 的付款表格。
  4. 客户打开一个新标签,并将 10 件商品 B 添加到他们的购物车中,现在总计 200 美元。
  5. 客户返回结帐选项卡,并使用 Stripe 完成 100 美元的付款(网站无法采取任何措施来阻止这种情况 - 这一切都发生在客户端)
  6. 异步地,Stripe 通过 webhook 通知网站我们收到了 100 美元的付款。我们现在做什么?

付款总额不再与购物车总额相符。我们是否必须退还付款并取消订单?我们如何通知客户?我们可能已经向他们展示了“订单完成 - 谢谢”页面,因为在异步通知到达之前我们无法知道总数是错误的。客户可能已经离开了我们的网站。我们如何处理他们的购物车?

-- 所有这一切的进一步背景:

每当我的客户想在他们的网站上进行在线支付时,我总是求助于 Stripe,因为 Stripe 的同步模型使我的代码变得简单易用。客户将输入他们的卡详细信息,然后 Stripe 将返回代表付款的 token ,最后我的服务器端代码将检查所有详细信息是否正确,使用 Stripe 的 API 收款,并向客户返回“谢谢”消息浏览器。

但现在 Stripe 似乎正在从这种模型转向异步模型 (PaymentIntents),在这种模型中,您的服务器应该在履行订单之前监听已完成付款的通知。在 Stripe 的术语中,我们应该设置“webhooks”来监听“payment_intent.succeeded”事件。

我过去使用的所有其他支付网关也有一个异步模型,在某种意义上,您的网络服务器必须等待来自网关的某种回调通知我们付款,然后我们才能安全地开始处理命令。 PayPal 称之为“即时支付通知”,Worldpay 称之为“Order Webhooks”,Adflex 称之为“Server2ServerNotification”……等等。

我遇到困难的地方是试图处理在结账开始和收到付款通知之间的间隙可能发生的事情。鉴于这些支付网关都使用这些异步模型,必须有一个简单的解决方案来解决这个(和类似的)问题,但我真的被卡住了 - 任何建议将不胜感激。

最佳答案

我认为您在这里遗漏的要点是 PaymentIntent 金额是在服务器端设置的。这意味着当您的客户打开一个新选项卡并将更多商品添加到他们的购物车时,您应该是 updating the PaymentIntent on your server以反射(reflect)新金额。然后,当他们切换回另一个选项卡并完成付款时,您应该在 PaymentIntent 中反射(reflect)总金额。

您的客户可能仍会看到与实际收费金额不同的结账流程,在这种情况下,我建议您考虑实现 websockets以确保他们总能看到购物车中的总金额。

关于stripe-payments - 异步付款时如何防止购物车更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com