详解第三方支付之关于会计对账

2023-10-28 20:10

本文主要是介绍详解第三方支付之关于会计对账,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

会计学有一个很重要和很出名的公式,相信很多人都见过:

资产 = 负债 + 所有者权益 + 收入 – 费用

 

但会计学上还有另外一个比较隐蔽的公式,虽然不像上面的公式那么出名,但也经常能见到它(或者变种运用)的身影。


那就是,即期末值=期初值+期间变化值,也就是期末值=期初值+期间入-期间出。该公式非常简单,也很容易理解,并且大量的用于计算和核对两个前后时间点的会计值的关系,它明确的指出,期末这个点的值是由一系列变化而来的,变化来自两个方面:

1,存量—即期初值;

2,增量—期间变化值。

任何期末值的多少必须由这两部分变化而已,不能凭空捏造。


在账户中,我们也能够经常看到:资产账户的借方余额=期初借方余额+借方发生额-贷方发生额。

 

那么对一个账户来说,必须记录两个维度:余额和流水,余额记录的是一个时间点的值,而流水则是反映一段时间内余额变化的过程,两者应该是一致的,即余额的增减一定对应的流水入和流水出,流水入和流水出一定会引起对应余额的增减,那么,在实际的实现中,如何确保这两者是一个事务呢?我们一般会使用db的单机事务去保障。


问题来了?既然我们已经通过事务去保障两者的一致了,为啥还需要额外的会计对账呢?必要性在哪里?

 

从会计核算的角度看,虽然在具体的账户实现中,余额和流水会在一个db事务的方式进行实现,但还是有必要在会计方面对余额和流水进行二次对账核对,目的是提供一个独立的第三方核算机制,用于发现和核对资金的安全,如余额被人为修改了,如人为增加100元,虽通过db签名也能发现,但如果对应的流水没修改,则可以通过会计核对后发现该问题。那么如果对应的流水也被更改呢?那么单独对该账户的流水和余额进行会计核对(我们称为分账户核对)是无法发现问题的,会计恒等式还是成立的,那么通过进一步的总账户核算也能发现问题(即每个用户单独的余额和流水都是符合恒等式的,但加起来跟外部总账是对不上的,如对应的银行收款单,对应的商户入账账户等),会计核算系统正是需要从独立第三方核算视角,建立一整套合规的,高效和健壮的系统,从分账户,总账户等进行多个级别的核算,确保整个第三方支付系统的资金安全。

 

那么如何对账呢?按照及时性的要求,我们分为T+1和准实时的对账,下面分别介绍:


一, T+1对账

      即今天对昨天的账,是按天增量对账的一种,在日切点后,把落入日切点之前的当作昨天的账目进行汇总核算,得到昨天的一个余额,即昨日余额。


在多系统中,一个难点是日切点的统一,在传统银行IT系统中,都有一套成熟的日切系统来负责协调各个系统的日切,而对没有专门搭建日切服务的系统来说,也有一些简单的处理办法:如在业务入口点分配业务时间作为贯穿后续各个系统记账的业务基准,这样各个系统的流水均会以该业务时间为准,确保同一个时间点的流水在各个系统一定是在同一天内。另外一种方式是跨多一天核对流水,即虽然对账的是昨天的流水,但会看前天和今天的,通过业务系统进行调整,然后按照其中一个为基准,重新记账。

 

二,分钟级的准实时对账

        一种好的方法是余额字段记录一个事务流水号(流水号自增,通过流水号可以找到对应的流水),余额和流水增量对账根据流水里面的事务流水号进行核对。


        前面两种办法都存在一个困难:即由于系统余额总处于交易中,因此余额的值时刻在变化,很难捕捉某个时刻的余额,然后和流水进行核对,那为了进行从会计核算层面获得一个期初的余额值,有什么办法吗?


        方法一:帐户自动具备按天轮换的机制,这样的机制本质是以空间换时间,通过两个定时轮换的账户按天轮换来获得期初的值,该办法具有一定的操作性,但也带有较多的风险,特别是个人的账户一般只能有一个账户,是不能进行随意切换的,该办法可以用在一些中转类的账户。


        方法二:时间片倒推,比如我们在00:30 拉取00:30的流水和余额,然后把流水反向推到23:59(即流水一条条扣除直到时间点在00:00之前的流水),那么23:59对应的余额就作为期末余额。

 

        有了前面的办法,那么每天的核对其实就是在昨天的期初余额基础上,找到变动的部分,相加后得到期末余额进行核对即可(新的一天,当前的期末余额变成第二天的期初余额),类似数学归纳法一样,只要期初余额是对的,那么期末余额的准确性就是判断一天内的变动部分是否准确即可,而一天内的变动和核对是相对比较简单的。

这篇关于详解第三方支付之关于会计对账的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295643

相关文章

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D