大家可能对资金调拨不太陌生,但是对调拨系统可能就接触的少了;那么什么是资金调拨系统呢?其实就是系统化实现资金账户之间资金的转移过程的系统,可大可小,可简可繁,一个拥有四五百个备付金账户的支付机构,这些账户之间资金调拨频率和体量是巨大的。

今天我们就聊一聊资金调拨系统的设计方法,以及需要关注的设计点。

一、资金调拨

我们都知道一个企业,支付机构,银行等都会用于多个银行资金账户;每个账户都会有不同的用途,每个账户中也会有不同体量的资金;当然每个账户中的资金的利息以及其他收益率也是不同的;所以基于业务需要开通了众多资金账户,又基于利益需要或者合规需要又将资金按照一定规则存放于不同的资金账户。

这样就会在一些场景下需要将一些账户的资金转到另一些账户中去使用,这个转移资金的业务就是调拨业务。

二、为什么要调拨

调拨系统的建立一个是基于调拨频率和调拨效率的需要,另一个就是可以实现全线上化的资金监控和管理;例如支付机构,会在一家银行开通备付金监管户,在其他很多银行开通备付金收付户以及备付金汇缴户。

基于监管需要资金日终会向上归集到监管户,日间又基于出款业务需要,将资金调拨至各个备付金收付户;因为账户数量多,调拨频繁,可能几分钟就需要调拨一次;那么人工处理是不现实的,这时就需要基于具体资金账户的资金需要通过系统完成资金的自动调拨。

三、调拨的方式

最原始的就是可以通过人工做调拨:比如资金同事到对公户网银平台,操作资金转账,将资金划拨至另一个公司名下的账户里,或者一个集团子公司名下的对公账户里;这种模式多用于资金调拨频率低,资金账户数量少的情况,一般的企业基本人工调拨即可满足业务的需要。

另一种就是系统自动调拨:就如2中提到的场景,基于出款需要或者其他业务需要实现系统化的自动调拨;当然调拨系统也可以是一个简单的调拨收后台,由人工提交调拨单据,发起调拨请求;另一种就是完全基于业务实际资金需要自动调拨申请;比如基于实际出款的总量,来决定目标出款账户资金余额是否充足,不充足时需要调拨多少,要从哪个账户调拨资金等系统处理。

四、资金调拨系统概述

调拨系统就是接受业务系统的调拨申请,完成调拨的判断以及调拨的发起;并记录所有调拨的业务数据的资金处理系统。

下面是一个比较通用的调拨业务架构:

调拨的请求来自各业务方,比如出款业务,还款业务,归集业务,或者其他的需要划拨资金的业务。

业务方将要发生的业务封装成调拨请求,发送调拨系统;调拨系统来判断该次需不需要进行资金调拨。

这个过程需要去查询出款账户的资金余额是否充足;预计其他资金预留规则综合得到需要调拨的资金数量。

然后生成调拨单据;基于调拨通道的限额情况对调拨单据进行拆单处理,然后生成调拨记录。

最后发起调拨打款申请完成调拨。

五、资金账户管理

资金账户管理其实就是维护所有可以参与的账户信息;一个是为了获得调拨需要的账户信息,另一个就是资金安全需要,仅允许在账户管理里存在的账户才能执行调拨业务;其他账户不允许作为调拨收款账户。

六、调拨通道管理

因为资金调拨的金额一般都比较大,一般的通道是无法满足的;所以就需要签约一些大额通道;比如银企直联,银行直签的巨额通道;我接过的一些超大额像单笔10亿,日累计50亿的通道,可以满足业务需要。

对于一般企业来说银企直联就可以满足需要。

七、调拨预留规则

基于业务需要判断资金调拨金额的时候其实还要考虑其他情况,比如调拨收款账户需要保留一定的资金量,不能全部用完,也就是有一个存量规则。

