对账系统,从入门到精通

自动对账系统的设计实现 需求背景 现在每个月大概有几百万个订单,来自十几个不同的渠道,同时区分货币和子渠道,财务在进行对账的时候只能从对方后台下载excel对账账单,然后从我方统计出相应时间内的订单数,然后挨个excel进行累加求和,最后对比总单数和总金额。 痛点 这样整体进行对账无法确认差异明细,一旦出现差异很难在上百万的订单中找出差异的订单。 每个渠道散落在不同的国家,渠道后台导出的时间和我方后台使用的时间时区并不一致,可能会导致由于时区产生的几小时数据误差(比如我方是UTC,对方是UTC+8,对方以UTC+8的标准导出2月 阅读详情
AI摘要

本文聚焦于不同业务场景下对账系统的构建与设计。先介绍对账的定义、场景、模型及架构,接着阐述对账数据管理,包括渠道数据、自有数据和结果数据的获取与管理。然后说明对账项目的配置化设计,涵盖交易和资金对账项目。还提及对账引擎的控制、核心逻辑及结果管理,最后讲述差错处理。

见字如面,我是军哥!

我很少推荐公众号,因为符合我要求就很少,我要求是长文干货且能持续输出的,宇宙正好我的条件,你们先看下面文章,尾部有公众号卡片,直接关注,24年这个时候还在真正输出的人太少了~

账目核算是财务工作的必要部分,随着线上交易体量越来越大或者说对财务自动化线上化的效率提升需求越来越高,为了提升核对效率以及准确性,要将核对业务系统化、线上化、自动化。如何构建设计一套不同业务场景下的对账系统是本文的重点。

1.对账概述      

日常生活中每天都在对账,比如去餐馆吃饭付款,会对老板说一声“老板,钱付过去了”,老板检查收款情况或者听到语音播报后回复一声“好嘞,下次再来”,这就是一次最简单的对账。再比如在淘宝开了一个店铺,每个月几千单的交易、发货;次月末都拿着所有的订单明细和支付宝收款记录逐笔做一次核对,保证发过货的订单都收到款了,这是一次更复杂的核对。

1.1.对账的定义

对账就是“账证实”的核对,“账”是账目,“证”是凭证,“实”是实际资金或者商品。常见的核对模式有三种:账证核对、账账核对、账实核对,确保账证实两两的一致性。如在饭馆吃了一碗面,其中点菜单就是原始凭“证”,付了10元钱是“账”,老板电脑记录10元是“账”,老板看到账户中余额增加了10元是“实”。

7779c89d3e2eac5d05ef968e5d5baee7.png

从财务范畴来看,证就是会计凭证,比如发票、小票、出货单、收据、交易系统的支付记录等都是原始凭证;而账呢就是财务的账目,账务系统的账务记账,金蝶的科目余额等都是不同的账目;而一笔交易会记录在很多的环节,比如账务系统,金蝶等。

从广义的时间看核对一致性,核对的就是数据,其中包括商品数据、用户数据、卡券数据等。财务范畴的账证实需要核对,而非财务范畴数据也需要核对,比如今天应到10人实到8人,军训时的报数等其实也可以称为对账,我们暂且称为“广义的对账”。

对账的广义定义:为了确保同一个事务的数据描述在不同场所下的记录一致而进行的相互之间的一致性比对。

为什么要对账呢?首先在财务范畴,这是一个必要做的工作;其次,从业务视角看,如今的交易链条越来越长,数据在众多系统之间难免会出现丢失或者差错的情况,所以为了业务的正常运转并及时发现问题,需要确保系统间数据的一致性。最后,从公司的角度看,需要确保“不少收一分钱,不多付一分钱”,保证资金的安全,不然卖了多少货,收了多少钱相互之间无法自洽,最后全是糊涂账。

综上所述,对账是必不可少的;对于交易体量巨大的互联网公司更是必不可少,而且系统化也是必须的,单靠人工难以满足需要。

1.2.对账场景和模型

常见的对账场景包括三方支付公司内的对账、电商平台内部的对账、金融及清算机构等机构内部的核对等,其中:

三方支付公司的对账:主要是核对自家的交易记录和银行清算数据之间的一致性;银行清算数据(应收应付)和银行结算数据(实收实付)的一致性;同样也要核对与账务系统数据的一致性。

电商等服务平台的对账:主要是核对自家的交易数据和三方支付公司的清算数据的一致性;三方清算和结算的一致性;三方机构结算到企业对公户的资金的一致性。

(1)对账模型

对账模型根据核对的数据种类以及核对模式的不同可以分为交易对账、资金对账、余额调节对账、其他对账等

2e28d6fa16992ff710a838f1011bbcb5.png

交易对账模型:交易数据之间通过唯一标识进行一对一、一对多、多对多核对业务;

4643871a06fee2a1a6a9fc5cea81f739.png

资金对账模型:将交易数据按照款项类型进行汇总之后进行核对,比如收款,手续费;

39fa92df9cbf0ecba79c0e0b68aa7ae2.png

余额调节核对:将系统记账余额和实际资金账户余额经过在途调整后进行一致性核对的业务。

13b7f9fd75b68401b8709fdb73441ec2.png

(2)搭建对账系统

对账系统是通过系统解决方案,对需要核对的数据按着设定好的规则进行核对校验,产出核对结果,并对核对结果进行对应的差错处理的自动化信息系统。通俗来说就是将人工核对数据一致性的事情交给系统去做,只需要预先配置好各项规则即可。对账系统应具备以下基础能力:

  • 可以便捷的获取需要核对的原始数据,如平台数据、渠道数据;

  • 可以对文件数据进行解析或者二次加工;

  • 可以灵活配置核对规则;

  • 可以查看核对的结果;

  • 可以对差异进行追踪管理和处理;

  • 可以对外提供核对结果;

  • 可以对外输出数据。

如果要实现一款对账系统,首先应该明确相关的业务模型,其次需要抽象出业务的核对模型,然后针对核对模型选择合适的核对方案,最后针对核对方案设计系统方案、研发、上线、投入使用。

1.3.对账架构图         

本部分将提供一个通用的核对架构,可以满足大部分的核对诉求

98ce8e566ae16bd1450ab3bd66f051b2.png

整个架构图包括左中右三大部分,左部分位业务系统层,为平台的内部数据,例如订单数据、交易数据、卡券数据、支付数据等;右部分为外部渠道层,为外部支付数据,例如三方支付渠道的清算数据和结算数据;中间部分为对账系统层,核心职能就是完成左右两部分数据在何种模型下的核对业务,包括数据管理、数据解析、交易核对、资金核对、核对结果管理等一系列的能力,整个核对业务主流程如下:

  • 按核对频率获取业务支付数据;

  • T+1或其他频率获取三方清算文件和结算文件;

  • 将清算和结算文件进行解析存储;

  • 根据对账项目配置完成交易数据和清算的核对;

  • 完成清算数据和结算数据的核对;

  • 对交易的单边数据和资金核对差异进行管理和处理。

2.对账数据管理         

对账离不开原始数据的获取和管理,对账数据主要包括渠道的数据、平台的自有数据,当然也应该包括核对之后的结果数据。

8b5ffaffb610a6c32ddad8c49b42ac15.png

如何获取个管理渠道数据,以及平台数据通过什么模式和规则获得,对账结果数据如何存储和查看,是本小节的重点。

2.1渠道数据获取与解析         

支付交易的通道提供方,例如微信、支付宝、网联、银联等,都是按照约定频率和时间提供交易文件,一般是2份,清算文件和结算文件,其中清算文件记录支付明细,结算文件记录账户的实际资金变动明细。

74e2994f77793944dbfb5a0ea39bb3b8.png

一般可以通过通道方提供的专属接口下载对账文件,如果没有接入下载接口或者通道侧本身就不提供下载接口,可以暂时采用人工下载的方式获得文件,获得文件以后传到对账系统解析出对账数据并存储,以待核对。

(1)对账文件类型

主流文件类型以Excel和txt为主,其中Excel是常见的文件类型,这种类型的文件阅读性强,下图,为从支付宝后台下载的结算文件。

06c5fe257ea217290031941a04cb0abb.png

某些通会提供Txt格式的对账文件,这种类型的对账文件阅读性比较差,数据列的分割符种类也比较多,在文件解析时存在一定难度,如下图所示

d9548ffad9f92345f99b69889890be51.png

还存在一些其他格式的文件,例如xml报文格式、csv格式、pdf格式等。无论什么格式的对账文件,核心用途都是为了获得交易数据进行核对。

(2)对账文件获取方式    

常见的获取渠道对账文件的方式是通过接口,通过机构提供的文件查询和下载接口获取对账文件,如下图所示,是从支付宝开放平台截取的对账文件下载接口示例。

41a7e204c8ddcc4bfa2a7ed877dd5207.png

29153effacada25f0720a5cdf5b33871.png 

同样可以通过人工下载的方式获得对账文件,如果技术能力资源不足,或者暂时没有接入接口,可以采用人工下载的方式,然后将文件上传至对账中心,通过解析文件生成系统需要的数据。

(3)对账文件管理        

从渠道获取到的文件一般存放在对账系统指定的ftp内,并对文件或者文件夹按照命名规范进行命名,通过文件路径查询和下载该文件

92a00666d5b48ca87547672a15e47883.png

(4)对账文件解析器配置

对账文件解析是指将文件里的数据进行处理,转换成数据库数据,以某种形式存储在数据库内,因为文件数据不能直接被系统读取,文件解析模式有原样解析和通用模板解析。

原样解析是不改变文件的数据列数和内容,在不减少文件数据列数的情况下原汁原味的把数据解析出来,可以根据需要增加列内容,比如账号、对账时间等。该种解析方法有以下的优缺点和适用性。

  • 优点:不需要配置解析器,每一个文件研发好固定的解析器进行复用;

  • 缺点:每个文件类型需要建一套数据表,维护成本高;

  • 适用:通道少的平台,一般的商户都仅有微信、支付宝,可以采用原样解析。

(5)对账数据查看         

数据解析到数据库里以后,为了便于排查问题直接查看数据或者其他用途,还需要提供查看数据的后台工具,分别按照数据类型展示相应的数据,例如平台的支付数据、微信的清算数据、微信的结算数据、支付宝的清算数据、支付宝的结算数据、易宝支付的付款数据等,如图所示是平台业务数据的后台页面。

30978b9ab339652ae2f04eb05c1b87e8.png

2.2.自有数据获取与管理         

获得渠道文件账单数据以后需要将其与平台自己的相关数据做核对,如平台的交易数据与清算数据做核对,平台账务数据与银行账单数据做核对。

(1)平台对账数据获取方式         

平台自有数据的获取方式常采用如下形式:

文件获取:业务系统定期(如每日凌晨2:00)生成文件,按照约定规范进行命名,将文件推送至对账系统指定位置(ftp);这种方式需要各业务系统有一定开发量,业务调整时也需要调整文件的生成策略,维护成本略高。

接口接收:对账系统提供对账数据接收接口,类似账务记账接口,业务系统按照约定在相应业务节点发送业务数据到对账中心。

MQ:业务方按照要求在交易成功时发送约定格式的MQ消息,对账系统订阅该MQ,对MQ进行解析后获得业务数据。

SQL:通过SQL定期捞取业务数据,并将数据存储到对账系统数据库中;该方式调整灵活,可以选择在业务并发较小的凌晨进行。

人工上传:对于一些采购的外部应用,比如金蝶系统,数据无法通过以上方式获取的情况下,就需要对账人员定期下载应用内数据,然后上传到对账系统。

(2)数据分类管理         

随着业务的发展,对账系统数据会越来越多,类型也越来越多,包括支付数据、卡券数据、订单数据、三方清算数据、三方结算数据等;每类数据的数据字段有各有不同,如何对众多类型的数据进行管理呢?可以对数据进行分类管理,每类数据单独设置表结构。

首先是设置数据的大类,或者说是一级分类;就像商品类目一样管理数据,如图所示。

ecdded994124f72a782237ea4d7fa4b1.png

然后设置数据子类,在数据分类下面设置数据的子类,并将数据子类关联到数据库表,便于存储数据,查询数据,对账取数,如图所示。

f99409a7cbdcba659ad8677486ec5be0.png

(3)取数规则配置         

配置好了数据分类和类型并关联好了数据表之后,接下来就是配置获取数据的规则了,以通过文件或者SQL两种获取数据的形式为例,如图所示。

edc173ae4950cede5d7cea9a6229f2d0.png

为每个数据分类配置取数方式,如果获取的是文件就配置文件路径,如果通过SQL获取就配置取数sql。对账系统会按照任务配置基于取数规则定期获取对账所需要的数据,并且插入到数据类型关联的数据表当中。

2.3.对账结果数据    

支付数据与三方清算的核对,或者其他数据的两两核对,会得到核对结果,且每一组核对都会有一个组别的名字,这一部分会在下一节详细介绍。

首先是交易对账的核对结果,主要是展示平台支付数据与渠道的清算数据之间的差异,或是可以理解为信息流的差异,针对不同支付类型的差异进行差错处理。

交易对账结果是源数据本身在某个对账项目里的核对结果;而资金对账结果是某资金账号某交易日的资金收付的一致性核对结果;比较平台的资金账收付结果与银行的收付结果是否一致,或者说是银行自己本身的清算与结算的款项否一致

如何存储核对结果呢?核对结果可以存储在源对账数据的表中,也可以单独存储。

存储在源对账表这种方式适合数据简单的对账体系,且同一份数据不会在多个对账项目中进行核对,比如支付数据只与清算核对,这时候数据的核对结果就是默认与另一方的核对情况。

存储在单独的对账表这种方式适合复杂的核对场景,同一份数据会在多个对账项目中与多组数据完成核对,产生多个对账结果,比如支付数据与上游的订单进行核对得出一个对账结果,支付数据又会与下游的清算数据核对得出另一个对账结果。此时支付数据的对账结果有2个,一个是与订单的核对的结果,另一个是与清算的核对的结果,这种情况,对账结果就需要单独存储“某数据在每一个对账项目组中的核对结果表”。

3.对账项目设计 

业务总是在不断变化,新的业务也在不断出现,对账数据也会因为业务的变化发生变化,当接入了新的支付渠道对账设置也需要新增,如果每次都通过研发实现,那么产研成本会很高,本部分将介绍如何实现交易对账及资金对账的对账项目的配置化设计,会极大提升对账项目的管理效率。

3.1.交易对账项目

对账并不是简单的一方与另一方比对,实际情况是会基于业务情况进行很多组之间的核对,比如与微信的核对,与支付宝的核对等。每一组又可以分成更细的组,比如与微信核对,可以分成微信收款核对,微信退款核对,如果微信收款有很多账号,又可以按照微信账户进行分组进行核对,例如微信收款一共有两个微信账号:微信1,微信2,就可以设置4个对账的组

a89e4fc837a3e78167cdc0e97e46e9ee.png

具体如何设置核对组,这个因公司而已,因喜好而已,核心目的只要能完成全量的核对即可,对账项目越少越容易管理,对账项目越多越清晰,各有利弊。

(1)对账项目命名

为了便于管理还需要为每个对账项目命个名字,如何起名也看自己喜好。比如,如果对账组的同学都是女生,都是吃货,因此所有对账项目的名称都可以跟吃相关,如工商9876-卤煮火烧,命名的一个关键原则是要能从名字中看出具体核对的是什么业务。基于这个原则为开头的几个项目起一个如下的名字:

  • 对账项目1:会员购买微信支付-收款

  • 对账项目2:会员购买微信支付-退款 

通过对账项目的名称便可以清晰的知道对账项目1是会员购买的收款核对项目,对账项目2是会员购买退款的核对项目。

(2)对账项目管理  

一个企业可能会存在很多个对账项目,有的甚至高达几百个核对项目。为了便于管理,就需要一个菜单专门管理对账项目,该页面可以查看所有的对账项目;点击设置可以进行该对账项目的配置;右上角的新增可以新增项目,如图所示。

6735bef88426febb4aae1241bb7547be.png

(3)对账项目新增

在对账项目列表点击新增会有一个弹窗可以添加一个对账项目,需要先填写基本信息,比如对账项目的名称、对账启用时间、对账的频次、对账的类型等,如图所示。

4a7b81a8ec431d85e2d4f036fd65bbb4.png

(4)对账项目设置 

设置对账项目主要设置对账项目的执行时间、核对双方的对应数据、核对的唯一标识等一些处理规则。如图所示是一个基础的设置页面,实际工作中需要基于业务场景以及数据特点,对设置器进行一些调整,但是在这个配置基础之上一般难度不大。

bc2f8cdcfc0e103074b65fb3bec80ed5.png

从页面可以看出来,该配置是设置卡系统的消耗数据与订单中的消耗记录进行核对,为数据两方配置了如下的数据选择条件:

  • A方数据为卡数据,数据筛选条件是”交易类型=消耗购买”;   

  • B方数据是订单数据,设置以订单号为唯一标识进行核对;

  • 订单数据的金额如果存在多条则进行汇总;

  • 对账差异的报警接受人,可以填邮件,办公账号等。

完成配置后,一个对账项目就配置完成了;对账系统会照着配置的任务时间每天完成订单数据和卡数据关于消耗明细的核对。

3.2资金对账项目

线上支付完成以后,虽然通道方已经返回支付成功,但是钱最终是不是能正确结算,还需要打一个问号,资金对账就是应收应付和实收实付之间的核对,其中应收应付就是交易记录所记录的成功交易,而实收实付就是收款账户实际的资金入账。

(1)资金对账项目

明白了对账项目的概念以后,接下来要介绍的资金对账项目就容易理解了:一个实体的银行或者收付款账户就是一个资金对账项目,所以说资金对账是按照收付款账户的维度进行核对的。

将一个资金账户设置为一个资金对账项目,比如平台有2个微信收款账户1和2,有两个支付宝收款账户3和4,一个招商对公户5,共5个资金账户,那么就可以设置5个资金对账项目,如下设置:

  • 资金对账项目1:微信账户1;

  • 资金对账项目2:微信账户2;

  • 资金对账项目3:支付宝账户3;

  • 资金对账项目4:支付宝账户4;

  • 资金对账项目5:招商对公户5。

(2)对账项目命名

为了便于管理,还需要为每个对账项目进行命名,如何起名看业务需求或者个人喜好,同交易对账项目命名类似,命名的一个关键原则是要能从名字中看出具体核对的那个账户。基于这个原则为(1)中的几个项目按照“通道方+通道类型+账户号”的命名规则规则进行命名,具体命名如下:

  • 资金对账项目1:微信-收款-账户1;

  • 资金对账项目2:微信-收款-账户2;

  • 资金对账项目3:支付宝-收款-账户3;

  • 资金对账项目4:支付宝-收款-账户4;

  • 资金对账项目5:招商对公-收款-公户5 。

对账文件管理在前文已经介绍过了,账户方一般会在次日提供相应的清算文件和结算文件,那么文件要跟资金对账项目对应上,通过对账文件命名可以知道对应的所属账户,比如制定这样命名规则:通道方+账号+文件类型+交易日期,按照该规则可以得到资金对账项目1的文件命名:wx-1-pay-20210204。

(3)对账项目管理 

一个企业可能存在多个资金账户,为了便于管理,就需要一个菜单专门管理资金对账项目,该页面可以进行对账项目的新增、配置、修改等一系列的操作,如图所示。

b2c707e617fef5edfd259ccf07517107.png

点击右上角的新增可以新增资金对账项目,要填写的信息如下图所示,包括账户名称、关联的交易对账编号、对账起始时间、对账类型、对账频率等基本信息,配置好基本信息以后确定新增即可增加一个对账项目,然后通过设置进行资金对账项目规则的配置。

d9cb501b9c32bd6d06bce938dadbb2ef.png 

(4)资金对账模式选择

资金对账是核对应收应付和实收实付,实收实付就是银行实际资金的变动,使用银行结算账单即可,而应收应付的选择其实有2种方法,一个是使用通道的清算文件作为应收应付,另一个是使用平台的资金账务作为应收应付。

使用银行清算文件做为应收应付的数据源有个缺陷,就是平台的支付记录需要跟银行的清算文件进行核对确保没有差异,然后确保清算文件和结算文件之间的核对没有差异,核对模型的实现如图所示。

1ef113c428ef4d57e69ecde81f66a5a9.png

在新增对账项目时需要关联交易对账,目的就是看一下平台的支付记录和清算文件之间的核对有没有差异,如果没有且资金对账没差异,那么整个对账就没有问题了。

交易对账是按照交易明细进行逐笔核对的,而资金对账并不按照资金明细进行逐笔核对,因为存在轧差以及线下汇入等情况,资金对账需要按照费用维度进行核对,也就是将应收应付和实收实付数据解析成费用项的汇总,对相同款项进行核对,其中的费用项如收款、收款手续费、退款、退款手续费、打款等。

(6)对账项目设置

以核对清算数据和结算数据为例,资金对账项目设置就是设置如何将文件里的数据解析汇总到对应的款项上去的解析规则,将一个资金账户在某一个交易日的资金变动明细进行汇总,得到每一个款项的变动金额,该配置设置如图所示。

f087e5e29e6153fb402e269309cd1b69.png

从页面可以看的出来,该配置中的每一个费用项的配置规则就是将文件里的数据先通过该费用项的“条件组”进行筛选获得属于该费用项的数据,然后取目标数据的金额,并且对金额进行运算汇总。比如例子中的第一条就是:取交易状态=success的数据,取订单金额作为结算金额,如下表所示为一部分案例数据。

07bf0c2fd5ab8d6da50f2dcdd24541b3.png

通过原型中的配置条件组“交易状态=success”,金额配置“正直汇总  订单金额”,可以得到收款=100+90=190。

其他费用的配置逻辑类似,一定要枚举一个资金账户里的每一类费用,不能遗漏,不然会出现资金差异。如此全部配置完成以后,一个资金对账项目就配置完成了,对账系统会按照配置的时间进行账单的解析,得到资金对账所需要的核对源数据。

4.对账引擎

在执行对账前还有几个重要的问题没有解决,即对账的核心处理逻辑,例如对账的连续性控制、时间控制、状态控制、对账核心逻辑、对账结果查看等。

4.1.对账控制         

首先是对账的连续性控制,对账不能跨日,如2号对完才能对3号,如果今天是10号,2号还没对账,那么3至9号的账都不会核对,因为前一天的核对结果会循影响下一天的核对结果,这种控制如图所示。

3e2becef412a5d699f5eecb5fe73a881.png

其次是对账的时间控制,如图10-20所示,系统内需要维护对账的相关时间,主要是对账日期、对账启用日期、最后对账日期,他们的含义如下:

  • 对账日期:交易成功时间或者资金变动日;

  • 对账启用日期:对账项目设定的第一个对账日;

  • 最后对账日期:对账项目的最后一次执行对账的日期。

然后是对账的状态控制,对账状态即每个对账项目在每一个日期是否执行了对账,已经完成对账的项目不需要重复执行对账,除非需要重对,如图所示是对账状态的管理页面。

b724ae15254bcf56194154a2b7698ee0.png 

最后是对账任务流的控制,控制对账项目的任务执行,并在流程中更新其他环节的相应参数。如果主流程的某一个处理关节失败了,那么应该进行任务报警,人工干预重启核对流程,控制流程如图所示。

2f508b53adc6b8b9ad9155da846fd7c7.png

4.2.核心处理引擎

对账最核心的流程就是对账执行流程,实现数据间的逐笔核对的过程,如下图所示。本逻辑流程主要包含三大核心逻辑:实现每一天都完成核对,实现每天的每一个对账项目都完成核对,实现每一个对账项目的每一条数据都进行了核对。并且产出每条数据的核对结果,是对平、单边、还是错账。

33c1151a2a2bad0933c60e7352776154.png

举个例子,经过上面的逻辑处理,对账项目1在x日的对账结果如下表所示,其中单号2是对平,单号1和4是单边,单号3是错账。

ef2da5535b9e37fbbee8fc99b243816d.png

4.3.对账结果管理

通过上面的对账执行,就得到了每一个对账项目的对账结果,包括每个对账项目的对账总笔数、总差异。对账结果包括交易对账结果和资金对账结果2类。

首先是交易对账的核对结果,主要是展示平台支付数据与渠道的清算数据之间的差异,或是可以理解为信息流的差异,针对不同支付类型的差异进行差错处理。

e1658e05db6b1f6bd81bb35326454037.png

交易对账结果是交易对账项目执行对账之后得到的结果,每个对账项目按笔数核对。从页面中可以看到每个交易对账项目的核对日期、总笔数、单边数、错账数、待处理数等,并且可以查看该对账项目在该核对日期的平台明细数据和清算明细数据。

30916a8cfc2e39bf62520eca852083e5.png

资金对账结果是某资金账号某交易日的资金收付的一致性核对结果;比较平台的资金账收付结果与银行的收付结果是否一致,或者说是银行自己本身的清算与结算的款项否一致

898521e574fab3c4d502babe57f75f08.png

资金对账结果是资金对账项目执行对账之后得到的结果,每个对账项目按照费用项核对。从页面中可以看到每个核对账户在该核对日期的每一个款项是否存在差异,并且可以直接查看到该账户关联的交易对账是否存在差异。

91016a9bd3b6a86afbf32e68c6d0c3f7.png

5.差错处理 

对账有两个核心目的,一个是发现错误,另一个是改正错误,即对账差异的处理。对账结果如果有差异,就需要有排查差异的原因,差异原因千奇百怪,但存在必是有原因的,如果暂时查不到具体原因就先挂着,至少我们知道了有一个差异待处理。

差错处理就是消除差异的过程,主要包括发现差异、排查原因、处理方案制定、消除差异等环节:

  • 发现差异:对账对出了差异;

  • 排查原因:排查差异原因,是掉单了、bug、时间差还是其他原因;

  • 处理方案:制定差异处理方案,如时间差造成的不用处理,等待第二天对平;

  • 消除差异:这一步是在对账系统对差异进行标记处理,说明差异已经处理完成了。

5.1.交易差错处理

交易对账是交易数据的逐笔核对,会出现对平、单边、错账等三类结果。对账的差异会单独出现在差异列表等待处理。

bd29ed1fb6f093b5023b1d2ecdb2b80d.png

点击处理,在弹窗中选择处理类型,提交之后可以走一个设定好的流程,也可以直接处理完成。

8ca12ff4f426d5d5201ee516b0b1cfe1.png

其中差错处理类型就是我们要用什么样的方式消除了差异,比如如果是银行成功,我方掉单了,那么就进行补单,补完后就对平了,这样也是保证用户的权益。因为是我方掉单了,所以对账结果是银行单边;等我方补完单后,银行的这笔单边就处理成“平台补单”。系统可以预设一些差错处理类型,设定每个类型的处理流程,便于在处理的时候直接选择使用

8c69cce1550013c32517ead496dea1cb.png

有些差错处理可以实现自动化,让相关系统包装接口直接进行调用处理,比如平台补单可以让订单系统包装一个补单接口,对账系统直接调用进行补单。

5.2.资金差错处理         

资金对账的差异是费用的差异,即收款、退款、手续费等于平台记录的不一致。资金核对完成得出结果后,如果不是解析等技术层面的差异,可以对结果进行一个确认,确认之后差异会生成长短款数据,后面对长短款进行排查原因、进行核销。资金对账结果详情页面如图所示。

aaafb735a3c9b7372b02e6e1eba870e3.png

什么是长短款呢?比如微信的一个资金账户,资金同事直接在微信商户后台操作了一笔转账,或者用户直接用微信转账100元给了这个账户,这时候就会出现微信收款比平台记录收款多的情况,即微信账单的收款总额比平台的记账总额多100元,资金对账就会发现这100元的长款,就是渠道多收了。但经过排查是可以找到这个具体原因的,本质上是平台没有获得这笔转账数据,也就无法记录,通过排查可以操作核销差异。

确认结果以后,长短款模块就会生成一笔该账户的 100元长款记录;长款记录要有账户信息、对账日期信息、费用信息等,如图所示。

6e06cbe10fd6cd5419542d0b54644fb2.png

点击核销可以对该笔差异进行核销处理,在弹窗里选择相应的核销类型,本次要核销的金额,同时也可以选择与前期其他差异进行双边核销,如图所示。

3d758193f94d1ba73a08bcd1490fd06f.png

长短款差异生成的同时也会生成对应的账务凭证,算是一个挂账凭证,为了让账务是平衡的,后续针对每笔资金差异进行排查核销,比如如果确认是人工微信做了转账,那么可以直接核销“资金人工转入确认”,直到长短款没有待核销为止,资金就是准确的了,每笔核销都需要生成核销记录,如图所示。

7068063d5753995f4a07956e2bd81231.png

5.3.差错处理的账务处理       

对账的本质是发现与实际不相符的登记,而不相符本身也是一项“账务”,即挂账,挂在过渡账户中,所以对出差异要记账,这里就选取《清结算的全局实现原理》中的跟挂账相关的部分,如下所示,分别是“结算挂账”“支付挂账”“资金挂账”

ba5f7d8275ed81e8065401206d316ce9.png

aacef2cfd439bc1ad319b9343c8be9e4.png

b58d634ae8f9488b2692ef3ff12e0b23.png

那么,差错处理就是对挂账的消除,因此,进行差错处理也要记账

64276580c07119781c104aa6d1208d35.png

推荐阅读

1.9万字:支付清算生态

3.5万字:一文搞懂“支付系统”

对账系统从入门到精通 想必大家对“对账”这个词都不陌生,单从字面意思就能略知一二;其实就是字面意思;“对”就是核对,“账”就是账目;“对账”就是核对账目;账目核算是财务工作的必要部分,随着线上交易体量越来越大或者说对财务自动化线上化的效率提升需求越来越高;为了提升核对效率以及准确性,势必要将核对业务系统化线上化自动化;那么如何构建设计一套不同业务场景下的对账系统呢?接下来的“对账系统设计”10篇文章将带领大家学习如何设计一个对账系统。 陈老师设计过某支付以及某金融的对账系统,不仅是交易的核对,资金的核对;更有更复杂.. 阅读详情

相关推荐

kotlin中文文档pdf,,分布式架构演进+相关笔记参考

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我。

2401_83703893的博客 920

万字长文详解对账系统设计,推荐收藏

想必大家对“对账”这个词都不陌生,单从字面意思就能略知一二;其实就是字面意思;“对”就是核对,“账”就是账目;“对账”就是核对账目;账目核算是财务工作的必要部分,随着线上交易体量越来越大或者说对财务自动化线上化的效率提升需求越来越高;为了提升核对效率以及准确性,势必要将核对业务系统化线上化自动化;那么如何构建设计一套不同业务场景下的对账系统呢?

LoveSummer 3万+

对账系统设计~百万级数据秒级对账

对账是支付系统必不可少的一部分,可以及时发现交易环节存在的交易差异,运营人员可以及时修订交易差异,最重要的是可以发现支付系统存在的问题。一般对账主要分两部分,渠道对账、商户对账,渠道对账是支付平台交易数据和对接的各个支付机构数据进行比对,商户对账是给使用此交易平台的商户生成特定格式的交易账单文件,商户获取然后自己去核对。本篇文章我们将探究如何设计一个能够支撑日交易量百万级的对账系统,并给出核心代码实现,仅供参考。

qq_38940885的博客 4470

对账系统,这下彻底搞清楚了!

https://mp.weixin.qq.com/s?__biz=MzkwODE5ODM0Ng==&mid=2247493183&idx=1&sn=3420d089d1cab4e07587c6a4f26d980b&chksm=c0cf0e9af7b8878c50f7db7571a50930f03c8bedd142d4cc2d4427260674fdc2c339d644887a&scene=90&sessionid=1678843889&subscene=236&key=98b8f0d2f1a00f6bf12

竹林幽深 1875

支付系统设计五:对账系统设计01-总览

从《支付系统设计一:支付系统产品化》系列中支付网关系统设计我们知道,在对接支付渠道的时候只需要产品经理进行后台渠道相关信息的配置,以及开发人员编写的模板、脚本就能够完成支付渠道的对接了,同样的,通过此模式也可以完成支付系统和支付渠道的对账。后文详细展开具体实现。

qq_38940885的博客 1851

实战指南:50个高效Conductor工作流模式从入门到精通

还在为微服务编排的复杂性而头疼吗?本文将带你系统掌握Conductor工作流的核心模式,通过50个实战案例助你快速构建可靠的企业级自动化流程。 ## 为什么选择Conductor工作流模式 在现代微服务架构中,服务编排的复杂性往往成为系统稳定性的瓶颈。Conductor作为Netflix开源的微服务编排引擎,其核心价值在于: - **流程可视化**:通过图形化界面实时监控工作流执行状态 -

gitblog_00935的博客 892

智能座舱语音测试避坑指南:从唤醒率到方言识别,这些场景你测全了吗?

本文深入解析智能座舱语音测试的关键场景与避坑指南,涵盖唤醒率测试、方言识别、多音区交互等复杂场景。通过实战案例与自动化测试方案,帮助开发者全面提升语音系统的可靠性与用户体验,特别关注环境噪声干扰与方言覆盖策略。

weixin_42613501的博客 499

初探支付对账

有个男人叫小帅,娶了个老婆,叫小美,早上,小美给小帅二十块钱买早餐,小帅买了包子、油条、豆浆回来,并说钱已经花完了,小美不信,拉着小帅到了早餐铺,拉着老板的账单对了一下,发现还剩两块钱……用户在电商平台下单,支付支付服务向外部支付渠道发起支付请求支付渠道扣减用户余额,或者请求银行扣款完成支付后,支付服务同步支付状态,电商平台开始履约(发货)到这就完了吗?还没有,支付渠道还要做清结算,把交易的余额结算到商户账户。

三分恶的博客 1937

避坑指南:ZYNQ平台上AXI 1G/2.5G Ethernet Subsystem实现IEEE1588的5个关键点

本文详细解析了在ZYNQ平台上使用AXI 1G/2.5G以太网子系统实现IEEE1588精密时间协议(PTP)的5个关键避坑点。从硬件选型、Vivado工程配置到Linux驱动适配,提供了实战经验与优化技巧,帮助工程师在工业自动化、电力系统等场景中实现纳秒级时间同步。

weixin_30687051的博客 238

如何实现VMware虚拟机上的ubuntu与windows主机共享文件夹

windows主机部分   在硬盘上任意位置新建文件夹,此处命名为Share,实际上随意。 接下来右键属性,操作如下系列图所示: 在硬盘上任意位置新建文件夹,此处命名为Share,实际上随意。 成功修改后,显示如下界面: VMware部分 ubuntu在关机状态下,点击“编辑虚拟机设置” 接下来,开启ubuntu系统,在终端输入: ·· vmware-hgfsclient ·· 将会显示如下画面,但是此时你可能找不到 /mnt/hgfs 这个路径,如果找不到该路径,则需要在虚拟

Mr.Sliver的博客 8221

业务人员的数字化素养:从「会用工具」到「懂数据流」,再到「懂 IT 协作边界」

2026 年 9 月的一次电商财务沙龙现场调研,47 位业务负责人举手回答"你能熟练用几个数字化工具"——

QEasycloud的博客 56

并网逆变器学习笔记8---平衡桥(独立中线模块)控制

参考文献:《带独立中线模块的三相四线制逆变器中线电压脉动抑制方法》---赵文心。

圆桌骑士的博客 7332

分布式架构从入门到精通:我用5年实战换来的7大核心原理与77个踩坑复盘

分布式架构核心知识体系│↓ ↓ ↓ ↓ ↓理论基础 数据一致性 事务处理 高可用 基础设施│ │ │ │ │CAP BASE Raft Paxos 2PC TCC 熔断 限流 MQ 缓存定理 理论 协议 协议 3PC Saga 降级 流控 队列 中间件。

qq_31142761的博客 181

量子计算入门指南:密度算符的核心概念与应用解析

本文深入解析了量子计算中密度算符的核心概念与应用。作为描述量子系统“状态的状态”的关键数学工具,密度算符能有效处理混合态与子系统描述,是理解量子噪声、量子纠错和开放系统演化的基石。文章通过对比纯态与混合态,阐释了密度矩阵的数学定义与物理意义,并结合代码示例演示了其在实际量子计算问题中的强大威力。

day7的博客 470

百度api爬虫(1)从百度api中爬取地点数据

几句废话———— 百度api就是基于百度地图的开发接口,这么大的地图公司居然给开发接口真的很感激哎! 所以,言归正传。现在项目需求要把乌鲁木齐市内的所有清真寺都用矢量圈出来,然后做点统计啥的,最后做个专题图产品。 怎么把清真寺找出来? 领导的意思是你一个一个上网搜吧,这就是你的工作量。那我当然要想办法啊,边工作边学习工作才有意义嘛! 然后就发现百度api可以实现我的需求。其实可以通过py...

weixin_43105618的博客 8901

金融科技低代码开发与AI赋能的实践探索

低代码开发平台通过可视化配置和模块化组件,显著提升软件开发效率,特别适合业务规则复杂的金融科技领域。其核心技术原理包括可视化编程、模型驱动架构和自动化代码生成,能够将传统开发周期缩短50%以上。在金融行业,低代码平台需要满足严格的合规要求和性能指标,如完整的审计追踪和3000+TPS的交易处理能力。结合AI技术后,可实现智能代码生成和自动化测试,某银行案例显示规则维护效率提升60%。这种技术组合正在支付对账、反洗钱等典型金融场景中创造价值,推动行业数字化转型。

weixin_33714884的博客 325

Fortigate 在AWS中配置HA

方案1: 1、将两台服务器配置在相同可用区中,使用飞塔原生HA功能,可以实现配置同步功能。 2、配置SSLVPN,在主服务器不可用时,可以实现自动切换到备用服务器继续提供VPN服务。 当前问题: 1、主挂掉后可以自动切换到备,但是原主服务器修复后不会自动切换到主状态。 2、如下图所示切换中丢包明显,需要客户端开启“保持连接”功能。 配置过程如下: 1、整体架构 2、创建VPC和子网,如下图所示...

子苏蓝莓的博客 892

编程能力成为职场新标配:从入门到实战指南

在数字化转型浪潮下,编程能力正从专业技能演变为通用技能。理解变量、循环等基础概念是编程入门的起点,而掌握Python等语言能实现自动化处理、数据分析等实用功能。这种能力不仅能提升个人工作效率,如自动化报表生成、内容批量处理等场景,更成为职场竞争力的重要组成部分。随着低代码平台普及,编程学习门槛降低,零基础者可通过系统学习路径快速入门。从基础语法到项目实战,合理规划学习路线是关键。

weixin_42634811的博客 140

Open3D——RANSAC 三维点云空间直线拟合【2025最新版】

使用RANSAC算法在点云数据中拟合三维空间直线的python代码实现。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 7354

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

工程师成长路径:从入门到架构师,方向比努力更重要

在技术领域,从初级开发者到资深架构师的成长,不仅是编码能力的积累,更是思维方式与工程习惯的跃迁。计算机科学的基础知识、系统设计原则与持续复盘的方法论,构成了职业进阶的底层支撑。无论是非科班出身还是名校毕业,掌握正确的学习路径与问题排查技巧,都能有效提升技术价值。面对线上故障、性能瓶颈与需求变更,具备全局视角和稳定可靠的问题解决能力,远比追逐热门框架更重要。本文结合工程实践,探讨如何通过刻意练习、源码阅读和主动扛事,逐步建立不可替代的技术影响力,为长期职业发展奠定坚实基础。

weixin_34043301的博客 348

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

第2章:定位——找到你独一无二的生态位 /《程序员AI时代实现 直播知识付费实现月入100万的落地详细实战方案》

定位不是一次性动作。定位是一个持续的、在行动和数据反馈中不断微调的过程。你今天的定位假设和你半年后经过几十场直播和几百个用户反馈之后形成的定位——应该不完全一样。这不叫摇摆不定,这叫根据真实世界的信息迭代你的认知。在你进入第三章的课程设计之前,我要你做出的唯一承诺是:你已经选定了一个具体的定位方向——哪怕它不完美、哪怕将来会调整——并且你已经准备好在下一周内用一次免费的公开直播来测试这个定位假设。如果你还没有做到这一条,不要往下看。做到了——翻到第三章。

AI天才研究院 472

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

电商幂等设计全解析:从下单到支付,如何为系统“防重放”

电商系统必须保证幂等性——同一操作执行多次与一次效果相同,否则网络重试易引发重复订单、重复扣款等资损事故。本文围绕订单创建、支付回调、库存扣减三大场景,提供完整方案:订单采用前端UUID+Redis原子缓存;支付依赖第三方流水号唯一索引与状态机;秒杀库存用乐观锁SQL配合Lua脚本保证原子扣减。同时给出缓存时长设计原则、令牌来源选择及MQ消费防护建议。幂等本质是用极小存储成本(如2MB内存)规避巨大资金风险,是电商系统最值得投入的防线。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 4957

AI编程的正向价值与工程风险平衡指南

AI编程不是替代开发者,而是将人类长期积累的隐性工程模式(如API调用习惯、日志规范、状态机设计)压缩为可即时调用的知识单元。其核心原理在于‘模式识别压缩比’与上下文感知检索,真正提升效率的区间是高重复性+中等复杂度代码。技术价值体现在加速DTO层开发、增强跨文件知识关联、倒逼工程思维显性化;典型应用场景包括微服务接口生成、遗留系统重构、团队知识沉淀。但若忽视工程风险管控,极易触发逻辑幻觉、上下文污染、安全盲区与技术债雪球——这正是‘AI工具’与‘编程’协同失效的关键断点。本文聚焦一线开发者真实工作流,解析

weixin_33402252的博客 257

基于语义理解的AI招聘辅助系统:从简历解析到智能匹配的工程实践

在信息技术领域,自然语言处理(NLP)与机器学习技术正深刻变革传统工作流程。其核心原理在于让计算机理解人类语言的语义,而非简单匹配关键词。这项技术的工程价值在于将人力从重复性信息处理中解放,聚焦于高价值决策。在招聘场景中,传统基于关键词的简历筛选效率低下且易遗漏人才。本文聚焦的AI招聘辅助系统,正是这一技术的典型应用。它通过预训练语言模型实现简历与职位的深度语义理解,并构建多维度匹配模型进行量化评估。系统采用微服务架构与规则引擎,将AI作为可配置的“智能滤网”,旨在处理海量简历初筛的体力活,从而让招聘者能更

weixin_33046983的博客 339
上一篇: 职场PUA:如何逼一个人主动加班?
下一篇: 普通人如何通过公众号赚到第一个1000,1万块?实战分享
军哥手记
军哥手记 业界专家认证 业界专家认证
博客等级 码龄21年 661粉丝 608原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值