为了可以更好地解释支付结算系统对账过程,我们先把业务从头到尾串起来描述一下场景,帮助大家理解:
一个可能得不能再可能的场景,请大家深刻理解里面每个角色做了什么,获取了哪些信息:
某日阳光灿烂,支付宝用户小明在淘宝上看中了暖脚器一只,价格100元。犹豫再三后小明使用支付宝网银完成了支付,支付宝显示支付成功,淘宝卖家通知他已发货,最近几日注意查收。
我们来看看这个过程中有几个相关方,分别做了什么。我语文不好,写得饶口,如果看不懂请多看几次:
小明:持卡人,消费者,淘宝和支付宝的注册会员,完成了支付动作,自己的银行账户资金减少,交易成功。
银行:收单银行,接受来自支付宝的名为“支付宝BBB”的100元订单,并引导持卡人小明支付成功,扣除小明银行卡账户余额后返回给支付宝成功通知,并告诉支付宝这笔交易在银行流水号为“银行CCC”
支付宝:支付公司,接收到淘宝发来的订单号为“淘宝AAA”的商户订单号,并形成支付系统唯一流水号:“支付宝BBB”发往银行系统。然后获得银行回复的支付成功信息,顺带银行流水号“银行CCC”
淘宝:我们支付公司称淘宝这类电商为商户,是支付系统的客户。淘宝向支付系统发送了一笔交易收单请求,金额为100,订单号为:“淘宝AAA”,支付系统最后反馈给淘宝这笔支付流水号为“支付BBB”
以上流程貌似大家都达到了预期效果,但实际上仍然还有一个问题:
对支付公司(支付宝)而言,虽然银行通知了它支付成功,但资金实际还要T+1后结算到它银行账户,所以目前只是一个信息流,资金流还没过来。
Tips:插一句话,对支付系统内部账务来说,由于资金没有能够实时到账,所以此时小明的这笔100元交易资金并没有直接记入到系统资产类科目下的“银行存款”科目中,而是挂在“应收账款”或者“待清算科目”中。大白话就是,这100元虽然答应给我了,我也记下来了,但还没收到,我挂在那里。
对商户(淘宝)而言,虽然支付公司通知了它支付成功,他也发货了,但资金按照合同也是T+1到账。如果不对账确认一下,恐怕也会不安。
倒是对消费者(小明)而言:反正钱付了,你们也显示成功了,等暖脚器呀等暖脚器~
基于支付公司和商户的困惑,我们的支付结算系统需要进行两件事情:一是资金渠道对账,通称对银行帐;二是商户对账,俗称对客户帐。对客户帐又分为对公客户和对私客户,通常对公客户会对对账文件格式、对账周期、系统对接方案有特殊需求,而对私客户也就是我们一般的消费者只需要可以后台查询交易记录和支付历史流水就可以了。
我们先聊银行资金渠道对账,由于支付公司的资金真正落地在商业银行,所以资金渠道的对账显得尤为重要。
在一个银行会计日结束后,银行系统会先进行自己内部扎帐,完成无误后进行数据的清分和资金的结算,将支付公司当日应入账的资金结算到支付公司账户中。于此同时,目前多数银行已经支持直接系统对接的方式发送对账文件。
于是,在某日临晨4点,支付宝系统收到来自银行发来的前一会计日对账文件。根据数据格式解析正确后和前日支付宝的所有交易数据进行匹配,理想情况是一一匹配成功无误,然后将这些交易的对账状态勾对为“已对账”。
Tips:此时,对账完成的交易,会将该笔资金从“应收账款”或者“待清算账款”科目中移动到“银行存款”科目中,以示该交易真正资金到账。
以上太理想了,都那么理想就不要对账了。所以通常都会出一些差错,那么我总结了一下常见的差错情况:
1.支付时提交到银行后没有反馈,但对账时该交易状态为支付成功
这种情况很正常,因为我们在信息传输过程中,难免会出现掉包和信息不通畅。消费者在银行端完成了支付行为,银行的通知信息却被堵塞了,如此支付公司也不知道结果,商户也不知道结果。如果信息一直没法通知到支付公司这边,那么这条支付结果就只能在日终对账文件中体现了。这时支付公司系统需要对这笔交易进行补单操作,将交易置为成功并完成记账规则,有必要还要通知到商户。
此时的小明:估计急的跳起来了……付了钱怎么不给说支付成功呢!坑爹!
TIPS:通常银行系统会开放一个支付结果查询接口。支付公司会对提交到银行但没有回复结果的交易进行间隔查询,以确保支付结果信息的实时传达。所以以上情况出现的概率已经很少了。
2.我方支付系统记录银行反馈支付成功,金额为100,银行对账金额不为100
这种情况已经不太常见了,差错不管是长款和短款都不是我们想要的结果。通常双方系统通讯都是可作为纠纷凭证的,如果银行在支付结果返回时确认是100元,对账时金额不一致,可以要求银行进行协调处理。而这笔账在支付系统中通常也会做对应的挂账处理,直到纠纷解决。
3.我方支付系统记录银行反馈支付成功,但对账文件中压根不存在
这种情况也经常见到,因为跨交易会计日的系统时间不同,所以会出现我们认为交易是23点59分完成的,银行认为是第二天凌晨0点1分完成。对于这种情况我们通常会继续挂账,直到再下一日的对账文件送达后进行对账匹配。
如果这笔交易一直没有找到,那么就和第二种情况一样,是一种短款,需要和银行追究。
以上情况针对的是一家银行资金渠道所作的流程,实际情况中,支付公司会在不同银行开立不同银行账户,用以收单结算(成本会降低),所以真实情况极有可能是:
临晨1点,工行对账文件丢过来(支行A)
临晨1点01分,工行又丢一个文件过来(支行B)
临晨1点15分,农行对账文件丢过来
。 。 。
临晨5点,兴业银行文件丢过来
。。。
不管什么时候,中国银行都必须通过我方业务员下载对账文件再上传的方式进行对账,所以系统接收到中行文件一般都是早上9点05分……
对系统来说,每天都要处理大量并发的对账数据,如果在交易高峰时段进行,会引起客户交互的延迟和交易的失败,这是万万行不得的
所以通常支付公司不会用那么傻的方式处理数据,而是在一个会计日结束后,通常也是临晨时段,将前一日交易增量备份到专用对账服务器中,在物理隔绝环境下进行统一的对账行为,杜绝硬件资源的抢占。
以上是银行资金渠道入款的对账,出款基本原理一致,不过出款渠道在实际业务过程中还有一些特别之处,由于大家不是要建设系统,我就不赘述了。
谈完了资金渠道的对账,我们再来看看对客户帐。
前面提到了,由于资金落在银行,所以对支付公司来说,对银行帐非常重要。那么同理,由于资金落在支付公司,所以对商户来说,对支付公司账也一样重要。能否提供高品质甚至定制化的服务,是目前支付公司走差异化路线的一个主要竞争点。
-------------------------------
一、对支付系统而言,最基本的对账功能是供商户在其后台查询下载某一时间段内的支付数据文件,以供商户自己进行对账。
这个功能应该是个支付公司就有,如果没有就别混了。
二、对大多数支付系统而言,目前已经可以做到对账文件的主动投送功能。
这个功能方便了商户系统和支付系统的对接,商户的结算人员无须登录支付平台后台下载文件进行对账,省去了人工操作的麻烦和风险。
对大型支付系统而言,商户如果跨时间区域很大,反复查询该区域内的数据并下载,会对服务器造成比较大的压力。各位看官别笑,觉得查个数据怎么就有压力了。实际上为了这个查询,我最早就职的一家支付公司重新优化了所有SQL语句,并且因为查询压力过大服务器瘫痪过好几次。
现在比较主流的做法是把商户短期内查询过、或者经常要查询的数据做缓存。实在不行就干脆实时备份,两分钟同步一次数据到专用数据库供商户查询,以避免硬件资源占用。甚至……大多数支付公司都会对查询范围跨度和历史事件进行限制,比如最多只能查一个月跨度内,不超过24个月前的数据……以避免服务嗝屁。
对账这块大致就这样了,再往细的说就说不完了,大家有什么想问的可以单M我或者回复答案。
稍后给大家讲一下风控。1.对账周期:A公司对玩家开放了包括支付宝、财付通在内的十余种电子支付渠道,大部分都是按月对账的,即当月1-10号(视渠道有差异)进行对账,然后11号开始打款/转账。部分渠道可能是本月对上上个月的账,即3月对1月的账,如短信渠道(还分本地和外地)。还有的可能是周结算,如中腾神州行。
2.各渠道成交额: 快钱、易宝等开通了网关支付+账户余额支付的渠道成交量最大,最高的时候可以达到千万级别,最低也是小百万的级别,其次是支付宝和财付通等,最小的是中腾神州行等,每周仅有几千元而已。
3.为何要对账:由于双方都有计费系统,谁都不愿少收钱/多付钱,所以就需要对账后完成打款/转账等流程。而由于网络/渠道的差异性等总会存在双方订单不一致的现象,2者一致的很少很少。不一致的情况有这几种可能:支付渠道扣款成功了但商户这显示订单未完成(玩家会随时反馈给A公司,然后A公司及时的核对该笔订单并给玩家补偿对应金额的游戏货币),支付渠道未扣款成功但商户显示支付成功了,在我经历3个月对账工作中,主要还是前者居多。 不一致的订单总金额如果占当月的交易额度在一定范围内,基本双方都懒得查了(数万甚至数十万笔订单查起来很恼火),然后就是走财务流程打转/转账了。
4.怎么来对账:支付宝、财付通、易宝和快钱等支付渠道给接入商户开放了对账后台的权限,商户可以随时查看月流水,而系统会在月初生成上个月的所有订单列表,这个订单列表可能有成千上万行(支付渠道订单号、商户订单号、订单金额、下单时间、完成时间等),而A公司本身的充值系统也可以导出订单列表,好了,根据订单号来匹配,筛选出不一致的订单,然后逐个的去查吧。
5.对账要多久: 对账这个事情真的好恼火啊,2个Excel表格一共成千上万的订单,开始是通过Excel透视表/筛选等各种方式弄,后来找程序员同事写个了工具,但比对完了还是有数十甚至上百个不一致的订单,然后这些只能从2个后台挨个逐笔的对,一共10多个渠道啊,现在想起来都觉得不堪回首。不过也有例外,A公司通过程序实现了QQ币每日对账,如果前一天双方订单不一致,系统则会将不一致的订单号邮件发给相关人员,然后针对这几笔订单操作即可。一致的话就不会发,总得算来,QQ币每月不一致的维持在30笔以内。
6.谁来对账:支付宝、财付通等支付渠道跟商户联系的人分3类:销售、技术和商务(姑且这么叫吧)。一般销售会负责前期支付渠道的谈判和接入,技术则负责具体的接口调试和实施以及日常运维,商务则负责商户的日常维护和渠道的监控以及对账事宜,如支付渠道需要维护或调整,商务会提前知会给各大商户,然后商户这边出公告、临时关闭该渠道入口。部分公司销售和商务的职能分的不是太细,都是1个人完成的。如果商户的月成交额达到千万级别以上,支付渠道这边就会对你格外的重视,貌似我了解的几个支付渠道是销售人员在直接跟商户打交道,然后商户该月的流水决定了销售人员的奖金和提成。
7.争议比例范围: 相对于一个支付渠道每月几百万的流水,几百甚至上千元的争议订单就显得微不足道了(我接触的那段时间,基本最多的也就在千元左右),商户需要及时的从支付渠道那儿收回资金以支付广告费和公司的运作,不可能也没必要为了几百甚至上千的金额拖几天,先把无争议双方认可的金额走完流程再说,剩下的部分慢慢再对账。 再者支付渠道方面1个人可能负责数十家商户,天天被这些订单恶心着。麦当劳肯德基还有0.1%的损耗,工厂还有次品率呢,更无须说商户和支付渠道的这些争议订单了。
8.商户如何风控:支付渠道上线前肯定是需要在各个浏览器、操作系统下进行调试的,调试无误后才会上线。而网银类一般都有支付上限,各个商户也在充值页面限定了单笔支付的上限,而对于数据负载这块,商户这边单个渠道每天的订单笔数能有5000笔就不错了,差不多也就每分钟4笔的请求量,这个相对于游戏开服时登陆/加载的数据量来说不算大吧。而客服人员也会24小时关注玩家反馈的充值问题,有了问题商户能解决的就商户搞定了,搞不定的也会临时关闭渠道入口并通知支付渠道来一起搞定吧,所以更大的风险应该是来自于支付渠道本身吧。