还有一种情况对比高频调拨出款的账户,比如一个支付机构的用于出款的备付金账户,可能每5分钟就需要一次批量出款,每5分钟就需要进行一次资金调拨;在如此高频率的调拨场景下如果预设一个底线存量那也是没问题的;但是考虑到资金的利用效率,以及收益情况。

另一个原因就是降低调拨频次,我们可以设定为30分钟调拨一次;因为每5分钟有一次出款批次,为了保证金资金充足,我们就需要基于一定的算法来保证金30分钟内的每次出款的资金充足;这时候,我们就需要一个合理的算法来计算每次调拨需要为接下来的30分钟的出款预留资金;我们假设这个预留资金为Ax,x代表调拨的场次。

这里不过多介绍如何计算,大家可以思考一下这个算法,我们可以再交流群沟通,假设我们得出的每个场次的调拨资金为 Mx。

八、调拨金额计算

基于上面的假设我们就知道了每次调拨应该调拨多少资金了,假设业务第2场次要从“招行1001账户”出款10亿,此时请求到调拨系统。

出款需求:chukuan=10亿。

此时通过招商查询接口查询到此时的账户余额是9亿,并且查询到账户在第2场次后要预留资金量为5亿。

所以本次是需要调拨资金的,告诉业务方账户余额不足请等待调拨结果。

这时计算需要调拨的资金量:xudiaobo=10亿-9亿+5亿=6亿,所以需要调拨的资金量是6亿人民币。

查询获得给该账户调拨的账户是存管户2001,生成调拨单。

由于通道限额单笔是5亿,所以需要对调拨单进行拆单。

九、账户调拨关系模型

该模式就是决定哪个账户往哪个账户调拨,利用出款账户来查询要从哪个账户调拨资金。

十、调拨发起

主要是业务发起以及人员从后台直接发起;所以需要向外提供调拨申请接口,后台需要调拨申请管理功能;这个就不过多介绍了,相信大家都能设计出来,认真思考一下吧。

十一、调拨审核

这个基于实际需要不同类型的调拨请求需不需要审核,视情况而定,人工提交的调拨申请肯定是需要审核的。

十二、调拨记录

调拨记录主要是调拨申请记录、调拨单记录、调拨子单记录、调拨打款记录、调拨审批记录等。

调拨单记录:

调拨子单记录:

十三、调拨出款

生成调拨子单以后,调用打款中心的调拨通道发起资金划拨申请;基于通道返回的结果变更调拨单的打款状态;并且将最后的调拨结果告知业务方,以便业务方进行下面的业务流程。

十四、调拨异常的处理

一般的异常就是调拨没有收到通道侧的最终反馈,这个就需要人工干预去查看资金有没有调拨完成;另一个就是调拨失败,这时候就需要一个失败重新出款的操作流。

陈天宇宙:多平台支付领域专栏作者,十年资深产品;前某宝支付、某东支付产品;支付产品经理网http://paypm.cn创始人,天使投资人;专注为10万支付产品经理和支付机构以及企业提供深度支付内容和服务!公众号:陈天宇宙

