什么是掉单?
所谓的掉单,就是用户下单支付,在钱包里完成了支付,结果回到电商APP一看,订单还是未支付……
毫无疑问,用户肯定会炸,结果不是投诉,就是差评。
用户感觉受到了欺诈
那么掉单是怎么来的呢?
我们先来看看订单支付的完整流程:
钱包支付的完整流程
-
用户从电商应用点击支付,客户端向服务端发起支付请求
-
支付服务会向第三方的支付渠道发起支付,支付渠道会响应对应的url
-
以APP为例,客户端通常是会拉起对应的钱包,用户跳到对应的钱包
-
用户在钱包里完成支付
-
用户完成支付后,跳转回对应的电商APP
-
客户端轮询订单服务,获取订单状态
-
支付渠道回调支付服务,通知支付结果
-
支付服务通知订单服务,更新订单状态
对于支付订单而言,大概可以分为这么几个状态:
支付状态
-
未支付:用户在点击支付之后,支付服务请求支付渠道之前,处于未支付状态
-
支付中:用户发起支付后,到跳转到支付钱包,再到完成支付,支付服务获取到最终支付结果之间,属于支付中状态,这个状态下,可以说是一个迷雾状态,电商系统对于用户的支付是不确定
-
支付成功/失败/取消/关闭:电商系统最终确定了用户在第三方钱包的支付最终结果
看起来没什么问题啊,怎么就掉单了?简单说,就是支付的状态没有同步到,或者没有及时同步到。
掉单发生
1. 支付渠道的支付回调
发生了一些异常,导致支付服务没有收到支付渠道的回调通知
2. 支付服务通知订单服务
服务内部出现异常,导致支付状态没有同步到订单服务
3. 客户端获取订单状态
客户端通常是轮询获取状态,可能会在轮询时间内没有获取到订单状态,结果用户看到未支付
其中1可以称之为外部掉单,2和3可以称之为内部掉单。
接下来我们看看,怎么预防掉单问题。
怎么防止内部掉单
我们先从系统内部的掉单说起,当然在系统内部,稳定性更容易保证,发生掉单的概率还是比较小