为什么出款一般都不是实时的?因为入款不是实时的,银行等第三方支付机构之间的资金清算有时间差,一般都是T+1才到账,如果想做到实时的出款就有垫资的风险,一般支付公司都不愿意垫资,但支付宝这个大型除外。
对于第三方支付机构而言,银行通知了它支付成功,但是资金实际上还要T+1日才能结算到它的银行账户,也就是说目前只是承诺付款,但实际是在途资金尚未抵达,也就是信息流到了,资金流还没有过来。
![ab46898a3eb2480272410942ffd71e72.png](https://i-blog.csdnimg.cn/blog_migrate/f5d985317934a2da8009ffc900464835.jpeg)
所以对于支付系统的账务而言,这时的资金还没有在自己的银行存款账户上体现出来,所以不能记入银行存款日记账中,而是应该记入“其他应收款--在途货币资金账户”这一科目,而且这一账户需要银行为其提供清算文件来进行账实核对。
对于银行而言,它是交易银行清算信息的提供者和最终解释者。它不但向第三方支付提供对账服务,还要向个人用户提供对账服务。
关于延时任务
在开发中,往往会遇到一些关于延时任务的需求。例如,生成订单30分钟未支付,则自动取消;生成订单60秒后,给用户发短信。
对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别:
1、定时任务有明确的触发时间,延时任务没有;
2、定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期;
3、定时任务一般执行的是批处理操作是多个任务,而延时任务一般是单个任务。
银行原生通道在支付时可能会出现以下情况
一个支付订单,回调了两次,第一次是失败提示说用户的账户余额不足,过了9分钟,第二次通知说支付成功了。
场景分析:用户第一次支付,发现钱不够,页面没有关,换了一张卡,或者转了足够的钱,继续支付。当第一次通知时,支付状态就已经被设置为支付失败了,第二次通知时,发现已经是最终状态就不再处理了。结果就是客户钱被扣了,订单也没有成功。
解决方案:把失败映射成处理中,只有得到明确的结果说成功了,才修改成成功,这样就不会影响到对账等后续操作,因为对账只对成功的。
不论是在银行的原生支付过程中或者是第三方支付的流程中,总会遇到订单回调的一些问题,以上就是笔者为大家整理的可能会遇到的一些情况分析,关于第三方支付如果还有任何不懂的地方,欢迎留言或者私信与我讨论。