所以我有一个多分页结账系统,它依赖于会话来存储购物车的内容.我还使用第三方系统处理信用卡,信用卡托管服务器上的实际付款页面.我只需要在页面上发布最终总数.
我预见到的问题是,如果有人点击进入托管付费页面,然后由于某些合法或恶意的原因更改了另一个标签中的购物车内容.我最初计划当托管付费页面重定向回我的收据页面时,我会将订单插入我的数据库.但是,如果会话在此时更改,则订单将与收取的总费用不同.
什么是这个问题的解决方案.我可以看到这种事情对所有购物车系统都是一个问题,所以我想知道他们是如何做到这一点的.
也许当用户点击按钮转到托管付费页面时,我可以在数据库的temp_order表中创建一个临时订单条目,然后当付款通过时,我可以将该临时记录转移到永久记录表中?这样我就不会从已更改的会话信息中插入记录.但是,如果我必须POST到托管付费页面,我在哪里可以将购物车保存到临时表?
此外,临时订单ID在临时表和永久表中必须是唯一的,因为我不希望任何重叠.
最后,我应该经常清除临时订单表,因为它们只是临时记录.有些人可能无法通过,因为用户可以在托管付费页面上改变主意.
我真的很困惑我应该做什么!