我在Nuxt.js (vue.js和node.js)上建立了一个名为“驾驶舱”的无头cms解决方案。我使用第三方支付网关,当付款有效时,将用户重定向到回调url。
在我的回调网址上,我有多个操作正在进行:创建货件,添加订单到驾驶舱和邮寄订单数据到发票软件。此外,确认邮件和运输标签是生成的。标签和邮件也被发送了两次,这对客户来说是件烦人的事情。所有的东西都是按预期发布和工作的。
我的问题是,支付网关有时会在毫秒内两次调用我的回调url,从而在驾驶舱中创建一个重复的订单,因为第一个请求在第二个请求启动之前还没有完成,因此我对双订单的检查失败了,因为理论上还不存在带有该事务id的订单。
为了检查双订单,我执行以下操作-这是在用户点击回调url后立即完成的:
最后,我的问题是-你们对我如何避免和消除那些双重命令有什么建议吗?也许你们中有些人以前试过这样的东西?
我很抱歉这么长的帖子,但我觉得有必要在StackOverflow上提出一个有效的问题
发布于 2018-04-26 07:21:27
问题似乎不在你这一边:第一个问题是“为什么第三方支付网关会给你打两次电话?它会支付2次吗?”我认为你应该尝试在其他任何事情之前理解这一点,在支付网关的帮助下,因为这是不正常的。
在此期间,或者如果您无法在另一边解决问题,则可以尝试为当前订单或回调函数的队列实现某种类型的锁定,以便如果同一订单的第二个回调到达,则它可以被阻塞、丢弃或停止,直到第一个一端(此时,我认为第二个调用将发现已处理的订单,因此不会有更多的打印和电子邮件)。
https://stackoverflow.com/questions/50036838
复制相似问题