在支付渠道中,除了联机交易以外,最重要的功能是对账,而对于不同的支付渠道,支持的对账方式都不同。这篇文章就给大家详细讲讲支付渠道对账设计的那些事。
对账单获取
通常我们接入的支付渠道比如支付公司、银行、银联,在提供联机交易API以外,一般都提供了对账单下载服务,还有一些仅提供账单交易查询接口或者提供从管理台下载账单文件的方式。
所以在对账单获取上,我们需要考虑的问题如下:
1.下载方式不一,HTTP,HTTPS,FTP的,都有。下载程序需要按照渠道的协议来处理。另外还需要提供手动导入的方式。
2.下载时间不一,一般是凌晨12点后,但是具体生成时间通常不确定。如果在第一次取不到对账数据,需要尝试过一段时间重新读取,另外在做的过程中还可能遇到取对方对账数据有误,需要提供手工改对账文件重跑的方式。
3.对账单格式不一。TEXT,XML,CSV,ZIP的都有。为了后续能够统一处理,在账单下载完成后,需要进行标准化处理,根据不同的渠道的文件格式进行适配,然后统一记录到数据库或者标准格式文件。
对账单内容标准化
对于不同的对账单内容获取方式,我们都需要进行标准化,也就是提取出通用的关键的要素。
通常来讲,我们需要关心对账单内容有:支付渠道流水号、商户订单号、金额、状态标识(成功,失败)、交易时间、支付时间、清算日期、交易类型。支付渠道流水号、商户订单号用于唯一确认一笔交易,金额、交易类型、交易状态为交易的关键信息,清算日期为对账单里这笔交易对应的清算资金日期。
对账记录内容通常包括交易记录和退款记录。
本系统交易记录
对账交易,其业务意义更多的是在每天日终,确认联机交易中发生调单的交易或者未知的交易是否成功,然后进行相应的账务调账处理。
所以我方需要抽出当天发生的所有交易流水,成功、未知以及失败的(极端情况下会出现我方失败但是渠道成功的情况,比如我方系统或者渠道系统出现问题)
对账过程(轧帐)
由于交易都是我方发起,所以理论上,渠道方应该是我方交易的子集(我方还有一些交易掉单的时未发送到渠道方的)。但是实际上由于存在交易跨日问题,可能渠道方也会多出我方认为的T-1日或者T+1日的流水。
所以对账过程会有两步:
1.以渠道对账文件的表为基准,程序逐行读取并与我们系统的交易记录对比,查找出差异记录。
2.以我方对账文件的表为基准,程序逐行读取与渠道对账文件对比,查找出差异记录。
对账结果(输出差异记录)
对账处理完成后,数据会分成几部分:
1.我方和渠道都是成功的,这种是正确交易
2.我方多的成功交易,渠道不存在,这种需要留到第二天再对
3.渠道多的成功交易,我方不存在或者失败,这种需要进入差错转人工处理
差错处理、平账
对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。
差错处理这块根据各公司运营实际情况进行处理,优先自动化补偿或者冲正,然后再人工介入调账。
总结
对账工作是一个非常标准化的流程,需要尽可能考虑到所有的异常情况,根据经验做好差错处理。