背景

目前app线上涉及若干和支付有关的业务,并且存在如下情况:
1、一个业务支持多种支付方式
2、一种支付方式同一个商户号,�支撑多个业务
3、一种支付方式存在多个商户号,不同的业务有些使用不同的商户号,有些业务使用同一个商户号。
4、在某些业务中支持退款,且未设置退款时限。
5、某些业务的数据是分散存储的,如某系统仅含支付信息,某系统仅含产品销售信息。
因此,对账工作显得格外复杂,为了理清思路,解决对账这个问题,写下本文。

对账涉及的一些概念

1、支付渠道:目前分为支付宝、微信、招行一网通支付等。
2、业务订单:app线上涉及支付的业务,在数据库中的交易记录,记录一般含商家单号、支付单号、金额、支付时间等。
3、商品订单: 某些业务的商品为其他服务提供,app在支付成功之后将去其他系统创建订单。
4、不平账:分为短账、长账、错账
短账:实际入账比应入账少
长账:实际入账比引入账多
错账:数据错误,如金额不一致,其他数据不一致等。

订单支付流程

这里需要按照业务场景划分类型,不同的类型有不同的流程,按照app目前线上的业务情况,有如下几种类型:

1、单系统

订单支付成功之后,将本系统中的订单状态改成已经支付,并进行其他业务逻辑,对账工作中涉及的数据,在本系统可以直接取到。

2、多系统

订单支付成功之后,将本系统中的订单数据提交到其他系统中创建商品,并将本系统中的订单状态改成已经支付。对账将在系统间进行,各个系统层层对账。

对账总体思路

从短账、长账、错账的角度出发,对账本质上为两个集合之间的比较。集合中的元素为两个系统记录都存在的具有一一对应关系的值。在支付系统中为商户给的订单号,一般为本地订单的订单号。如存在多个系统,对账需要对多个系统的数据两两比较。
集合之间的运算方式分成三种:1、交集( ∩) 2、差集 (- ) 3、并集(∪)

以下所述的集合均为一天内的数据集合。

支付系统的订单集合为P
本地业务订单的集合为L

短账=L - P 记为LP
长账=P - L 记为PL
错账=error( L ∩ P ) 记为L_ERROR
平账=(L ∩ P)-error( L ∩ P ) ,记为L_SUCCESS
error为搜索 集合内数据错误的函数。

如果存在n个其他系统需要两两对账
则系统间的短长账和平账也可以用上述方法解决。

设:

系统1的订单集合为S1
短账=S1 - L_SUCCESS 记为LS1
长账=L_SUCCESS-S1 记为S1L
错账=error( L_SUCCESS ∩ S1 ) 记为LS1_ERROR
平账=(L_SUCCESS ∩ S1)-error( L_SUCCESS ∩ S1 ) ,记为LS1_SUCCESS

系统2等依次类推

问题

Q: 一个支付渠道支撑多个业务,如何用上述方法解决?
A:

支付系统的订单集合为P
本地业务订单的集合有:L0、 L1、 L2...LN

短账0=L0 - P
短账1=L1 - P
短账2=L2 - P
...
短账n=LN - P
长账= P - L0 - L1 - L2 ... - LN
对账集合: (L0 ∩ P) ∪ ( L1 ∩ P ) ∪ (L2 ∩ P) ...∪ ( LN ∩ P ) 记为T
错账=error( T )
平账=T-error( T )

Q: 若短账或长账是由时间差引起的呢,如本地订单为23:59:59秒创建,而支付系统中的时间为0:00:00之后的?
A:这里视业务流程定,可以做手工不平账处理,也可以在第二个对账日继续对这些长账和短账进行处理。需要并入第二个对账日的对账集合中。一般可以设置一个时间段,如规定0点前后半小时内的长短账,在第二个对账日继续处理。

Q: 退款怎么对账
A:与上述方法类似,只是时间范围不同,若退款未设置时限,则比较的对象为 支付系统对账单上的某一天的退款集合与订单系统的总退款集合

对账流程

1、下载各个渠道的明细对账单,可以通过支付系统提供的接口下载,也可以人工下载各个支付系统的对账单,如支付宝和微信的都为cvs格式的文件。
2、准备各个业务的对账数据
3、进行集合计算获得不平账
4、进行不平账处理

