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

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

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (