一、背景
为什么需要关单? 前文说了,用户在下单支付之后,什么时候真正支付是不可预知。
所以,我们一般会对支付订单设置一个过期时间,无论是支付安全也好,还是业务上的支付时间要求也罢。
下面举一个例子,常见于商品搞活动的支付场景:
- 规定某个商品的支付时间必须是在30分钟内完成支付, 业务订单(订单服务所创建的订单)和支付订单都将在30分钟后自动过期。但是,如果用户在即将过期时,已拉起了支付,停留在输入密码界面;等订单过期后,用户这个时候才进行支付,而支付渠道是不知道支付订单已过期了。 所以,我们需要及时通知支付渠道,阻止用户在订单过期之后的支付。
所以我们总结下,什么状态下的支付订单才允许被关单?
- 状态是未支付或者支付中
- 在关单前,再次主动查询支付结果,相当于是二次确认订单是未支付
下面是关单流程: