精华内容
下载资源
问答
  • 自动化对账系统顶层架构设计,描述了对账业务背景、基本业务知识,由此阐述了自动化对账系统的设计目标,以及粗粒度的设计
  • 对账系统设计

    2018-08-09 10:19:49
    对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计对账系统设计
  • 每日记账,对账系统 系统需求: 记账功能仿造网站“随手记” 功能开发 额外需求: 1.从sqlserver 数据库中获取每天营业单据等原始数据(下面简称“原数据”)。 2.分析原数据,自动生成记账收入流水 3.查看原数据每...
  • 支付系统-对账系统

    万次阅读 多人点赞 2019-04-08 14:17:04
    在支付系统中,资金对账在对账...一、清算对账系统 支付公司提供的所有金融服务是建立在银行资金体系之上的,支付公司账务系统内账户的资金都与其在银行的存款资金一一对应,为了保证真实的资金账户和虚拟账户的...

           在支付系统中,资金对账在对账中心进行,将系统保存的账务流水银行返回的清算流水和清算文件进行对账,核对系统账务数据与银行清算数据的一致性,保证支付机构各备付金银行账户每日的预计发生额与实际发生额一致。

    一、清算对账系统

           支付公司提供的所有金融服务是建立在银行资金体系之上的,支付公司账务系统内账户的资金都与其在银行的存款资金一一对应,为了保证真实的资金账户和虚拟账户的资金转换正确,支付公司必须及时与银行进行各类业务的资金核对,所有资金核对都依赖于银行的系统。

    1.1、资金流入与银行的对账

           从银行流入的资金是由银行侧控制资金结转清算与对账时间,即每日客户通过银行向支付机构充值的资金是由银行实时通知支付机构充值指令的发生,银行在每日晚间经过汇总后向支付机构的银行收款账户入账,同时提供入账清算文件。支付机构获取该文件后,与业务数据进行核对。

           对账结果若相符,则没有问题。若出现对账结果不符,很有可能是系统或者业务在某些环节发生问题,存在两种情况:

    (1)、银行充值明细多,支付机构充值明细少;即银行向支付机构入账资金多于支付机构业务发生情况,一般采取临时挂账处理,查出原因后再具体解决;
    (2)、银行充值明细少,支付充值明细多;即银行向支付机构入账资金少于支付机构业务发生情况,则可能对支付机构产生资金损失,一般采取临时挂账处理,查出原因后再具体解决。

    1.2、资金流出与银行的对账

           从支付公司流出的资金是由银行侧控制资金结转清算与对账时间,即每日客户向支付机构申请提现的资金是在每日支付公司批量向银行发起提现请求时,从支付公司银行存款账户扣转,但扣转的结果一般需要一段时间才能从银行侧得到反馈。

           当银行侧提供扣转成功和失败的清算文件,支付公司获取这些文件进行明细核对,对于提现失败的申请,由支付公司后台发起直接将资金回充入客户账户,不在对账中心进行对账处理

    二、什么是对账

    2.1、什么是资金对账

    在会计上的概念:指为了保证账簿记录的正确性而进行的有关账项的核对工作,做到账实相符(正确性)、账证相符(真实性)、账账相符
    在支付机构的概念:资金对账在对账中心进行,将系统保存的账务流水与银行返回的清算流水和清算文件进行对账,核对系统账务数据与银行清算数据的一致性,保证支付机构各备付金银行账户每日的预计发生额与实际发生额一致。即核对银行实际清算资金如充值、充退、提现等业务的银行处理结果是否一致

    2.2、对账中心的作用

           对账中心是主要处理对账的系统模块,主要业务是清算对账。对账中心部署于工作平台,分别接受会计系统和清算系统的数据输入进行对账处理。

           对账中心最主要的职责是勾兑银行清算流水与支付系统入账流水,用以检查反映银存实际账户的余额变化支付系统内部户余额变化是否平衡。对于已经核对无误的银行清算流水和支付系统入账流水,分别进入相应的历史银行流水库历史入账流水库

           对于勾兑结果中银行清算流水多于系统入账流水的,而操作人员不明确资金的来源,需要根据所设定的分类规则将暂不明确的资金进行挂账处理。而后我们认为该部分资金已经系统入账,可以入历史流水库。
           因为此时的银存实际账户的余额增加,与之对应的是支付系统内部户余额也增加了,比如: T 日的挂账可能会在 T+N 日后进行销账确认,而后续的销账行为是对明细流水的业务分流处理,我们不应将 T+N 日的销账所产生的账务流水作为入账流水,不再需要到对账中心体现。

    三、对账内容和数据来源

    第一步:入账流水和清算流水进行核对,目的是保证对每一笔订单银行的处理结果和我们系统的业务处理结果一致。
    第二步:对账汇总确认单和银行对账单进行核对,目的是通过轧余额等方式核对各类业务的银行处理结果是否与银行实际清算给我们的资金一致。

    3.1、对账业务流程

    对账业务流程图


    3.2、对账中心主要功能

           银行发生资金变动的入账流水,包括:充值、提现、提现失败、充退、充退失败、退票、购汇、信贷放款、信贷还款、还贷失败一系列业务引起的账务变动信息。这些业务流水在账务系统入账后,会计核心接收到登记分录请求并处理完毕,发送该流水至对账中心,对账中心对于某个业务的反向资金变动所产生入账流水也同步至对账中心。
            这样做的目的是让待清算与入账流水在日切点保持等额,比如:提现 T 日会员申请提现,生成文件后会员账户提现金额转入待清算提现款项,与此同时发送流水到对账中心,此时待清算与对账中心入账流水是保持平衡的。
    而 T+1 日银行处理失败,系统会回充带清算提现款,如果此时不发送失败流水到对账中心与其对应的流水进行购销的话,则入账流水就会不变,和带清算提现不平衡。

    (1)、完整的日结流程支持:银行清算流水入库 → 流水对账 → 流水分类 → 汇总确认单 → 自动挂账 → 销账确认 → 操作员轧账 → 总账日结以及登记银行余额等。
    (2)、完善的报表模型输出:如按入账日期 / 银行日期 / 清算日期等的统计报表、银行账户余额报表、未达款项报表等;
    (3)、提供日切服务:在经确认后进入历史清算流水的,同步汇总该部分数据进入历史流水汇总表中保存,所以在日切时,只需直接将该汇总数据再次汇总即可。
    (4)、外围业务功能支持:提供对于银行账户( 独立于对账中心之外,不参与处理逻辑 )的管理功能,支持与内部户的映射管理,用以满足部分报表需求;提供基于账务核心所提供的业务代码查询功能;提供对于财务系统的交互支持,包括与财务科目的对应关系管理、通知流水数据等;提供用以校验订单与清算流水匹配状态的错账核实功能。

    对账流程图

    四、对账中心功能模块分析

    4.1、获取资金对账数据

    (1)、获取方式:需要进行清算流水导入的文件一般通过人工在页面上导入,另外有些业务的流水文件通过系统自动匹配或者定时获取的方式得到。
    (2)、清算流水导入渠道:需要统一各清算流水导入功能到一个页面入口, 同时引入清算通道对账的逻辑,将清算流水导入过程需要映射清算通道( 包含新增清算流水等 )。
    (3)、各类业务的清算流水文件的解析和导入逻辑不一样。

    4.2、清算流水对账

    4.3、对账逻辑

    (1)、一对一对账

           入账流水只可能存在一条,银行入账流水也仅存在一条,然后一对一去对。目前按照一对一对账的业务涉及到:网银 B2C 充值、网银 B2B 充值、VISA、网汇E、卡通充值、正常提现、认证提现、银企互联提现、卡通提现、卖家信贷、信用卡还款提现、COD、网点支付。

    对账标准(清算通道 + 订单号 + 金额) Or (银行名称 + 业务代码 + 订单号 + 金额)

    满足一对一的业务如下:

    提现成功:500401
    认证提现:500402
    还贷:500404
    卡通提现:500403
    个人网银充值:400301
    企业网银充值:400302
    VISA:400314
    网汇e:400315
    卡通充值:400304
    贷款:400307
    银企互联提现:500405
    信用卡还款提现:500407
    后台强制提现500406
    COD
    网点支付

    Tips:
    (1)、清算流水有,入账流水也有,金额一致,对账成功,清算流水、对账流水打上 ‘对账成功’ 标志,记录对账日期为系统当日;
    (2)、清算流水有,入账流水也有,金额不一致,清算流水记金额不等,记录对账日期为系统当日,入账流水不变;
    (3)、清算流水有,入账流水该订单号没有,清算流水打上 ‘银行多帐’ 的标志,记录对账日期为系统当日;
    (4)、清算流水有,入账流水没有该业务代码初始状态的,清算流水打上 ‘银行多帐’ 的标志,记录对账日期为系统当日;
    (5)、清算流水有,入账流水没有该银行的初始状态的记录,清算流水打上 ‘银行多帐’ 的标志,记录对账日期为系统当日;
    (6)、对账之前需要判断 1 对 1 的流水中是否有重复,有重复的返回失败不进行后续对账

    (2)、多对多对账

           入账流水里相同订单号,相同清算渠道,相同,金额相同业务代码的流水存在对条(比如充退);而银行清算流水也可能是存在多条的情况的,这种情况下是多对多去对账的,遵循先到的先对的原则。

    对账标准:(清算通道 + 订单号 + 金额) Or (银行名称 + 业务代码 + 订单号 + 金额)

    满足多对多的业务如下:

    充退:410401
    银企互联充退:410402
    Motopay 充退:410403

    Tips:
    (1)、清算流水有,入账流水有,满足对账标准,则对账成功,清算流水、对账流水打上 ‘对账成功’ 标志,记录对账日期为系统当日;
    (2)、清算流水有,入账流水有,金额不等,清算流水打上 ‘金额不等’ 的标志,记录对账日期为系统当日,入账流水不变;
    (3)、清算流水有,入账流水没有该订单号,清算流水打上‘银行多帐’ 的标志,记录对账日期为系统当日;
    (4)、清算流水有,入账流水没有初始状态 410401 的流水,清算流水打上 ‘银行多帐’ 的标志,记录对账日期为系统当日;
    (5)、清算流水有,入账流水没有这个银行初始状态 410401 的流水,清算流水打上 ‘银行多帐’ 的标志,记录对账日期为系统当日;
    (6)、清算流水有,入账流水没有初始状态的 ‘410401’ 的流水,清算流水打上 ‘银行多帐’ 的标志,记录对账日期为系统当日。

    (3)、一对多对账

           入账流水有多条,和银行的一条去对账。
    对账标准(清算通道 + 订单号 + 金额) Or (银行名称 + 业务代码 + 订单号 + 金额)

    涉及的业务:境外收单

    境外收单购汇扣款(520101)
    购汇益回补购汇账户(400319)

    Tips:
    (1)、入账流水存在 2 条 520101 的,清算流水存在 1 条 520101 的,将入账流水的 2 条加和后的金额和清算流水的进行对账,一致的为对账成功;
    (1)、入账流水存在 1 条 520101 的,1 条 400319 的,那么要将 2 条金额之差和清算流水的 1 条 520101 的进行对账。不会出现 3 条 520101 或者 2 条 400319 的情况。

    4.4、对账功能

    (1)、内部流水购销

           内部流水购销是针对那种有入账流水表来说的,比如提现业务,提现文件生成就会扣款此时会同步一笔入账流水;而回导失败之后又会回充,此时也会同步一笔反向的业务流水,这两条流水不用再去和银行的资金流水进行对账,直接在入账流水这边进行购销即可。
    需要购销的业务如下:


    (1)、购销的规则:非已勾销状态下,同一银行同一订单号,金额一致而业务代码相反的正向流水进行勾销,而且一条反向流水只勾销一条;
    (2)、日终轧账时候的购销:日终轧账的时候会对未购销的流水再次进行购销确保当天的流水都购销完全。(这个情况是为了解决反向流水先于正向流水先出现的逻辑错误情况而加的并提示流水号);
    (3)、如果业务代码相反,而金额不等的情况,就无法进行购销,这种情况原来是作为违反逻辑规则来进行标记的。这部分数据进行查明之后,可以修改流水之后,在日终轧账的时候从新进行购销;
    (4)、购销分 ‘一对一’(提现)和 ‘多对多’ (充退)的购销;
    (5)、勾销的流水不入历史库。

    (2)、对账汇总确认单

           显示对账结果,选择后续的相应的处理界面,复核员在此模块进行流水的确认,还有的功能就是对于已经对账处理的银行清算流水与系统入账流水进行后续业务分流推进。

    (1)、对于大部分对账成功的数据,可以将这些流水确认,确认后该部分流水将进入历史清算流水,只有进入历史清算流水的才认为银行与支付系统数据对平。对账成功的银行清算流水、账务入账流水全部进入各自历史清算流水表保存,相应的银行清算流水与入账流水同步删除。
    (2)、金额不等的流水,可能是银行清算流水文件有误,也可能是错账,采取的做法是操作员手工修改金额,在银行清算流水管理里操作或直接删除,将其推进到下一轮的对账处理环节,对账是可以重复对的,只要满足初始状态要求的流水即可。
    (3)、多账部分,由于各种已明确/未明确的原因,银行已经实际清算给支付公司了,但支付公司的账务系统并没有入账,需要提供一个流水分类和分类汇总挂账的操作入口。系统默认多账的流水给出的菜单是流水分类,金额不等的流水给出的流水管理页面。区别在于,在点流水分类时,只允许修改业务类型、银行日期,而且改完后不改变多账状态;流水管理,修改状态后,流水的对账状态将变成初始状态,需要进行重新对账。
    (4)、流水进入历史库的校验规则。

           举例说明:A 操作员导入了一笔流水,系统对账成功,银行清算流水与账务入账流水状态都被置为成功状态;B 操作员再次导入该相同流水,由于入账流水处于成功状态的可以继续对账,所以再次对账成功。系统在对账环节认为正常,但在入历史清算流水时必须做每组流水数据的平衡检查:必须是清算流水总额与入账流水总额匹配才可以进历史数据。
           对于上述的场景,如复核员针对 B 操作员的对账成功流水确认后,可以正常进入历史流水,对账批次号认最后操作的批次。而继续对 A 操作员的成功对账流水确认,则系统将认为是不合法的入历史流水行为。或者不对特定操作员的汇总确认,系统必须检验出所存在的重复银行清算流水,并将对应的明细数据显示复核员。此时可将该重复对账的清算流水删除即可。

    (3)、流水分类和分类汇总挂账

    (1)、对于多账的流水对账中心提供一个单独的处理入口,首先在此处进行分类,然后进行汇总挂账处理。操作人员可以根据多账流水的未确认类型修改成对应的业务代码,允许修改成业务类型为 7 的可挂账的类型(其他业务代码不允许挂账);流水可以重复分类,系统不做控制;但已申请挂账的除外,分类完毕的多账流水可直接提供分类汇总挂账操作。
    (2)、系统根据既定的业务代码判断是待查收入或待查支出挂账,页面跳转至相关凭证登记页面,此处业务规则同待查收支挂账;另一部分比如退票,因为不经过对账环节,所以需要直接在清算流水查询里面新增,业务代码 700106 未确认退票,不需要经过对账,直接去汇总确认单里将流水挂账。允许挂账的业务代码如下 :700101 其他应付款,700102 其他应收款,700103 银行错账,700104 未确认结汇款,700105 线下汇款,700106 未确认退票,700107 未确认收款,700108 未确认支出款。
    (3)、提交凭证登记申请相关校验:流水此刻状态是否是 ‘多帐’ ,申请提交人是否是当时的对账人,凭证登记成功,清算流水记录凭证号,流水状态改为 ‘已挂账’ ;
    (4)、汇总挂账的反交易同步入账流水,金额是负值,系统在清算流水里在做一条数据,自动对账。

    (4)、清算/入账/历史流水管理

    清算流水管理

    对于所有的清算流水,都可以在此模块下进行查询、修改、删除,同时也可以新增流水。

    (1)、查询功能,银行名称、业务代码、银行日期不能为空,业务代码和银行可以多选。
    (2)、修改功能,处于未对账(初始)、金额不等、多账、对账成功状态的流水可以进行单笔、批量修改操作,这里的批量修改动作与流水分类功能类似,只是该功能入口不仅支持对批量流水的业务代码、银行日期更新,也支持其他要素信息批量修改,作为(3)、提供给操作员在未对账前批量修改已知流水的手段之一;对已挂账的流水,不允许更新。
    流水删除:处于未对账(初始)、金额不等、多账、对账成功状态的流水可以进行单笔、批量删除操作,已挂账状态不允许删除。

    入账流水管理

    入账流水管理功能提供对账务入账流水的查询以及下载功能;为了杜绝对入账流水的人为变更操作,禁止支持对入账流水进行修改或删除处理

    (1)、查询时银行名称、业务代码、入账日期不能为空,业务系统流水号:针对某类业务的业务流水号,如充值业务就是充值流水号;账务流水号:账务处理的流水号,即账务操作记录数据的序号,在账户明细查询里可以获取。
    (2)、对于提现类失败回充的流水,在操作员进行对账动作后,系统自动进行购销,在入账流水查询时,将对账状态选为已购销可以查到,这些不进入历史库,根据数据量,系统定时清理这些数据。

    历史流水管理

           分为历史入账流水和历史清算流水,查询功能在同一页面,查询时可以一起查询,也可以单独查询。历史流水只供查询和下载,不允许进行修改和删除操作。选择历史银行流水和历史清算流水(清算日期的时间间隔不能超过 7 天)进行查询,历史入账流水中无银行日期,历史银行流水中无入账日期。

    (5)、银行余额录入功能

           在该模块下,实现对每个银行账户的实际余额录入,以此来和内部账户余额进行匹配校验。分为银行余额登记,银行余额导入(复核),以及银行余额查询功能。

    (1)、银行余额登记:选择对应日期以及银行账户录入后,保存,此时去银行余额查询是看不到录入余额的,需要复核导入核对完毕后才能看到,保证核对的有效性。登记后系统记录一个临时余额。系统每天凌晨 1:15 的时候会跑批,取上一日已复核过的余额自动带入下日临时余额,如果不登记的话,就取上日余额。
    (2)、银行余额导入:标准格式是一个填写银行余额的 excle 模板,导入后的核对逻辑,对复核员导入的数据进行检测该帐户是否有临时余额。根据银行账号、银行日期、银行余额等条件查询银行余额表。
           判断 1 :如果查询出结果为空那么将返回给用户:“这个银行帐号找不到对应的银行临时余额!”。
           判断 2 :如果查询结果大余一条,将返回给用户:“这个银行帐号的一天有多个银行临时余额,不正常!”
           判断 3 :检测该银行帐号对应的银行余额是否相等。如果不相等将返回给用户:“临时余额和实际余额不相等,核对失败!”当余额核对成功后,将复核员导入的余额写入该对应帐户的实际余额,并修改余额状态为已复核。实际余额更新成功后,将删除当天日期的临时余额。
    (3)、银行余额查询:对操作员登记余额的信息,以及复核员复核过的余额进行查询,查询条件:银行名称、银行帐户、帐户状态、银行日期、余额状态。帐户状态:分为正常、废除、和销户三个状态,默认为正常状态。余额状态:分为未录入(N)、已录入(A)、已复核(Y)三个状态,默认为全部。

    (6)、内部账户登账

           业务简述:针对日常结算工作中非银行待查类的内部账户进行登记,如:清算款、利息、手续费等;该业务登记不产生后续业务登记行为,即不具有作为初始凭证号的使用功能。对于批量销帐类业务处理中,多会员转帐失败的,导致过渡户上有剩余金额情况的,可通过此处进行内部户登账,将过渡户(负债)和银存(资产)余额同时减少,再通过待查收入挂帐实现平衡。

    业务校验规则:

    (1)、必须登记的是一借一贷帐户信息;
    (2)、借贷方帐户不能一致;
    (3)、金额必须大于 0 ;
    (4)、不允许任意一方是销帐帐户。

    是否同步对帐中心流水:不需要同步对帐中心流水

    (7)、待查收入挂账

           业务简述:应用于结算操作员针对日常结算工作中的银行待查收入进行登记,所产生的业务凭证号作为后续销帐业务的原业务凭证号,并且作为所有该登记所引发的后续业务登记的初始凭证号。其中待查收入挂帐业务凭证的借方(银存帐户)所对应的银行名称作为后续销帐业务的银行名称,包括差额重新挂帐部分再销帐的业务凭证,都递沿该银行名称。

    业务校验规则:

    (1)、必须登记的是一借一贷帐户信息;
    (2)、借贷方帐户不能一致;
    (3)、金额必须大于 0 ;
    (4)、借方帐户必须是银存帐户;
    (5)、贷方帐户必须是销帐帐户。

    是否同步对帐中心流水:不需要同步对帐中心流水

    (8)、待查收入确认

           业务简述:针对银行待查收入登账的挂帐,可以通过本模块进行销帐。此处采取销帐确认方式进行处理,需要选择相应的待查收入挂帐业务凭证进行销帐业务登记。该业务登记可能产生后续业务登记行为,如差额销帐情况下,系统会自动做不足额部分的重新挂帐并复核通过,所产生的挂帐凭证作为后续销帐凭证的销帐卡片号。

    业务校验规则:

    (1)、所销的原待查收入挂帐凭证必须合法;
    (2)、所销的原待查收入挂帐凭证必须已复核通过,处理完毕;
    (3)、所销的原待查收入挂帐凭证不能已被销帐;
    (4)、销帐总额(贷方发生额之和不得大于原待查收入挂帐凭证发生额)并大于 0 ;
    (5)、贷方必须是内部户。

    (9)、待查支出挂账

          业务简述:针对日常结算工作中的银行待查支出进行登记,所产生的业务凭证号作为后续销帐业务的原业务凭证号,并且作为所有该登记所引发的后续业务登记的初始凭证号。其中待查收入挂帐业务凭证的贷方( 银存帐户)所对应的银行名称作为后续销帐业务的银行名称,包括差额重新挂帐部分再销帐的业务凭证,都递沿该银行名称。

    业务校验规则:

    (1)、必须登记的是一借一贷帐户信息;
    (2)、借贷方帐户不能一致;
    (3)、金额必须大于 0 ;
    (4)、贷方帐户必须是银存帐户;
    (5)、借方帐户必须是销帐帐户 。

    是否同步对帐中心流水:不需要同步对帐中心流水

    (10)、待查支出确认

           业务简述:针对银行待查支出登账的挂帐,可以通过本模块进行销帐。此处采取销帐确认方式进行处理,需要选择相应的待查支出挂帐业务凭证进行销帐业务登记。该业务登记可能产生后续业务登记行为,如差额销帐情况下系统会自动做不足额部分的重新挂帐并复核通过,所产生的挂帐凭证作为后续销帐凭证的销帐卡片号。

    业务校验规则:

    (1)、所销的原待查支出挂帐凭证必须合法;
    (2)、所销的原待查支出挂帐凭证必须已复核通过,处理完毕;
    (3)、所销的原待查支出挂帐凭证不能已被销帐;
    (4)、销帐总额(借方发生额之和不得大于原待查收入挂帐凭证发生额)并大于0 ;
    (5)、借方必须是内部户。

    五、意外数据恢复逻辑

    5.1、意外数据恢复逻辑

    (1)、重复支付:对同一内部订单号进行了二次或二次以上的支付。
    (2)、支付失败,金额不等:买家实际支付的金额与交易金额不等。一般产生的原因是,买家在支付时,产生了掉单,卖家随后修改了交易价格。 在进行网银对账的时候,即会出现订单金额和交易金额不等的情况,且是一笔掉单。2、3 两类情况只发生在支付上。
    (3)、支付成功,金额不等:商户订单状态为成功,后台订单状态也为成功,并且交易状态是买家已付款,等待卖家发货。

           金额不等,支付成功:是因为会员对一个交易进行支付,但由于网络或银行系统等原因支付公司未接收到银行扣款信息,支付侧交易状态未予以变更,后卖家对该交易修改了价格,买家又对该修改过的价格进行了支付。但该支付成功的信息仍然没有被支付侧接收到,该交易状态仍未变更,后支付侧后台人员先对后面的那笔意外数据进行了恢复,后再对前面那笔意外数据恢复,就会出现这种“金额不等,支付成功”的数据

    5.2、对帐及异常恢复逻辑

    (1)、以商户成功订单为准

    用商户上的成功订单与后台的订单来核对:

    (1)、若商户订单为成功,后台为初始或者失败,则更改后台状态为成功;
    (2)、若后台为成功,商户成功订单中无该订单(时间差),则不更改后台状态;
    (3)、若后台为初始或失败,商户成功订单中无该订单,则不更改后台状态。

    (2)、不重复恢复

           T+1 日恢复T 日的订单,并且在 T+1 日后不再下载 T 日的订单进行二次或多次恢复。(为考虑会员感受,T 日下班前恢复 T 日 0 点到下班时点的订单)

    (3)、时间性差异

            由于各家银行系统日切点均不同,并且大多不会在每日的 24 点(或早或晚),所以下载到的 T 日的订单流水与后台T日( 0:00-24:00 )的订单流水并不能全部对应上。将商户订单流水与后台订单流水核对,会出现商户有,后台无商户无,后台有商户有,后台有三种情况。对于 1、2 两种情况为我们所说的时间性差异。

    商户数据与后台数据的关系为:商户数据-(商户有,后台无)+(商户无,后台有)= 后台数据

    展开全文
  • 对账系统设计详解(上)

    千次阅读 2021-03-20 00:59:38
    本文由作者陈天宇宙发布于社区,业务图较多,建议PC端阅读 01 对账介绍想必大家对“对账”这个词都不陌生,单从字面意思就能略知一二;其实就是字面意思;“对”就是核对,“账”就是账...
    
    本文由作者 陈天宇宙 发布于社区,业务图较多,建议PC端阅读
    
    
    01
    对账介绍想必大家对“对账”这个词都不陌生,单从字面意思就能略知一二;其实就是字面意思;“对”就是核对,“账”就是账目;“对账”就是核对账目;
    账目核算是财务工作的必要部分,随着线上交易体量越来越大或者说对财务自动化线上化的效率提升需求越来越高;为了提升核对效率以及准确性,势必要将核对业务系统化线上化自动化;
    那么如何构建设计一套不同业务场景下的对账系统呢?
    
    
    1、生活中的对账
    日常生活中我们每天都在对账,比如去餐馆吃饭付款,会对老板说一声“老板,钱付过去了”;老板检查过收款或者听到语音播报后回复一声“好嘞,下次再来”;这就是最简单的一次对账
    再比如你在淘宝开了一个店铺,每个月几千单的交易,发货;每次月末都拿着所有的订单明细和支付宝收款账户收款记录逐笔的做一次核对,保证发过货的订单都收到款了,这就是一次更复杂的核对了
    
    
    2、什么是对账
    对账概括来说就是“账证实”核对,“账”就是账目,“证”就是凭证,“实”就是实际资金
    核对模式有三种:账证核对,账账核对,账实核对;确保账证实两两的一致性;比如吃了一碗面点菜单就是原始凭“证”,付了10元钱是“账”,老板电脑点菜记录小票10元是“账”,老板看到账户中余额增加了10元是“实”
    财务范畴来看,证就是会计凭证,比如发票,小票,出货单,收据,交易系统的支付记录等都是原始凭证;而账呢就是财务的账目,账务系统的账务记账,金蝶的科目余额等都是不同的账目;而一笔交易会记录在很多的环节,比如账务系统,金蝶等
    另外脱离财务范畴来看,其实账目本身抽象出来就是数据,商品数据,用户数据,卡券数据等,那么账证实需要核对,很多时候很多非财务范畴数据也需要核对,比如今天应到10人实到8人,军训时的报数等其实也可以称为对账,我们暂且称为“广义的对账”
    那么我们来为对账下一个定义:为了确保同一个事务的数据描述在不同场所下的记录一致而进行的相互之间的一致性比对
    
    
    3、为什么要对账
    首先在财务范畴,这是一个必要做的工作
    另外从业务范畴,现在交易链条越来越长,数据在众多系统之间难免会出现丢失或者差错,所以为了业务的正常运转及时发现问题,需要确保系统间数据的一致性
    从公司的角度,需要确保“不少收一分钱,不多付一分钱”,保证资金的安全,不然卖了多少货,收了多少钱相互之间谁也不鸟谁,最后全是糊涂账
    综上所述,对账是必不可少的;对于交易体量巨大的互联网公司更是必不可少,而且系统化也是必须的,单靠人工难以满足需要
    
    
    4、几个常见对账场景
    三方支付公司:主要是核对自家的交易记录和银行清算数据之间的一致性;银行清算数据(应收应付)和银行结算数据(实收实付)的一致性;同样也要核对与金蝶账务数据的一致性
    电商等服务平台:主要是核对自家的交易数据和三方支付公司或者微信支付宝的清算数据的一致性;三方清算和结算的一致性;三方结算到对公户实际资金的一致性
    另外还有红包:比如用户支付100元发10个红包,有6个用户领了6个一共8元,有4个超时没领退回给了用户;那么对于平台的这个红包中间账户的进出也要核对:
    { 用户充值1笔100元
    
      中间户入了1笔100元
      中间户出了10笔100元
      中间户被退回4笔2元
      中间户退给用户1笔2元
      这样对于中间户来说100-100+2-2=0 }
    还有一些其他的领域对账,比如航司的机票,机票代理商的购票出票,中间券商的上下游之间等等
    
    
    5、常见的对账模型
    交易对账模型:数据之间的按照唯一标识进行一对一,一对多,多对多核对
    资金对账模型:将交易数据按照款项类型进行汇总之后进行核对,比如收款,手续费
    余额调节核对:对系统记账余额和实际资金账户余额在经过在途调整后进行一致性核对
    比如:系统记账昨日日终余额100元,截止昨日日终提现中100元;出款账户昨日日终200元;此时该账户:系统账100元=出款账户200元-100元应付未付;这样余额是平的,说明资金没有问题
    其他更复杂的核对模型:比如多链条之间进行关联核对像三份数据进行一次性比对等,这里不再过多阐述;本系列文章重点介绍的是1和2,至于3会在今后有机会讲解
    
    
    
    6、什么是对账系统
    对账系统就是通过系统解决方案,对需要核对的数据按着设定好的规则进行核对校验,并产出核对结果;并且可以对核对结果进行对应的差错处理
    通俗来说就是传统上用Excel来通过人工vlookup做的事情,完全交给系统去做,只需要预先配置好规则就行了
    对于对账系统来说最基本应具备以下几个能力:
    
    • 可以便捷的获取需要核对的原始数据,如平台数据,三方数据

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

    • 可以灵活配置核对规则

    • 可以查看核对的结果

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

    • 可以对外提供核对结果

    • 可以对外输出数据

    7、如何搭建一个对账系统

    首先就是要先明确对应的业务模型

    其次需要抽象出业务的核对模型

    然后针对核对模型选择合适的核对方案

    最后针对核对方案设计系统方案,然后进行研发和上线

    02

    架构图和流程图

    1、标准业务架构

    如果企业整体业务架构完整,系统建设完善的情况下建议对账采用该架构

    • 有完善的账务核心和会计核心

    • 对账先完成交易数据和三方清算数据的核对

    • 交易完成了账务和会计层的资金账记账

    • 汇总清算数据和银行账单数据

    • 完成平台资金账和银行账单的资金核对

    • 对账系统通知账务核心银行待清算资金的结转,如下

    2、简化架构

    如果企业没有账务和会计核心;可以通过对账中心先时间交易数据和三方清算数据的核对;然后汇总清算数据与三方账单数据核对;保证金业务记账以及银行清结算数据的一致性

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

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

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

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

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

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

    3、伽马金融资金管理核对架构

    资金管理框架的资金账和银行账核对业务架构图

    该图略,课程里会介绍该体系

    核心几个关键点

    • 统一收付平台收口收款、退款、调拨等资金业务

    • 对资金业务统一记账形成统一资金账务

    • 对集团的资金账户进行统一管理

    • 余额调节对账完成资金账和银行的核对勾兑

    • 账户的余额调节表

    4、伽马支付核对业务架构

    伽马支付为公众号案例中心虚拟的支付公司

    5、通用对账系统架构

    前文介绍过,我们可以脱离财务范畴,抽象出数据核对的通用架构,对数据逐笔准确性校验,实时监控;资金期初期末及发生额的资金校验核对;

    在这个理念下我们形成如下一个应用范围更广的通用架构

    03

    对账文件获取和解析

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

    对于文件的获取大部分在提供通道时会提供下载接口,另外如果没有接入下载接口,可以采用人工下载的方式获得文件,将文件传到对账系统获得对账数据;下面主要介绍渠道方的对账文件获取以及解析和管理

    1、对账文件类型

    主流类型还是Excel和txt,本文主要介绍的也是这2种

    • excel(csv)

    支付宝,常见支付公司;这类文件最方便查看


    • txt

    微信,银联个别通道,一些银行;这类文件很不便于查看

    • xml报文

    网联;这类文件人工很难查看和处理

    • 其他类型

    银联还有一些通道文件

    2、对账文件获取方式

    1)接口获取

    通过机构提供的文件查询和下载接口获取对账文件

    支付宝下载接口示例

    2)人工下载

    如果技术能力资源不足,或者暂时没有接入接口,可以采用人工下载的方式,然后在对账中心上传对账文件进行解析

    3、对账文件管理

    1)文件管理方式

    文件一般存放在对账系统指定的ftp内,并且对文件夹设定一定的命名规范,通过路径查询和下载文件

    2)文件管理后台页面

    在后台页面查看和下载文件,便于处理和排查对账问题

    4、对账文件解析器配置设计

    对账文件解析是指将文件里的数据解析到数据库内,形成数据库数据,因为文件数据不能直接被系统处理

    1)原样解析

    不改变文件的数据列数和内容,对文件数据保证不减少列数的前提下进行全量解析,可以根据需要增加列内容,比如账号,对账时间等

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

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

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

    2)通用板式解析

    所有对账文件数据按照映射关系解析到固定的数据表当中;例如以下的表结构

    核对单号

    支付方式

    交易类型

    金额

    状态

    支付时间

    例如如下对账文件

    解析规则应该

    3)解析器配置管理

    该部分不做过多介绍,记住一个原则公式:在X列满足什么条件时将Y列的数解析到数据表的W字段内;在第6第7篇中的对账项目设计中会有类似的配置页面设计

    5、对账数据查看

    数据解析到数据库里了,为了便于运营排查问题,还需要做一个查看数据的运营页面,页面样式如下

    04

    平台对账文件的获取和存储

    1、平台对账需求获取方式      

    拿到三方文件账单数据以后需要与平台自己的相关数据做核对,比如平台交易数据与清算数据的核对;平台账务数据与银行账单数据的核对;平台自有数据获取方式常采用如下形式

    1)文件获取

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

    2)接口接收

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

    3)MQ

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

    4)SQL

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

    5)人工上传

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

    2、数据分类管理

    对账系统数据会越来越多,类型也越老越多,支付数据,卡券数据,订单数据,三方清算数据,三方结算数据等等;每类数据的数据字段有各有不同;如何对众多类型数据进行管理呢?

    下面介绍一个方法:对数据进行分类管理,每类数据单独设置表结构

    1)数据分类设置

    设置数据的大类,或者说是一级分类;就像商品类目一样管理数据

    2)设置数据类型

    在数据分类下面设置数据的子类,并且数据子类关联数据库表名,便于存储数据,查询数据,对账取数

    3、取数规则配置

    配置好了数据分类和类型以及关联好了数据表之后,接下来就是配置获取数据的规则了,我们以通过文件或者SQL两个可选择的形式获取数据为例

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

    数据分类以及数据表在后面的对账项目规则设置起到了非常重要的作用

    05

    对账数据管理

    通过前几章我们已经了解了什么是对账,对账外部数据和内部数的获取方式以及查看方式,除了这两类对账源数据,还有一类数据:对账结果数据;对账结果数据也需要存储和管理,以及相应的用途

    1、对账结果数据

    1)交易对账结果

    支付数据与三方清算的核对,或者其他数据的两两核对,会得出核对结果;并且每一组核对都会有一个组别的名字,这个下一节会详细介绍,比如“会员支付VS微信清算”,核对结果如下表

    我们可以看出来“1,5,6”三条记录是有问题的,2条是一方有一方没有,另外一条是都有但金额不一致;这就是交易对账结果,“对平,单边,错账”,对于对账有问题的数据需要进行排查找出原因,并进行差错处理(后面会详细介绍)

    2)资金对账结果

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

    从对账结果我们可以看出来,微信在退款和退款手续费存在差异,而发现二者正好正负相抵,原因是微信退款和退款手续费是轧差出现在账单里的,所以实际上并没有差异。

    但是既然已经对出差异,并且排查出原因,就需要对差异进行处理,资金对账的差异是“长款,短款,应收未收,应付未付”;在确认对账结果后,会生成差异表,在差异表中对差异进行核销处理

    2、对账管理

    上面我们介绍了交易对账和资金对账的核对结果,那么如何存储差异结果呢?

    差异结果可以存储在源对账数据的表中,也可以单独存储

    1)存储在源对账表

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

    支付数据:1  对平    清算数据:1  对平

    2)存储在单独的对账表中

    该种方式适合复杂的核对场景,同一份数据会在多个对账项目中与多组数据完成核对,产生多个对账结果,比如支付数据与上游的订单进行核对得出一个对账结果,支付数据又会与下游的清算数据核对得出另一个对账结果

    与订单对:订单数据:1  对平          支付数据:1 对平
    与清算对:支付数据:1  单边         清算数据:无

    3)我们发现支付数据的对账结果有2个,一个是与订单的核对的对平,另一个是与清算的核对的单边,此种情况,我们的对账结果就需要单独存储“某数据在每一个对账项目组中的核对结果表”,对账结果有2个,如下

    支付数据对账结果表

    与订单对:对平 

    与清算对:单边 

    06

    交易对账配置

    企业业务在不断变化,新的业务也在不断出现,对账数据因为业务的变化也在发生变化;如果接入了新的支付渠道对账设置也需要新增;如果每次都通过开发实现,那么成本会很高;

    本章我们将介绍如何实现交易对账项目的配置化设计,极大的提升对账项目的管理效率。

    1、交易对账项目

    做对账并不是简单的一方与另一方比对;实际会基于业务情况,存在很多组进行核对;比如与微信的核对,与支付宝的核对等;

    每一组又可能分成更细的组,比如与微信核对,可以分成微信收款核对,微信退款核对;又可能微信收款有很多账号,我们又可能会按照微信账户进行分组进行核对;

    例如微信收款一共有两个微信账号:微信1,微信2;那么我们可以设置4个对账的组,如下

    对账项目1:微信1-收款

    对账项目2:微信1-退款

    对账项目3:微信2-收款

    对账项目4:微信2-退款

    对账项目就是我们设定的核对组;当然以上的对账项目我们可以简化成2个

    对账项目1:微信-收款

    对账项目2:微信-退款

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

    2、对账项目命名

    为了便于管理我们还需要为每个对账项目命个名字,如何起名这个也看自己喜好;原来在易宝支付,因为对账组的同学基本都是女生,都是吃货,所以所有对账项目都命名称跟吃相关的“如:工商9876-卤煮火烧”;命名的一个关键原则

    要能从名字中看出具体核对的业务

    基于这个原则我们为1中的几个项目进行命名如下

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

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

    这样我们可以清晰的知道对账项目1是用户使用微信支付购买会员的收款核对项目

    3、对账项目管理

    一个企业可能会存在很多个对账项目,像原来在某支付,高达几百个核对项目;为了便于管理,我们就需要一个菜单专门管理对账项目;示例如下

    该页面可以查看所有的对账项目;点击设置可以进行该对账项目的配置设置;右上角的新增可以新增新的项目

    4、对账项目新增

    在对账项目列表点击新增会有一个弹窗可以添加一个对账项目;新增时需要先填写基本信息即可,比如对账项目的名称,对账启用时间,对账的频次,对账的类型等;确定后在对账项目列表就会有一个新增的项目,点击设置即可以进入设置页面

    5、对账项目设置

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

    该配置器最终的实现是

    我们从页面可以看出来,该配置是设置卡系统的消耗数据与订单中的消耗记录进行核对

    • 为数据两方配置数据的选择条件

    • A方数据为卡数据

    • 数据筛选条件是”交易类型=消耗购买”

    • B方数据是订单数据

    • 对比设置两方以订单号进行核对,金额进行核对

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

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

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

    ↘好文推荐:

    深夜看了张一鸣的微博,让我越想越后怕

    阿里设计师出品!B端产品文案指南

    大厂没有方法论(上)

    想看下篇?点个“在看”吧

    展开全文
  • #资源达人分享计划#
  • 自动对账系统

    热门讨论 2012-11-02 11:48:56
    可以有效完成两个excel数据核对,通过有效选择内容,实现自动对账。是财务、审计、资金等行业工作人员的好帮手。
  • 这个excel文件是由excel精英培训微信平台兰色幻想编制
  • 本文由作者陈天宇宙发布于社区,业务图较多,建议PC端阅读 上篇指路:对账系统设计详解(上) 07 资金对账项目配置设计完成线上支付交易以后,虽然通道方告知支付成功,但是钱是不是真...
    
    本文由作者 陈天宇宙 发布于社区,业务图较多,建议PC端阅读
    上篇指路:对账系统设计详解(上)
    
    
    
    07
    资金对账项目配置设计完成线上支付交易以后,虽然通道方告知支付成功,但是钱是不是真的能给,还需要打一个问号?资金对账就是应收应付和实收实付之间的核对;什么是应收应付,什么是实收实付呢?哪些数据与之对应呢,本文会详细介绍
    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是微信开的的账户号为1的收款账户
    
    对账文件管理前面已经讲过了,每个账户次日都会提供相应的清算文件和结算文件;那么文件要跟资金资金对账项目对应上,最后为对账文件命名上可以知道对应的所属账户,比如   
    规则:通道方+账号+文件类型+交易日期
    资金对账项目1:wx-1-pay-20210204
    
    
    3、对账项目管理
    一个企业可能会存在很多个资金账户;为了便于管理,我们就需要一个菜单专门管理资金对账项目;示例如下
    
    
    该页面可以查看所有的资金对账项目,每个项目就是一个实体资金账户;点击设置可以进行该对账项目的配置设置;右上角的新增可以新增新的项目
    
    
    
    4、资金对账模式的选择
    资金对账我们知道是核对应收应付和实收实付,实收实付我们知道就是银行实际资金的变动,使用银行结算账单即可;那么应收应付的选择其实有2种方法一个是使用通道的清算文件作为应收应付,另一个是使用平台的资金账务作为应收应付
    1)使用银行清算文件
    就是银行记录应收应付与实收实付进行核对,但是有个缺陷就是平台的支付记录需要跟银行的清算文件进行核对,所以核对模型如下
    
    看3中的新增对账项目中有一个关联交易对账,就是看一下平台的支付记录和清算文件核对有没有差异,如果没有且资金对账没差异,那么就没有问题
    
    2)使用平台资金账务核对
    就是如果公司有账务中心的话,可以直接拿资金变动账务与实际银行的资金结算账单核对,这个不做具体介绍了
    
    
    
    5、对账维度
    交易对账是按照逐笔核对的,资金对账我们不按照逐笔核对,因为存在轧差以及线下汇入等情况,我们按照费用维度进行核对,就是将应收应付和实收实付解析成款项,对相同款项进行核对,比如收款,收款手续费,退款,退款手续费,打款等
    
    
    6、对账项目设置
    我们以核对清算数据和结算数据为例,资金对账项目解析就是将文件里的数据解析汇总到对应的款项上去,知道一个账户今天每一个款项上的金额
    
    该配置器最终的实现是
    
    我们从页面可以看出来,该配置是将文件里的数据先通过“条件组”的筛选,然后取目标数据的金额,并且对金额进行运算汇总;比如例子中的第一条就是:取交易状态=success的数据,取订单金额作为结算金额
    如文件数据
    
    通过原型中的配置条件
    
    条件组:交易状态=success,
    金额:正直汇总  订单金额
    我们得到了:收款=100+90=190
    其他费用逻辑类似
    一定要枚举一个资金账户里的每一类型费用,不能遗漏,不然会出现资金差异
    这样完成配置后,一个对账项目就配置完成了;会照着配置的时间每天完成账单数据的汇总,得到该账户每一方数据的每个款项的金额
    
    
    08
    对账引擎设计和结果管理
    前面的文章都是建设工作,对账的基础,今天我们就来聊一聊怎么动起来,就像发动机一样要让组织转动起来,同样对账也是,需要一个核心的处理流来完成每天和每个对账项目的核对,我们今天来聊一下几个关键的处理
    在对账执行前还有最后几个重要的问题没有解决,那就是对账的核心处理逻辑是什么;对账有几个关键的处理引擎
    
    
    1、对账连续性控制引擎
    对账不能跨日,比如2号对完才能对3号,如果今天是10号,2号还没对账,那么3-9号的账都不会核对;因为前一天的单边会循环进入下一天的核对
    
    
    
    2、对账时间控制引擎
    如上表,我们需要管理对账的时间;这里有3个时间概念需要知道
    
    • 对账日期:就是对的那一天的账,也是交易成功时间或者资金变动日期

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

    • 最后对账日期:一个对账项目的最后一个对账日期

    3、对账状态控制引擎

    需要管理可查每一个对账项目在每一天的对账状态

    4、对账任务流程控制引擎和报警

    主流程控制对账项目的任务执行,并在流程变更更新其他控制环节参数;如果主流程某一个处理失败那么进行任务报警,人工干预重启流程

    5、对账核心引擎

    对账最核心的引擎就是数据间逐笔核对的过程

    比如经过上面的逻辑,对账项目1在x日的对账结果如下

    6、对账结果查看

    通过上面的对账执行,我们就得到了对账的结果,每个对账项目的对账总笔数,总差异

    1)交易对账结果

    该结果是每个对账项目按笔数核对的结果

    2)资金对账结果

    该结果是每个资金账户对账项目,按照费用款项核对的结果

    好了,得到了对账结果之后,下一步就是针对不同的差异进行排查和差错处理了

    09
    差错处理和差错配置设计
    对账有两个核心目的,一个是发现错误,另一个是改正错误;今天我们说一下对账差异的处理
    对账结果如果有差异,就需要有排查差异的原因,差异原因千奇百怪,但存在必是有原因的,如果时查不到就先挂着,至少我们知道了有一个差异待处理;(下文提到的差异我们代表交易对账对出的单边或者错账以及资金对账对出的资金长短款)
     
    
    1、关于差错处理差错处理其实就是消除差异的过程
    
    • 发现差异:对账结果对出了差异

    • 排查差异原因:排查差异原因,是掉单了,bug,时间差等具体的原因

    • 按照实际处理差异:找到原因后对差错进行处理,掉单的补单,bug就修复,时间差的话就不用处理,等待第二天对平

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

    2、交易差错处理

    交易对账是数据的逐笔核对,会出现三类结果

    • 对平:无需处理

    • 单边:需要处理

    • 错账:需要处理

    1)差错列表

    对账的差异会单独出现在差异列表等待处理

    点击处理,弹窗选择处理类型,提交之后可以走一个流程,也可以直接处理完成

    2)差错处理类型

    就是我们用什么样的方式消除了差异,比如如果是银行成功,我方平台掉单了,那么就进行补单,补完后就对平了,这样也是保证用户的权益;这时因为是我方掉单了,所以对账结果是银行单边;等我方补完单后,银行的这笔单边就出错了“平台补单”

    我们可以预设一些差错处理类型,形成每个类型的处理流程,便于在处理的时候直接选择使用

    3)差错处理接口

    有些差错处理是可以让相关系统包装接口直接进行处理的;比如平台掉单补单,可以让订单系统包装一个补单接口,对账系统调用进行补单

    3、资金差错处理

    资金对账的差异是费用的差异,收款,退款,手续费;在账户对完结果后,如果确认不是解析等技术层面的差异,可以对结果进行一个确认,确认之后差异会生成长短款数据,后面对资金进行长短款处理时就对长短款进行核销

    1)资金对账结果确认

    2)长短款管理

    比如微信的一个资金账户,资金同事直接在微信商户后台操作了一笔转账,或者用户直接用微信转给给了这个账户,这时候都会出现微信收款比平台收款多的情况

    微信账单收款1000----------平台记账收款900

    此时资金对账就会有100元的长款,就是微信多收了

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

    3)长短款核销

    对于生成的长短款差异,同时也会生成账务凭证,算是一个挂账凭证,为了让账务是平衡的;后续针对每笔资金差异进行排查核销;比如如果确认是人工微信做了转账,那么可以直接核销“资金人工转出确认”,直到长短款没有待核销长短款,我们的资金就是准确的了

    4、其他对账场景案例

    除了常见的三方支付,电商等的普通的在线交易的对账,还有一些其他领域的核对,虽然行业不同,交易数据特点不同,但是对账的本质是相通的;唯一不同的就是交易数据的结构千奇百怪,导致数据的解析,核对逻辑会有变化,下面我们举几个场景

    1)红包中间账户对账

    我们都知道,红包场景算是比较复杂的,因为发红包的支付一笔红包款,会发出几十个红包,最后有些红包没被领取又退回了,这个核对场景最复杂的是一对多,我们站在红包的中间账户角度看这个交易场景,对中间账户的进出进行核对

    案例:用户A用招商银行卡通过红包发了10个红包共100元,3天后一共领了7个80元,退回20元到招商银行卡

    • 红包发放充值流入:+100元

    • 红包流出付款流出:一共8笔共80元

    • 超时未领取退回流出:一笔20元

    你觉得该如何做核对呢?

    2)机票代理对账

    我们都知道去哪网,携程,飞猪,这些卖机票的平台;可能不太清楚这些平台上的众多机票代理商,他们的交易体量也是非常巨大了,每个月卖出几万账票的很多;

    我帮助很多机票代理商实现了自动化对账的系统建设;他们的对账相对来说是非常复杂的,在鹤壁有一家代理商是从深圳搬过来的,他们一共有5个财务每天进行对账,5个财务的年薪资支出有二三十万之多,可想而知如果实现系统化对账,能节省多少费用

    机票代理商的交易模型:

    从模型中我们可以看出来,主要是有三个环节

    1)售票平台

    代理商入住后,就像淘宝已经,会有个结算账户,记录卖票记录和结算款记录,卖出去10张票,平台抽取佣金剩余部分结算给代理商结算账户;平台会提供2分文件:机票销售明细文件,结算明细文件;这两份数据要做核对

    2)机票代理商

    机票代理商有一个机票管理系统,购买的第三方服务公司的,可以记录在每个平台的卖票情况以及付款出票情况

    3)付款通道

    机票代理商要卖机票需要向航司去买,卖票付款的话航司签约了一些三方支付公司,比如支付宝,易宝支付,代理商选择这些付款通道进行签约向航司付款,先把钱充值到指定付款账户中,易宝支付是航旅行业觉得的第一名,付款通道会给机票代理付款文件

    机票代理的对账模型:

    • 售票平台的售票明细与结算明细核对

    • 售票平台的售票明细与代理商系统的售票明细核对

    • 代理商系统的付款明细与通道的付款账单核对

    机票行业数据特点:

    这个行业的文件是很复杂的,特别是几家ota平台,文件形式各不相同,一个用户买7张票,一个订单对应7个人,对应7张票;有的平台的一个订单一票记录,票号塞在一个单元格里,有的平台是一张票一条数据....

    大家可以思考一下,对账怎么对呢:按照订单号对?还是按照票号对?

    3)还有一个行业是券商对账

    什么是券商呢,我们在招商信用卡,中移动积分商城里兑换的商家优惠券其实不是直接由商家提供的,而是中间券商;就像电子支付一样,中间券商汇集采购商家的优惠券,然后通过接口提供售卖给信用卡平台或者中移动等平台;用户在中移动或者信用卡商城兑换后到商家去消费,然后进行层层的核销和结算

    招商银行和中移动与券商结算,券商再把结算款结算给商家

    这个对账模式我就不再细说了,大家可以思考一下如何建设券商的对账系统

    结束语

    好的,对账系列我们就完结了,对账系统大家会设计了么?

    实际工作中,每个行业,每家公司的业务场景和业务模型都会有差异,对账模式以及系统设计也需要相应的针对性设计,在通用对账的基础上进行调整,比如因为数据结构特点设计解析器,因为业务流程不同设计对账流程和差错处理流程。

    虽然文章尽可能详尽,但难免有疏漏,欢迎交流讨论~

    ↘好文推荐:
    对账系统设计详解(上)
    
    大厂没有方法论(上)
    阿里设计师出品!B端产品文案指南
    
    点个“在看”吧
    
    展开全文
  • 对账系统

    千次阅读 2017-08-13 21:11:35
    如何做一个对账系统 在互联网行业中只要涉及到支付,必然就会有对账的需求,几乎所有互联网公司的业务中多多少少的都会涉及到支付,大一点的公司甚至都标配有了自己的第三方支付公司,因此对账具有普遍性。对账...

    如何做一个对账系统

    在互联网行业中只要涉及到支付,必然就会有对账的需求,几乎所有互联网公司的业务中多多少少的都会涉及到支付,大一点的公司甚至都标配有了自己的第三方支付公司,因此对账具有普遍性。对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司中,一般都会有独立的对账系统来处理,比如:电商平台、互联网金融、第三方支付公司等。

    对账是支付系统中的一环,因此在对账前我们先了解一下相关的业务知识


    业务知识

    什么是对账

    传统的对账就是核对账目,是指在会计核算中,为保证账簿记录正确可靠,对账簿中的有关数据进行检查和核对的工作。在银行或者第三方支付中,对账其实是对一定周期内的交易进行双方确认的过程,一般都是在第二天银行或者第三方支付公司对前一日交易进行清分,生成对账单供平台商户下载,并将应结算款结算给平台商户。在往下一层,在互联网金融行业或者电商行业中,对账其实就是确认在固定周期内和支付提供方(银行和第反方支付)的交易、资金的正确性,保证双方的交易、资金一致正确。

    广义的对账,所有跨应用的数据交互,理论上都应该进行对账。所以对账也可以分为信息流对账,资金流对账。信息流对账也一般用在自己内部系统的对账,比如支付系统的支付数据和业务系统的业务数据进行对账,保证资金交易和业务交易的一致性。资金流对账也就是支付系统和银行或者第三方支付系统之间的资金交易对账。

    对账方式

    • 单向对账:一般拿第三方支付机构或银行流水,与自己系统进行对账,防止出现掉单问题;
    • 双向对账:两个应用间的流水进行双向核对,如订单与财务系统,既要保证财务系统支付成功的记录,订单系统也是成功的;也要确保订单系统记录成功的记录,财务系统也成功。

    我们一般采用双向对账的方式进行对账

    对账相关的问题

    不同系统日切点不一致问题:滚动对账
    差错处理:补账,补偿(退款)


    相关概念

    轧帐和平帐

    每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。

    长款和漏单

    在以平台交易为基准的情况下和银行对账,发现周期内的交易,平台有此订单而第三方支付中没有订单,成为平台长款。平台长款一般是由于用户在支付的时候跨天的情况,比如用户在23:58分创建了订单,在第二天的凌晨00:03分进行了支付。在以银行交易为基准的情况下对账,银行有此订单而平台无此订单,即为平台漏单。平台漏单很少见,一般直接转人工处理。

    账户体系

    在一般的支付体系中会分为登录账户和支付账户,支付账户指用户在支付系统中用于交易的资金所有者权益的凭证;登录账号指用户在系统中登录的凭证和个人信息。一个用户可以有多个登录账户,一个登录账户可以有多个支付账户,比如零钱账户、储值卡账户等。一般来说,支付账户不会在多个登录账户之间共用。对账的交易一般都是支付账户参与交易。

    交易与账户

    账户设置,一般是从交易开始的。 交易的实现必须有账户的支持,账户是交易的基本构成元素。 从支付系统的角度,交易中涉及到的资金流是资金从一个账户流向另一个账户。 发起交易的一方,被称之为交易主体,他可以是一个人,也可以是一个机构。

    清算和结算

    清算主要是指不同银行间的货币收付,可以认为是结算进行之前,发起行和接收行对支付指令的发送、接收、核对确认,其结果是全面交换结算工具和支付信息,并建立最终结算头寸。

    结算是指将清算过程产生的待结算头寸分别在发起行、接收行进行相应的会计处理,完成资金转移,并通知收付双方的过程。当前,大多数银行结算业务的完成主要通过两类账户:一是银行间互相开立的代理账户,二是开立在央行、独立金融机构如银联、或者第三方支付机构的账户。

    清算:计算各方应收应付钱款的时间与金额。结算:根据清算的结果在指定的时间对各方进行实际的资金转移操作

    资金池

    用户备付资金(如充值)统一放在企业的银行账户中,企业可以随意支配这些资金,即为资金池。与之对应的是第三方托管,用户备付资金是放在企业在第三方支付机构为用户开设的虚拟账户中,企业无法随意取出这些资金。现在互联网金融全面要求接入银行存管,就是银行会为每个用户创建一个资金账户来保护用户的资金,互联金融公司不能随意划拨这些资金账户中的金额。


    对账系统

    对账设计

    对账系统的设计阶段,将对账系统分为四个模块,每个模块的负责自己的职能。

    • 文件获取模块:下载或者读取各渠道对账文件
    • 文件解析模块:创建不同的解析模板,根据渠道和文件类型获取对应的解析模板进行解析
    • 对账处理模块:对账的业务逻辑处理
    • 差错处理模块:处理差错池中的订单

    一般会设计一个定时任务,每天固定的时间点触发,定时驱动调度类分别调用四个模块来处理对账。也有的银行会主动的推送对账单,再通过http回调来触发对账流程。

    对账算法

    一、流程:

    1、从上游渠道(银行、银联等金融机构)获取对账文件,程序逐行解析入库;
    2、在程序处理中,以上游对账文件的表为基准,程序逐行读取并与我们系统的交易记录对比账务记录(有账务系统情况下,合理方案应该是于账务记录)对比,查找出差异记录;
    3、以我们系统的交易记录对比账务记录为基准,程序逐行读取与上游对账文件对比,查找出差异记录。

    二、缺陷:

    1、对账过程中查询相关数据,如果数据量巨大,对数据库性能影响较大,而且对账逻辑扩展极为麻烦;
    2、逐行比对算法效率较低,但算法上并无好的优化余地。如果采用数据库INTERSECT、MINUS对数据库压力也高;
    3、在业务量大的情况下(例如有上百家上游渠道需要对,每一家都有几十万条交易记录),对账服务器及数据库服务器负荷较高。即便采用读写分离,对账时候使用读库,压力一样很大;
    4、导入批量文件,逐行入库效率较为低下(每一次都需要建立网络连接、关闭连接)。

    三、改进:

    1、涉及网络传输的,尽量采用批量方式操作,减少网络消耗及时间消耗;
    2、使用Redis等NOSQL数据库,降低数据库服务器的压力。同时在扩展上也容易,一台Redis服务器不够,可以无限制增加用于对账用的服务器;
    3、使用Redis的set集合的sdiff功能,利用Redis sdiff算法的高性能,比对上游记录和我方记录的差异。


    对账流程

    1、下载对账单

    大多数银行都要求接入方提供ftp服务,银行定时将对账单推送到接入方提供的ftp服务器上面;还有一部分银行会提供对账单的下载服务,通过ftp/http的都有,ftp方式居多;另外网银的对账单比较特殊,一般都需要结算登录网银的后台管理系统中,手动下载,结算下载完对账单后在导入到对账系统。

    技术实现上可以做成工厂模式,不同的支付渠道有不同的下载类,如果是http接口将文件写入到对账单,如果是ftp服务器,将服务器中的对账单下载到本地带解析的目录中。主要涉及的代码ftp工具类、http(s)工具类,相关IO读写。

    技术选型上,HTTP(S)用apache httpclient即可实现链接池和断点续传, FTP也可以使用Apache Commons Net API。 但不管是哪一个,都需要设置重试次数和链接超时间。重试次数和间隔的设置需要小心,重试太频繁,容易把服务器打死.;时间间隔太大,又会阻塞后续处理步骤。5~10分钟是一个合适的重试间隔区间。

    2、创建批次

    创建批次一方面是为了防止重复对账,另一方面需要在对账结束的时候将对账的结果信息存储到批次中。

    3、解析文件

    解析文件主要是将下载的对账文件解析成我们可以对账的数据类型并且入库。解析的文件不同渠道有不同的类型,因此也可以设计成不同的解析模板,使用工厂模式将不同格式的文件解析成可以对账的统一数据类型。解析的文件类型一般包括:json、text、cvs、excle等,另外部分银行会对账单做加密或者提供zip打包的格式,这里就需要额外开发zip工具类和加解密工具类进行处理。

    对账文件中包含的主要信息有:商户订单号、交易流水号、交易时间、支付时间、付款方、交易金额、交易类型、交易状态这些字段。

    4、对账处理

    对账处理也是对账的核心逻辑,具体分为以下的几个步骤来实现:

    • 查询平台所有交易成功的订单
    • 查询平台所有的交易订单
    • 查询平台缓存池中的数据
    • 查询银行交易成功的订单
    • 开始以平台的数据为准对账,平台长款记入缓冲池
    • 开始以银行通道的数据为准对账

    以平台订单为基准对账逻辑:以平台所有交易成功的订单为基准,遍历银行订单的所有数据,找出订单号相同的订单,对比订单的金额、手续费是否一致。如果一致跳过;如果不一致,平台订单进入差错池;如果在银行订单中没有找到此笔交易,订单进入缓存池,记录平台长款。同时统计对账相关金额和订单数。

    以银行订单为基准对账逻辑:以银行的交易数据为基准,遍历所有平台的交易(包括未成功的订单),找出订单号相同但支付状态不一致的订单,在进行对比金额存入差错池。如果没有在平台的交易中找到此订单,再从缓存池中遍历查找,找到对应的平台订单验证金额是否一致,不一致进入差错池。如果在缓存池汇中依然没有找到对应的订单,直接进入差错池,记录平台漏单。同时统计对账相关金额和订单数。

    5、对账统计

    根据对账处理中,统计的相关信息包括:对账完成时间、对账是否成功、平账的金额和订单数、差错的金额和订单数、缓存池金额和订单数等。

    6、差错处理

    在一般系统中,差错处理分为两种,一种人工来处理,一种系统自动来处理。

    主要有如下情况:

    • 本地未支付,支付渠道已支付。这主要是本地未正确接收到渠道下发的异步通知导致。 一般处理是将本地状态修改为已支付,并做响应的后续处理,比如通知业务方等。

    • 本地已支付,支付渠道已支付,但是金额不同,这个需要人工核查。

    • 本地已支付,但是支付渠道中无记录;或者本地无记录,支付渠道有记录。在排除跨日因素外,这种情况非常少见,需要了解具体原因后做处理。

    示例代码

    网上的对账系统的开源代码不是很多,但有一家还不错:龙果支付。龙果支付中有比较完整的对账流程,代码中以微信、支付宝的对账单为例写了对账的流程,大家可以参考。

    roncoo-pay

    最后,你们公司的对账系统是怎么实现的,遇到了那些坑?欢迎和我讨论。

    展开全文
  • 一、对账和对账系统是什么 对账,就是核对账目,是指会计核算中,为保证账簿记录正确可靠,对账簿中的有关数据进行检查和核对的工作。传统的对账都是由财务手工线下进行的,使用账簿、凭证、表格等作为数据承载或...
  • 如何做一个对账系统

    2019-05-21 17:46:23
    对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司中,一般都会有独立的对账系统来处理,比如:电商平台、互联网金融、第三方支付公司等。 对账是支付系统中的一环,...
  • 企业银行对账系统

    2014-12-01 09:37:46
    企业银行对账系统系统(EBAsys),是一款用于企事业单位的财务部门,将企业账单明细和银行账单明细进行自动勾兑、最后形余额调节表的一套财务管理系统
  • 对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司中,一般都会有独立的对账系统来处理,比如:电商平台、互联网金融、第三方支付公司等。对账是支付系统中的一环,...
  • 第一章:对账系统概览 一、什么是对账? 1.生活中的对账场景 - 煎饼摊老板的故事 对账在我们的生活中非常常见。 举个例子:下班回家路上,你有点饿,看到路边有个煎饼。于是过去买了个煎饼,老板把煎饼递给你,然后...
  • 简单快捷订单对账系统,主要特色有 商品快速选择下单,方便操作 商品出售数量统计 快速对账 商品金额快速计算 订单查询 登录 商品管理 商品出售记录 商品批量组合下单 商品下单记录 商品自由选择下单 订单...
  • 企业银行对账系统系统(EBAsys),是一款用于企事业单位的财务部门,将企业账单明细和银行账单明细进行自动勾兑、最后形余额调节表的一套财务管理系统。 企业银行对账系统系统产品特点 (1)快速导入、快速勾兑、快速...
  • 自动对账系统原型图

    千次阅读 2021-02-20 11:44:47
    自动对账系统流程图 对账概念 对账主要做的是核对账务,是指在会计核算中,为保证账簿记录正确可靠,对账簿中的有关数据进行检查和核对的工作。 广义的对账,所有跨应用的数据交互,理论上都应该进行对账。所以...
  • 小小样对账系统

    2015-08-30 13:39:54
    封装的Excel 公式 盘点资金 系统对账 销售记录 历史查询 收银员小工具 vb编写小程序
  • 从0到1设计一个高可用数据对账系统

    千次阅读 2019-05-16 18:27:27
    一、业务系统设计概述 1、什么是业务系统 互联网公司常常将产品方向分为两类,C端和B端,C端主要是面向客户和消费者的系统,B端的范围则相对模糊,给供应商或商家使用的系统,给内部业务人员使用的系统,都统称为B...
  • 对账系统的设计方案

    2020-07-10 09:38:54
    对账系统作为支付系统中的基石系统,处于整个支付环节中的最后一层,主要用来保证我方支付数据与第三方支付渠道或银行的数据一致性。 在没有对账系统之前,财务在第二日手工核对前一日的应收与实收。倘若不一致,这...
  • 支付对账系统怎么设计?

    千次阅读 2018-09-29 11:29:06
    支付对账系统是整个支付清结算体系中具体基础性意义的一个环节,是确保支付平台与各类第三方支付渠道数据一致性的关键系统,是商户资金结算、资金划拨、资金报表等逻辑准确运行的重要前提。支付对账涉及账单下载处理...
  • 对账系统设计和架构

    2019-09-16 10:10:11
    对账系统的设计阶段,将对账系统分为四个模块,每个模块的负责自己的职能。 文件获取模块:下载或者读取各渠道对账文件 文件解析模块:创建不同的解析模板,根据渠道和文件类型获取对应的解析模板进行...
  • 来源:程序通事前言对账系统作为支付系统中的基石系统,处于整个支付环节中的最后一层,主要用来保证我方支付数据与第三方支付渠道或银行的数据一致性。在没有对账系统之前,财务在第二日手工核对前...
  • 由于银行对账的滞后性和对账单回收少以及对账员与柜员等参与人员没有彻底分离等弊端的存在,给了不法分子可乘之机。这必然会给银企乃 至国家带来严重的经济损失。所以,银企对账的各个环节我们都要重视起来,严加...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,911
精华内容 4,764
关键字:

对账系统