微信支付和支付宝支付 买票问题的锁定问题

    最近公司的项目涉及技师上门O2O服务,其中某一个特定的技师,每天的8:30   9:00  9:30   10:00 ......20:00  这些时间点可以被预约,如果一个用户预约了9:00 的技师,而没有付款,那么9:00 9:30  10:00  这三个时间需要被锁定置灰,即假设这三个时间点技师在服务,不能提供服务。

   用户下单的过程是这样的:调后台接口告诉后台预约的技师姓名,电话,预约的时间,上门的地址等信息生成一个类似12306 那样的订单。只要生成了一个订单在一定的时间内(假设30分钟)之内可以继续支付。

   1)如果用户在30分钟之内完成,完成支付(不管是一气呵成完成支付还是想中途放弃支付后来又走继续支付的流程),生成订单成功,并且在30分钟内支付是不会存在任何问题的。

   2)如果用户在29分钟55秒开始支付,或者说第2分钟开始支付到支付宝页面停留,停留到29分钟55秒开始支付,在这个支付的过程中用户需要输入密码,由于密码需要时间,一个动作慢得的用户可能在30分钟30秒或者31分钟完成了支付,而系统设定的时间是30分钟未完成支付取消订单,取消了订单用户的订单预约服务时间9:00,9:30,10:00要解除锁定,这个技师的9:00时间点可以被别人预约,用户在30分钟30秒付完钱,结果用户的订单在30分钟被取消了 ,用户选择的上门时间9:00 可以被别人预约了,后台不停的接收支付宝返回的是否付款成功的通知,付款成功后台可以接收到付款成功的tradeNo(绑定某一笔订单的唯一标示),如果付款成功了即使订单后台取消了,又让用户的订单有效,即将后台开放的预约时间9:00置灰  改为不可预约,如果在30分订单取消,开放预约时间9:00,31分钟30秒完成支付收回开放的预约时间,在30分开放预约时间点  到31分钟30秒支付成功收回开放的预约时间内,没有客户预约该技师的9:00 时间段   ,整个系统也是没问题的。

   4)万一有人刚好在30分开放预约到31分30秒收回预约这段1分半种内 ,这1分半钟,9:00时间段是可以预约的,有另外的客户预约了该技师下单成功并且也是预约的是9:00,到支付宝完成支付,另外的客户只要在1.5分钟内下单后面再完成支付,比如5分钟之后再支付,预约依然可以成功的。就会造成9:00 的时间段被两个人同时预约。一个技师同时被两个人预约到底去为谁提供服务??? 这就存在问题了。

 

    如果可以设定超时时间就可以解决这个问题。

     为了尽可能减少预约时间被锁定的可能,决定将后台自动取消订单的时间设定为15分钟,不是30分钟。如果用户在第15分钟开始倒计时内再去选择支付,再等待15分钟去支付,在页面停留30分钟,还是存在16分钟订单时间9:00 9:30  10:00解除锁定  14:50秒去支付,并且支付成功,订单时间被锁定,再解除锁定和重新锁定被别人预约的情况还是存在的。因此为了避免这种情况,后台自动取消订单的时间是15分钟,订单解除锁定的时间可能需要后延迟一个支付宝或者微信超时不能支付的时间,假设超时支付的时间是30分钟(去支付宝微信支付设置的超时时间30分钟 才能把9:00  9:30  10:00  放出来),即后台超时时间15分钟 +支付宝和微信超时时间30分钟(可能是30分钟,貌似超时时间还不能设定)后才解除9:00,就可以彻底避免两个人同时预约一个时间。

 

     但是如果支付宝微信的超时支付时间无限长,只要后台有了自动解除时间锁定的功能,两个用户同时预约一个技师的情况

 

     分析:订单被取消的时间是15分钟,必须15分钟之内完成支付,第15分钟没预约就取消订单, 并不是一取消订单就解除时间锁定,相当于自动取消订单的时间再加上一个系统超时的时间,解除订单锁定的时间是第45分钟。这样就可以较好的减少订单被锁定的时间,同时尽可能的减少两个客户同时预约一个技师的情况,用户在14分钟40秒去开始支付,到支付宝页面,用户在第15分钟到第45分钟完成了支付,保证用户停留在支付宝页面的30分钟内付款了 ,而时间实际上还是为用户保留着 ,其他的用户不能预约。是不会存在任何问题的。  第45分钟开放预约时间,别人可以约了 如果支付宝和微信的超时时间是30分钟  当用户在接近15分钟开始支付   并且在支付宝输入密码的界面停留了整整超过了30分钟完成支付,如果超时时间是30分钟,必定不会存在问题,如果超时时间是40分钟,用户在接近15分钟开始支付,到释放预约时间9:00 时候支付成功了,而这个时间被别人预约了  情况还是存在的,当时这种情况的概率应该很低了,如果用户在5分钟之内开始支付,超时时间是40分钟,解除锁定被别人预约的情况也不会出现问题,

 

   假设如果支付宝和微信支付可以设置超时时间15分钟,用户下单在第2分钟 跑到支付宝页面等15分钟就再支付,15分钟内支付可以,超过15分钟再去支付,提示超时订单似乎可以解决问题。一端超过15分钟,不能支付,如果想下单,重新选择时间,9:00 9:30  10:00 被锁定不能预约不会产生冲突,后台自动取消订单时间是30分钟之后,没问题。

 

 

另外的解决方案:

  每次用户发布一个订单,给技师一个推送,技师超过了15分钟没预约去和预约人沟通,是否取消订单,要么付款要么取消,付款了订单有效,没付款技师取消订单,取消了订单9:00 9:30  10:00 时间解除锁定(时间解除锁定,要么让技师自己排上,要么后台发现取消了订单自动解锁)这样人工干预貌似简单

缺点:用户体验不好,用户只是下个单试试,技师就得打电话,还得给技师发推送,即打扰技师又打扰用户

优点目前还没分析出来。

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 

转载于:https://www.cnblogs.com/ios-wang/p/5058319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值