最近搜索
暂无搜索记录
热搜
JAVA
大数据
分布式
Python
人工智能
爬虫
WEB
JavaScript
认证
首先,用户提交订单并支付的步骤:
第一步是prePay:后端服务和微信交互,获取支付号,响应给微信小程序前端
第二步是真正支付:用户输入支付密码,微信支付服务端确认后,回调后端服务,通知用户支付成功
订单超时自动取消业务:当用户提交订单5分钟后,仍然未支付,则订单自动取消,回退预占库存
问题:
用户提交订单后,等了5分钟才打算支付,这时候刚好和订单超时自动取消的逻辑同时触发了:
用户先调起后端,发起了与支付并且拿到了支付号,
接着当用户输入支付密码的间隙,定时任务执行了取消订单的操作
然后用户支付成功,后端服务收到微信支付回调,但订单状态已经是一取消,并且库存已经都回退了,所以无法将订单改回正常的已支付状态
问题难点:
订单超时自动取消的逻辑会回退库存,后续即使想将订单改为已支付,库存信息可能会出错,如库存回退后,支付成功要再次扣减库存,但可能这个回退的库存立刻被下单了,则支付回调的逻辑就处理不了了
如果以来小程序端确认用户支付成功/取消后通知后台,否则订单处于不可更改的状态,这样能解决大部分问题,但当用户在输入密码的界面没有继续,而是直接关闭了小程序,则小程序端无法通知后端服务用户是否成功,这笔订单将会一直卡在支付中的状态,永远不会自动取消
请老师指导一下,这种情况该怎么处理合适?