关键词:第三方支付集成,订单支付,订单回调,订单状态,轮询机制
这两天正在看微信和支付宝集成的一些文档,今天有人在产品群里问了订单支付的问题,其实问题有些偏技术了,其实挺巧了,我刚看完文档又懂一些技术,就给解答了一下。
场景:线上支付,商户形成订单-->客户自行选择支付方式(微信/支付宝等)-->客户支付。
两个问题:
1、客户支付成功后又把订单关闭了,怎么解?
2、支付回调很慢,有的时候可能要半个小时,怎么这么慢?如用户放弃支付,回调慢影响用户二次支付;
问题1:客户支付成功后,因为订单状态没更新(为支付成功),又把订单关闭了,怎么解?
解答:其实这里面遗漏了一个订单支付状态的处理,就是“支付中”状态,在这个状态下的订单商户端要控制不能关闭的;
订单支付状态可以分三种:未支付、支付中、支付成功/失败;
以微信支付为例,我们需要在客户微信支付的过程中由商户端增加修改订单支付状态为“支付中”的逻辑即可。如下图所示(篮圈):
问题2:支付回调很慢,有的时候可能要半个小时,怎么这么慢?如用户放弃支付,回调慢影响用户二次支付;
解答:这个问题在三方支付的集成技术文档里面就应该有解答,就是商户端建立主动轮询机制;每隔几秒就对还在“支付中”的订单去支付服务端查询获取状态,有结果及时更新即可。这应该是几秒就能解决的问题。
最后说一句:这种深入时序图、概设的活应该技术来做才合适。