【发布时间】:2018-10-06 18:58:02
【问题描述】:
我在 Nuxt.js(vue.js 和 node.js)上构建了一个电子商务解决方案,其中包含一个名为 Cockpit 的无头 cms。我正在使用第三方支付网关,当支付有效时,将用户重定向到回调 url。
在我的回调 url 上,我执行了多项操作:创建货件、将订单添加到 Cockpit 并将订单数据发布到发票软件。还会生成确认邮件和运输标签。标签和邮件也发送两次,这对客户来说很烦人+生成运输标签需要花钱。一切都按预期发布和工作。
我的问题是,支付网关有时会在几毫秒内调用我的回调 url 两次,因此在 Cockpit 中创建了一个重复的订单,因为在第二个请求开始之前第一个请求还没有完成,因此我检查了双重订单失败,因为理论上不存在具有该交易 ID 的订单。
要检查双重订单,我会执行以下操作 - 只要用户点击回调 url,就会执行此操作:
- 我检查我从支付网关获得的交易 ID 是否已经 存在于 Cockpit 中。
- 我检查事务ID是否存在于服务器中 已经开会了。
最后我的问题是——你们对我如何避免和消除这些双重订单有什么建议吗?也许你们中的一些人以前尝试过这样的事情?
很抱歉这篇长文,但我觉得有必要让这个问题成为 StackOverflow 上的一个有效问题
【问题讨论】:
-
你能看看这篇文章吗codereadability.com/…会有帮助
-
@souravlahoti 我不确定这是否有帮助,因为潜在的缓存对象会在第二次回调调用中被销毁,因为它是一个新的页面请求,对吧?还是我误解了这个概念?
-
我认为@souravlahoti 误解了这个问题。
-
@skolind 你检查了第二个选项吗,它使用一个检查第二个调用的风扇,因为它绑定到这个,第二个调用 LL 具有相同的参数,如果我没记错的话跨度>
-
@souravlahoti 我很确定该页面仍然是一个新页面,并且完全新鲜。喜欢重新加载页面?