购票业务该怎么处理

开源中国拾荒者 发布于 05/19 18:19
阅读 117
收藏 2

业务背景:客运网络订票,每天每条路线6点-19点每个整点时间发一次车,用户可以选择出行路线日期车型及座次。

由于每个座次都是一张票,在处理购票的过程中按照谁先下单支付成功谁购票成功。

流程:用户选择出行座次-->提交订单-->微信支付-->支付结果通知。其中微信支付回调的时候修改订单状态,修改出行票为已售。

今天出了个问题,A,B两个用户同时下单,且都不到1秒的间距发起支付,A支付成功微信支付还没开始回调,B又支付成功了,导致一张票卖给了2用户。

这种问题改怎么处理,或者这种业务逻辑我该怎么处理,求各位有经验的大佬提点赐教。

加载中
0
Joyzhou
Joyzhou

下单 -> 锁票池(库存) -> 支付成功扣减

开源中国拾荒者
开源中国拾荒者
请教一下,可否在具体一点,锁票池得怎么实现?
0
MarsBuilder
MarsBuilder

用乐观锁加到票上面就可以了

 

开源中国拾荒者
开源中国拾荒者
回复 @MarsBuilder : 嗯,谢谢指教
MarsBuilder
MarsBuilder
回复 @开源中国拾荒者 : 不要那么麻烦,就是支付成功之后回调操作票状态,如果哪个触发了乐观锁报错了,那你就调退款接口把款退回去就好了
开源中国拾荒者
开源中国拾荒者
我是在支付回调的时候才修改票的状态,感觉应该把这步提到下单就修改票的状态,定个时间,几分钟之类没支付就在把票改回来。
0
开往春天的拖拉ji
开往春天的拖拉ji

一般电商涉及到库存不是应该在提交订单时就把库存减了吗?如果用户不支付就在时间范围内自动取消订单。

开源中国拾荒者
开源中国拾荒者
你说的是预占库存,但对于票来说讲究时效性,预占在这种业务里面不适用
返回顶部
顶部