我正在使用URL重定向实现第三方支付网关。付款后,我将自动获得重定向到我的页面由PG。当我将用户重定向到支付网关页面时,作为用户,我可以在另一个浏览器中打开购物车并编辑产品,因为订单仍然处于"订单未完成"状态。如果我想将订单保持在"等待付款"状态,那么在没有来自支付网关的响应的情况下,它会失败。如何把订单改回来。我想为这个等待状态实现一个超时计划,但是我不能说处理一个订单支付需要多少分钟。请帮我做这个设计。如果有更好的解决办法,请提出来。
谢谢,Pradeep Shankar .
我建议您对订单存储库项和子项使用可序列化隔离级别的锁定缓存。这意味着试图授权支付的线程将获得写锁,从而阻止对订单的其他更新。
来自ATG文档:
多服务器应用程序可能需要锁定缓存,其中一次只有一个Oracle ATG Web Commerce实例对给定项目类型的缓存数据具有写访问权。您可以使用锁定缓存来防止多个服务器同时尝试更新相同的项目—例如, Commerce订单项目,它可以由面向外部的服务器上的客户和面向内部的服务器上的客户服务代理更新。通过限制写访问,锁定缓存确保所有Oracle ATG Web Commerce实例中缓存数据的一致视图。
设置锁定缓存:
- 在所有ATG实例上正确配置锁服务器和客户端锁管理器
- 对存储库定义的更改
- 实质性性能测试
这通常是一个相当大的变化,因为它对性能和稳定性有潜在的影响。