支付业务与技术架构学习总结(6)——对账系统的设计相关推荐

  1. 支付业务与技术架构学习总结(8)——支付系统设计包含:账户,对账,风控...

    账户体系是支付系统的基础,它的设计直接影响整个系统的特性.这里探讨如何针对电子商务系统的支付账户体系设计.我们从一些基本概念开始入手,了解怎么建模. 支付账户和登录账号 账户体系设计首先要区分两个概念 ...

  2. 支付业务与技术架构学习总结(9)——银行核心系统之清算体系

    支付清算系统是经济金融活动的基础性支撑.支付.清算体系建设是金融理论与实践的重点课题.本文主要描述了支付系统建设的发展历程及构成,分析了银行内部清算体系设计,有利于快速建立起金融服务体系思路.希望略尽 ...

  3. 支付业务与技术架构学习总结(11)——支付中台的几个面向:支付业务、资金核算、面向风控等切面

    一.概述 在 1.0 的支付系统中,我们遇到了诸多问题.痛定思痛,我们决心对支付系统做一次架构升级.那么,怎么去做支付系统的架构升级呢?我们从两个方面来进行架构升级梳理: 巨大的单体应用必须要拆分,在 ...

  4. 支付业务与技术架构学习总结(10)——第三方支付账务系统论述

    一.第三方支付账务系统设计 首先谈一下支付公司账务系统如何设计.关于如何记账,国内长期以来有两个发展方向,一个是以金蝶.用友为代表的财务系统,另一个是以银行为代表的银行账务核心系统.这两种账务系统都是 ...

  5. 支付业务与技术架构学习总结(2)——到底什么才是银行业务架构?

    业务架构大家常听到也常见到(如下图就是某银行的业务架构图),那么这个图就是业务架构的全部吗?那么到底什么是业务架构?为什么会有业务架构?业务架构应该面向哪些人,包含什么内容?本文集合作者经验和查阅相关 ...

  6. 支付业务与技术架构学习总结(12)——支付风控相关知识小结

    一.支付风险类型 支付风险主要需要防范一下几种类型的风险: 1. 账户风险 账户风险是指黑客通过技术手段攻破服务器系统,修改账户数据,并可能导致的损失.对于传统金融系统,行业标准要求通过专线进行网络连 ...

  7. 支付业务与技术架构学习总结(4)——对账相关业务知识及对账系统总结

    前言 在互联网行业中只要涉及到支付,必然就会有对账的需求,几乎所有互联网公司的业务中多多少少的都会涉及到支付,大一点的公司甚至都标配有了自己的第三方支付公司,因此对账具有普遍性.对账系统是支付体系中最 ...

  8. 支付业务与技术架构学习总结(3)——账务系统

    一.前言 账务系统是一个以会计为基础的系统:会计是把企业有用的各种经济业务统一成以货币为计量单位,通过记账.算账.报账等一系列程序来提供反映企业财务状况和经营成果的经济信息,账务系统就是实现这些过程的 ...

  9. 支付业务与技术架构学习总结(5)——支付系统账户体系模型设计

    一.支付账户和登录账号 账户体系设计首先要区分两个概念,支付账户和登录账号. 这是两个不同业务领域的概念:支付账户指用户在支付系统中用于交易的资金所有者权益的凭证:登录账号 指用户在系统中的登录的凭证 ...

最新文章

  1. 2021-06-11 pytorch基本语法
  2. 计算机与社会关系的案例,计算机网络与社会关系论文.pdf
  3. html页面渲染vue组件,Vue组件页面渲染的基本流程
  4. 一个表格中文字怎么换行_Excel表格中怎样快速将阿拉伯数字转化为大写文字?这样操作一键完成...
  5. oracle使用with as提高查询效率
  6. 5G 准备向 Wi-Fi 的 6GHz 频段下手了?
  7. 华为又对这一领域下手了,网友:太难了……
  8. 浅谈js与jq给新增元素动态绑定事件(事件委托)
  9. python到底有什么用-Python中的闭包到底有什么用
  10. android videoview截屏,android VideoView截屏黑屏解决方法
  11. go语言swag注解示例
  12. 传感器:HC-SR04超声波传感器原理(底部附代码)
  13. 切比雪夫插值多项式在非线性电路中的应用与比较
  14. 张志华-统计机器学习
  15. hp t410微型计算机使用,HP 发表新款 t410 AIO Smart Zero 精简型电脑,仅需网络线即可作为电源驱动使用(影片)...
  16. 森林防火(资源监管)“空天地人”四位一体监测系统方案
  17. 【旁门Python 01】什么是wheel包,如何去用它?
  18. js元素offset与client
  19. Android之SharedPreferences使用
  20. 乐华娱乐CEO杜华揭秘:捧红王一博 与孙一丁是配偶同居关系

热门文章

  1. 5 查询一个小时前_2021国考成绩查询系统登录入口
  2. 什么是python元祖_Python学习之元组
  3. java编码gbk的不可_解决 java “错误:编码GBK 的不可映射字符”
  4. Python笔记之两个二维列表构成的矩阵对应元素相减并遍历每个差值
  5. C语言之预处理探究(一):宏
  6. r730服务器内置SD卡位置,已解决: RE: 关于r730xd做存储服务器的疑问 - Dell Community...
  7. diy无感无刷电机霍尔安装_从工作原理来了解意大利Brusatori无刷电机
  8. java 类加载的机制面试题_java 类加载机制 阿里面试题
  9. 仓库管理员怎样做台账_仓库主管岗位职责
  10. android关键应用程序,Android应用程序基础.pdf