1.取消订单的操作是怎么实现的?
取消订单的操作参考:
2.长时间不支付,订单会取消吗?
会取消的,设置超时时间30分钟后未支付自动取消订单。
具体代码操作:我们调用支付宝的方法,然后我们在代码中获取下单时间,传入方法中,然后到了规定时间未支付,会自动取消订单,具体实现由支付宝实现。
取消订单的代码实现:
3.扣库存流程中,为啥选择用户支付成功了才扣库存 ,有生成订单这一步吗?
有先生成订单这一步,也就是用了异步扣库存的流程,Redis缓存库存,mysql存储库存。成功支付后再扣库存,防止恶意买家大量下单占用库存却不支付的情况,同时下单即扣库存并发性也差。
扣库存流程参考:
4.生成订单再去支付对吧,那假如有一批人都去生成订单但都没支付,怎么保证同时支付的时候库存不会超卖,因为库存是有限的?
用异步扣库存的方式,好处就是先扣Redis缓存中的,支付成功生成订单后才扣mysql数据库的,在数据库前还加了一个消息队列,防止高并发访问数据库造成瘫痪。
Redis缓存中的商品数量和数据库同步,扣库存先扣Redis中的,这一步是预扣除,支付成功才扣数据库的,当Redis中的商品数量为0的时候,外面的用户访问就会返回没有库存的信息,保证了不会超卖的现象。
扣库存流程以及防止超卖:
5. 你们怎么保证库存的数据没有错,比如用户生成订单并支付之后,如果退款取消了,库存是不是也能加回来,有吗?
6.你们的数据存储是用mysql吗?那你们操作库存那个SQL是咋写的?