第三方支付就像手机一样,有人交集的地方都会有他们。好吧这是句废话,言归正传。
涉及第三方支付的交互:支付、退款是最常用的。
支付
系统集成第三方的支付功能后,
逻辑一:一般是先完成第三方的支付,根据支付结果的不同在本系统当中完成后续的处理逻辑,例如增加充值记录。先处理第三方的逻辑再处理本系统当中的逻辑是资金流向的角度出发,即不管支付的结果是成功、失败、还是延时,后续都方便在本系统当中处理。
逻辑二:如果反过来的话(后面是例子了,理解的就略过),先增加充值记录,那么后面就是想当然的认为第三方支付必然成功了,有经验的大神一般还在后面增加失败时的回退逻辑。但是一般整个处理逻辑涉及的部分太多,回退逻辑也是一件痛苦的事情。
第三方支付成功,本系统收款失败
显而易见逻辑二的方式处理,本系统因为业务逻辑或者程序限制(用户冻结)原因失败后,在本系统当中可以自行处理。
第三方支付失败
第三方支付失败,都没有后面逻辑的事情了。直接排查是不是网络问题,还是设备坏了(一般支付凭证、密钥之类的很那出现问题)。
退款
系统集成第三方的退款业务后。
退费时需要考虑完成本系统的退款业务,再完成第三方的退款逻辑。否则,钱退出去了,本系统然后说不能退,那最后是谁的锅?既然是这样,那问题就来了,如果第三方退款失败(例如账户里没钱退不出去),使用事务方式是肯定的,如果没有,那就需要考虑退费的撤单逻辑来解决。