第三方支付问题小结

概述


记得2019年,微信支付出过一个故障,用户发起支付给了钱后,微信一直不回调,导致使用了微信支付的商家的订单都成了未支付状态了,如果业务系统设计的不好,那瞬间就会有大量的客诉出现。

像下面的对话场景,我相信当时肯定非常的多:

用户:我支付了好几次了,你说你没收到?别开玩笑了。
商家:我这边真的没收钱。然后心想:这家伙不会是想吃霸王餐吧?

虽然像微信和支付宝这样的大牌支付平台,出大故障的几率比较少,但是也不得不防。下面列举几个支付问题以及对应的解决思路


第三方支付平台无法支付


以微信为例子,像2019年微信支付出故障时,美团那边,是在APP侧,立刻将微信支付置灰了,引导用户使用支付宝支付,将损失和影响降到最低。要做到这点,至少得做到如下两点:

  • 监控微信支付的连通性(关键链路,监控得到位);
  • 得有屏蔽微信支付的开关,前端可根据这个开关确定是否置灰微信支付按钮。

第三方支付平台不回调


这种就属于用户给了钱,而由于没有回调,商家业务系统认为没收到钱,非常容易引起客诉。我们可以使用定时任务,定时查询用户订单是否支付了来应对。

比如说,你到茶饮店买了杯奶茶,使用微信支付给了钱后,门店打印机打印出小票和杯贴后,门店人员就会开始为你制作茶饮。如果这个时候,微信支付出故障了,一直不回调,那么小票和杯贴打印不出来,门店人员就不会给你制作。如果业务系统有个定时任务,每隔2分钟,把5分钟前的订单捞出来,调用微信订单是否已支付的接口,如果支付了,则通知打印机打印出小票。


第三方支付回调慢了


电商订单里,通常都有一个订单支付有效期,如果在有效期内用户没支付,就会取消订单,但是这个是基于用户没给钱的前提下,如果支付回调超过支付有效期才回调回来,其实用户是给了钱的了。一般来说,支付回调慢了,有下面三种情况:

  1. 用户拉起支付窗口了,但是一直不给钱,超过支付有效期后才给钱;
  2. 第三方支付平台性能有问题,真的支付回调慢了;
  3. 网络抖动

对于第一种情况,可以利用支付平台的接口,拉起支付时,指定一个有效期,有效期内没给钱的,支付平台会自动提示交易已失效

支付平台 控制支付有效期的参数
微信 time_expire
支付宝 timeout_express

例如说,调用支付宝的拉起支付接口,设置了五分钟的支付有效期,一旦用户超过有效期才给钱,支付宝会有如下的提示:
第三方支付问题小结_第1张图片

对于第二和第三种情况,可以在订单取消的接口中,给用户退款,毕竟用户给了钱的。

你可能感兴趣的:(互联网技术经验累积,支付)