目录
1.前言
混合支付允许用户根据资金状况或偏好自由组合支付方式(如部分使用医保账户、部分现金支付),尤其适用于需要分摊费用或处理零头的场景(如零售中的“微信+现金”支付)。这种灵活性帮助用户更好管理支出。
我们的系统是有自己的积分账户体系,用户在购买(外卖、打车等)线上支付时会拉起我们自己收银台,当积分余额不足可以进行混合支付。支付流程大致如下。
在调用微信支付的时候会传递一个超时时间,超时后,微信支付订单关闭,会解冻积分。
当时设置超时时间是以订单时间为准的。
2.问题
订单的超时时间是不可控的,我们系统最短的十五分钟,最长的有三天,但是上线一段时间后发现一个问题,用户在实际组合支付的时候没有在微信支付,然后过了一会他去另一个场景花钱,发现钱被冻结了,冻结了三天没有办法去其他场景消费了。。。 查询逻辑发现设置超时时间是以订单时间为准的,而订单的超时时间是三天后。
3.设置时间
所以设置的超时时间不应该以订单的超时时间为主,应该自定义超时时间(例如 3-5 分钟)
-
不同的目的:
- 订单超时:这通常定义在自动取消整个订单之前为用户预留多长时间(例如,15 分钟、30 分钟)。它让用户有时间决定付款、收集他们的付款方式等。
- 支付 API 超时:这定义了系统在发起特定支付作后应等待多长时间(例如,用户在 微信 应用程序中的互动)。这通常要短得多(例如,3-5 分钟)。
-
支付时的用户体验:
- 一旦用户被重定向或显示微信支付的二维码,他们就会相对较快地采取行动。通常 3-5 分钟的超时时间足以让他们在微信应用程序中确认付款。
- 将很长的订单超时(例如 30 分钟)传递给 微信 API 是没有意义的。微信本身可能有自己的内部较短的用户交互超时时间。更重要的是,这意味着如果出现网络问题,您的系统可能会不必要地等待很长时间才能得到响应。
4.建议
其实如果用户创建了新的订单并且拉起收银台了,这个时候应该查询一下处理中的订单,如果有冻结而且未超时的订单应该调用解冻并且关闭之前的微信的那笔支付。这样在C端用户体验上会有大大提升,少很多客诉
完结!
如果有更好的见解 欢迎大家评论!