您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
咱们聊聊对账系统该如何设计?
账单,数据,渠道咱们聊聊对账系统该如何设计?
发布时间:2020-12-06加入收藏来源:互联网点击:
技术实现上可以做成工厂模式,不同的支付渠道有不同的下载类,如果是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、差错处理
在一般系统中,差错处理分为两种,一种人工来处理,一种系统自动来处理。
主要有如下情况:
本地未支付,支付渠道已支付。这主要是本地未正确接收到渠道下发的异步通知导致。 一般处理是将本地状态修改为已支付,并做响应的后续处理,比如通知业务方等。
本地已支付,支付渠道已支付,但是金额不同,这个需要人工核查。
本地已支付,但是支付渠道中无记录;或者本地无记录,支付渠道有记录。在排除跨日因素外,这种情况非常少见,需要了解具体原因后做处理。
回答于 2019-09-11 08:43:50
可以套用专业表格
回答于 2019-09-11 08:43:50
对账首先要确定重点,核心问题就是对钱,我们可以打出全月的银行对账单与银行日记账逐笔的核对,确保期初余额、期末余额与银行对账单相符。原材料账,库存商品账要与实物进行盘点,确保账实相符。
回答于 2019-09-11 08:43:50
对账的核心是对钱,钱的资金走向,所有之处锱铢必较,锱铢必究。
回答于 2019-09-11 08:43:50
这个是专业的财务人员回答的问题,我都不干财务我咋知道
回答于 2019-09-11 08:43:50
人工上传文件处理方式步骤如下:
下载文件
从指定SFTP服务器下载文件。
解压文件
一般为zip压缩包,节省存储空间,提高上传和下载速度。
解析文件
一般文件格式为EXCEL(财务人工上传文件,一般从银行或第三方支付后台下载)、CSV(数据接入方一般从数据库导出格式,或第三方支付提供的文件格式)、TXT。
存储数据
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |