首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免对数据库的双重请求

避免对数据库的双重请求
EN

Stack Overflow用户
提问于 2018-04-26 07:07:59
回答 1查看 177关注 0票数 0

我在Nuxt.js (vue.js和node.js)上建立了一个名为“驾驶舱”的无头cms解决方案。我使用第三方支付网关,当付款有效时,将用户重定向到回调url。

在我的回调网址上,我有多个操作正在进行:创建货件,添加订单到驾驶舱和邮寄订单数据到发票软件。此外,确认邮件和运输标签是生成的。标签和邮件也被发送了两次,这对客户来说是件烦人的事情。所有的东西都是按预期发布和工作的。

我的问题是,支付网关有时会在毫秒内两次调用我的回调url,从而在驾驶舱中创建一个重复的订单,因为第一个请求在第二个请求启动之前还没有完成,因此我对双订单的检查失败了,因为理论上还不存在带有该事务id的订单。

为了检查双订单,我执行以下操作-这是在用户点击回调url后立即完成的:

  • 我检查从付款网关获得的交易标识是否已经存在于驾驶舱中。
  • 我检查服务器会话中是否已经存在事务id。

最后,我的问题是-你们对我如何避免和消除那些双重命令有什么建议吗?也许你们中有些人以前试过这样的东西?

我很抱歉这么长的帖子,但我觉得有必要在StackOverflow上提出一个有效的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-26 07:21:27

问题似乎不在你这一边:第一个问题是“为什么第三方支付网关会给你打两次电话?它会支付2次吗?”我认为你应该尝试在其他任何事情之前理解这一点,在支付网关的帮助下,因为这是不正常的。

在此期间,或者如果您无法在另一边解决问题,则可以尝试为当前订单或回调函数的队列实现某种类型的锁定,以便如果同一订单的第二个回调到达,则它可以被阻塞、丢弃或停止,直到第一个一端(此时,我认为第二个调用将发现已处理的订单,因此不会有更多的打印和电子邮件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50036838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档