简单聊一聊对账

对账是会计和金融系统中的重要环节,用于确保双方交易记录的一致性。本文详细介绍了对账的概念,包括日常生活中简单的支付场景,以及在系统层面的对账流程。对账系统通常包括本地数据处理、第三方数据处理、数据核对和差异数据处理四个模块。对账测试则关注数据提取、文件验证、差异处理等方面,确保系统的准确性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是对账?

对账作为会计学习中重要的一环,一般发生在记账之后,结账之前。在我们的日常测试中,基本上各个项目都包含了 对账 这一重要部分,有的是月度对账,有的是日总对账,也有的是小时段对账,甚至年终决算时还有年度对账。那么,什么是 对账 呢?我们来看一下下面这个场景,你一定不陌生:

我们每天早上在公司楼下路边摊买完一份早餐,然后用微信/支付宝扫码支付了 5 元。你跟老板说支付了 5 元,甚至给老板看一下支付结果,又或者老板的大音响发出“收到 5 元”的提示,老板一看手机确实收到了 5 元的进账,然后交易结束。整个过程,你说支出了 5 元,老板说收到了 5 元,这就是一个简单的 对账 过程。我们经常使用微信或者支付宝就会发现,微信钱包功能中,每个月会统计月度账单,支付宝或者淘宝每年会有年度账单汇总,我们拿到汇总账单,可以和当前统计时段中每一笔详细交易做对比,这也是做 对账

二、为什么需要对账?

那么我们为什么需要对账呢,正常情况下我们扫码支付完早餐钱,不是可以直接拿着早餐就走了吗?那你也一定遇到过这种场景:你的手机显示支付完成,老板那边的大音响迟迟没有发出收到支付款的提示,这个时候这笔交易存在疑问的时候,就是 存疑数据。对账系统就是要及时发现这些存疑数据,找出存疑数据,生成差错数据汇总,然后系统或者业务人员根据这些差错数据报表及时进行干预处理,确保两方的账务交易正确一致。

三、对账系统

        一个简单的对账系统主要可以分为四个大的部分:本地数据处理模块,第三方数据处理模块,账务核对处理模块,差异数据处理模块。

 3.1 第三方渠道数据处理

        第三方渠道数据主要是以文件的形式进行交互下载,通常对账过程中,会以第三方渠道推送过来的对账文件为准。文件类型主要有TXT,csv等类型,获取方式主要有定时推送,接口调用传输,人工下载等,其中人工下载效率最低。

 

通常第三方推送过来的对账文件内容也不尽相同,从文件路径,文件名,文件头,文件详细记录等,都有一定的规范和约定。但是一些必须的字段基本都是包含在内的如:

  1. 商户号;
  2. 订单号/交易流水;
  3. 账户号;
  4. 交易日期;
  5. 交易金额;
  6. 交易状态;
  7. 原订单号;
  8. 备注等;

3.2 本地数据处理

        本地数据处理主要指的是我方流水数据记录汇总处理。按照一定的时段、规则对数据库中的数据进行查询汇总,为了减少数据库和后续对账的压力,这里一般只需要对核对的字段进行提取组合,无需提取整条流水记录。

3.3 数据核对处理

        数据核对处理部分,就是将我们上述经过处理得到的两部分数据,进行差异对比。这里经对比通常会出现以下几种情况:

  1. 本地系统数据有,对方文件数据无,我们称为 本地有,三方无
  2. 本地系统数据无,对方文件数据有,我们称为 本地无,三方有
  3. 本地系统数据有,对方文件数据有,但是金额或者某个字段存在差异;
  4. 本地系统数据和对方文件数据一致,通常称为 平账

        我们经过特定的 规则,把两方数据记录进行比较核对,筛选出 平账 以外的 存疑 数据,然后把这些数据存在另一张表中,这通常是diff差异表。差异表中的数据存储起来便于后续继续处理(如有的项目会在规则允许的时效内,把这一部分 存疑 数据捞起继续进行核对处理)。核对处理的方式也是多种多样,有的项目会自己写一套核对规则放在系统中进行对账处理,也有的项目因为需要处理的数据量庞大,选择接入大数据进行处理操作。

3.4 差异数据处理

        首先我们简单讲解一下为什么会有差异数据,还是以支付为例,像每年的双十一,双十二,这种发生交易量巨大的时刻,通常产生差异数据的情况是很多的,比如2021年11月10日23:59:50的时候,你输入完支付密码,这个时候一般会有短暂的转菊花的界面(假设此时系统没有崩,服务器正常),大约数秒后,会返回一个对钩显示支付成功/完成,那么本地会认为这笔交易发生的日期是2021年11月10日,通常trans_data字段会存 20211110,当这笔交易传送到第三方渠道记录时,时间可能已经是2021年11月11日00:00:03,那么在第三方渠道数据库中,这笔交易的trans_data字段会存20211111,可以发现同一笔交易,在两方的标记交易时间是不一致的,前后会差一天(这里我们默认日切时间为每天0点,也有系统的日切时间为每天15点,暂不考虑非工作日),当取数据完成每日对账时,必然会有一天存在单边数据。除了这种日切问题造成的单边数据差异外,造成单边数据情况原因还有可能是网络波动,数据环境原因(一方的测试/灰度等公用)等。

对于差异数据的处理,在对账后这些存疑数据通常会被放到diff差异表中,存疑,不代表 错误,这里我们要注意甄别。我们只是对这笔交易暂时存在疑问,不做定论,相当于挂起,我们再过一天(也有两天、三天)继续尝试将该笔数据捞起进行对账。如果超过规定的时间,假如连续三天都没有对上,那么这笔数据通常会被标记为 超时失效 的状态(具体项目差异处理)。

四、对账测试要点

        现在对对账有了一个简单的了解,那么从测试的角度如何进行测试呢?这里我们可以通过将对账按照上述的几个模块进行划分测试,即本地数据测试,第三方数据测试,对账场景测试,差异数据处理落库测试等。

        第三方数据通常来源第三方,我们只能模拟造一些虚拟数据,但是为了对账合理性,这里我们以本地交易数据为基准,根据一定地格式和名称,模拟生成第三方给过来的待对账的文件。本地数据则来源于我们通过接口报文发起的交易数据,两方数据均有了后,开始埋数,结合后续对账会出现的场景,通常我们增删修改本地数据来模拟在对账过程中会出现的差异情况。数据埋好后,开始进行对账处理测试,处理完成后,检查对账结果,明细,差异数据等。

        简单来说有以下几点:

  • 待对账数据提取加工验证;
  • 待对账文件格式、内容、路径、空文件验证;
  • 对账处理字段比对,相同差异处理等验证;
  • 差异数据落库处理验证;
  • 一些异常场景如:对账批次中断,续作,失败重做,空批处理,非终态交易记录处理,历史数据对账等;

小技巧:

  • 数据库中的数据,前后状态保存备份,便于比较变化;
  • 大数据抽数任务,善于查看日志,便于定位抽数逻辑,抽数表;
  • 重跑时记得清理上一次的结果,删除语句及时注释掉,防止勿删;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值