关于资金调拨系统的设计方法论相关推荐

  1. 系统架构设计方法论——Zachman框架模型

    驾驭复杂系统的整体设计 整个体系的架构设计和价值 事物背后的思考 Zachman proposes a logical structure for classifying and organizing ...

  2. 大学毕业4年-回顾和总结 10 -资金账务系统的架构设计(产品视角+技术视角)(图文并茂)

     背景 2014年和2015年开发P2P网贷系统的时候,某大牛有设计了一套简洁实用的资金账户系统. 系统设计主要是为了服务于P2P网贷等系统,资金账务系统可以作为一个独立的子系统对外提供服务.     ...

  3. 系统架构设计的工程与艺术(0)

    对于系统架构设计,我现在是功力不够,境界还凑合,俗称眼高手低是也.功力不够只能一点一点地练,一点一点的涨了,还不知道什么时候能有所小成.不过有境界也算是一件好事情,所以这个系列会先聊一聊境界方面. 之 ...

  4. 《食堂远程下单系统》设计规格说明书

      <食堂远程下单系统> 设计规格说明书 课程名称:软件需求工程与建模 指导老师:汤世平 小组成员: 姓名:金晨   学号:1120161943 姓名:方姝曼 学号:1120161940 ...

  5. 《程序员》2014年11月刊:电商峰值系统架构设计

    双11来临之际,<程序员>以"电商峰值系统架构设计"为主题,力邀京东.当当.小米.1号店.海尔商城.唯品会.蘑菇街.麦包包等电商企业,及商派.基调网络等服务公司,分享电 ...

  6. 支付系统整体设计:整体架构设计以及注意要点(三)

    一般来说,银行会提供两种支付途径:无跳转的快捷支付接口和带跳转的网银接口.前者在绑卡,支付的时候,不需要跳到银行页面上去处理,后者则需要在银行的网银页面上完成.显然前者对用户来说体验要好多了,用户流程 ...

  7. 互联网账户系统如何设计

    转载自  互联网账户系统如何设计 在很多互联网公司业务发展的早期,业务模式比较单一的情况下,涉及用户账户资金交易相关的逻辑也比较简单,但是随着公司业务模式的不断创新及类型的多元化发展,会渐渐发现现有系 ...

  8. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  9. 插件式架构设计实践:插件式系统架构设计简介

    本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework(MEF),以插件式架构设计为导线,分享本人在从事基于微软S ...

  10. 架构师2月刊发布:解读Android、高效运维、API设计方法论

    卷首语(InfoQ总编辑 崔康) \\ 又到年根,作为一位技术媒体人开始频繁拜访各家公司,总结过去,面向未来,在这里把发现的一些新趋势和自己的感受梳理一下,就不透露公司名称了,供大家参考. \\ 公有 ...

最新文章

  1. 【华为云技术分享】云图说丨初识标签管理服务:给你的云资源贴个条
  2. java操作Excel实现读写
  3. spark union 会引起shuffle吗_脑鸣不是耳鸣 会引起听力下降吗?
  4. 14.使用 CSS 显示 XML
  5. Java集合Collection之实现原理解读(Map)
  6. 用IDEA进行git版本控制
  7. CSS实现div垂直居中 div上下居中显示
  8. 如何查看计算机硬盘规格大小,台式机硬盘如何查看大小
  9. 搜狐畅游CEO王滔辞职
  10. 使用Outlook发送邮件自定义发件人
  11. iso14443_TypeB TR0/TR1/TR2 时序观测
  12. EditPlus 说明
  13. 小程序集-朋友圈集赞神器
  14. NSGA 和 NSGA-II 学习笔记
  15. java lcm_Orac and LCM
  16. “Mac OS X“录屏幕视频并转成gif
  17. java 枚举 总结,java枚举总结
  18. 离“失业”还有多远?机器人流程自动化是怎样改变人类生活的?
  19. 【阿里云】第一次进行域名注册、备案以及使用全过程
  20. (转载)图灵测试,测的到底是什么?

热门文章

  1. linux tac命令_Linux tac命令入门
  2. Linux Vmware CentOS 制作yum本地资源库和局域网资源库
  3. java apm_APM 追踪 Java 应用性能
  4. matlab ga函数详解,matlab遗传算法ga函数
  5. 软件中GA、Release、RC、Beta、Alpha 各版本号的意义
  6. 机器学习中的数学——距离定义(二十四):F-散度(F-Divergence)
  7. 【Pycharm教程】Pycharm下载安装、配置与测试
  8. html在搜索按钮中加放大镜,点击放大镜搜索图标
  9. 摸爬滚打DirectX11_day02——VS2010+DirectX11的环境配置
  10. 远程连接oracle6,win7 64位远程连接oracle11g64位