面试

如何防止订单重复提交以及如何防止订单重复确认

2017-04-27  本文已影响5951人  SteveGuRen

订单重复问题已经是老生常谈的问题了,我们熟悉的淘宝购物流程,购物车-->生成订单--》提交订单--》订单确认--》支付订单--》备货--》发货,这里可能会有一些问题,例如,有人恶意或者无意的重复提交订单,从而导致数据库保存的订单数量与实际不符,重复提交订单导致用户体验不佳,甚至更为严重的是,用户重复支付了同一个订单。所以,涉及到订单,应该首先想清楚如何设计才能保证系统不会出现这些问题

如何防止订单重复提交

首先说两个我们购物时经常有过的体验或者说购物网站的网页提醒

订单确认支付

如支付宝和微信等,支付宝和微信本身是怎么限制订单只能支付一次的呢?订单怎么保证只会被支付一次呢?这个问题相对来说就简单很多了,同一订单的状态更新的SQL只需要带上条件,利用的是数据库的行锁。当然,如果是分布式系统,这里涉及到的问题会更多。

update table item set item.status=:newstatus where item.id = :id and item.status = oldstatus.

对比案例

参考资料和研究

上一篇 下一篇

猜你喜欢

热点阅读