我正在使用第三方支付服务 Vipps 在 Express.js 中构建一个电子商务平台。我正在为 ShoppingCarts 和 Orders 使用单独的表格。
当用户使用他们的购物车 ID 结账时(所有商品都同步到服务器端),我首先使用支付服务创建一个支付链接(这需要总金额)。之后,我创建了一个 SQL 事务,我将 ShoppingCart 的状态设置为“LOCKED”并创建了一个状态为“PENDING”的新订单——我还将 Vipps 支付重定向 uri 附加到该对象。
此外,如果对该结帐路径发出新请求,如果ShoppingCart状态为'LOCKED',它将提示'cart is being processed'。但是,我在网上看到很多项目和代码都没有进行这种状态检查(Stripe),但每次都会创建一个新的支付意图。这方面的最佳做法是什么?是否应该完全避免订单重复付款?我没有为我的 API 使用幂等性,而是对相关行进行数据库状态检查。感谢任何帮助,例如示例或文档。
我试着在 GitHub 上查看带有支付集成的示例项目,并在 stackoverflow 上阅读类似的帖子。