`
herman_liu76
  • 浏览: 99555 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

某个第三方支付平台数据库的分析、学习与总结

 
阅读更多
   之前一直从事一般的WEB系统的开发,做过很多的项目了,现在主要做的一项工作就是与客户沟通需求后,设计出数据模型出来,并设计出主要的功能页面。
   从来没做过金融方面的业务,于是从百度文库中找来一个第三方支付平台的数据库结构,进行分析,用通俗的语言总结出来,以掌握金融系统的业务设计。

   百度文库的地址是:http://wenku.baidu.com/view/48f79722964bcf84b9d57bf1

   一、基础平台核心库
   1.账户:首先无论个人、企业在你平台上都有一个账户表,必须的。记录账记的基本信息,想想你的银行活期存折上的信息吧。当然5个金额要注意到,总的,可提现的,冻结的....但是有几个字段我不懂,计算积数,上期总金额等等。是的,我从来没注意过银行的活期是怎么计息的,利率在变,金额在变,怎么计?查了一下
   银行按季结息,每季度末月的20日为结息日。
   每次变动以头计算*持续天数=计算积数,当然从上期总金额开始算。
   当季利息就是积数*计息日的日利率(年利/360,不是365是因为银行规定)
   表上还有一个安全控制值,是MD5+BASE64,这个就是散列值,防止重要数据发生变化,摘要信息嘛。BASE64就是字符都变成基本的,这都可以理解。
   这个,这张表就理解清楚了!!!

   2.冻结、注销流水表:没啥好讲的,就是对某个账户的这种操作的日志一样的信息。

   3.账户资金变动流水与冻结流水表:类似于每一次存钱,取钱的记录一样,当然实现上变动类型比较多。记录下每笔变动前后的总金额之类的。特别要注意有一个关联流水ID。比如我们充值,总金额发生了变化,但到底是怎么充的,哪个银行卡充的,成功没有,等等详细的信息这个表里都没有,却是记录在后面的充值交易流水表中。
     似乎这样会有很多冗余,但这么设计是正确的,记录的角度不同,具体的每一笔变动的情况当然非常重要,但账户角度关注总金额变化。

   4.交易流水相关表:这里的9张表就是9种交易的详细信息,每一笔交易都会在相关的表中记录下来。里面的详细情况如果有需要分析的后面再补了。

   5.会计账务:说到会计,可能我们做软件的就不太清楚了,感觉有点专业。我也没学过,但我们分析下这几张表,同样也可以掌握基本的业务。
    先说说后面两张表:科目明细与凭证明细,这个名字就知道是具体的一项业务的信息了。
(后面有备注:每种具体的业务,只操作凭证表,并设置业务关联。然后自动登记2个科目,2个金额到科目明细表。日终,汇总科目明细表到到科目日记账表。)
    说的比较明确了,业务中只操作凭证,凭证会关联交易流水的ID的。比如一笔资金的变化,对于交易双方一增一减,必然产业两个科目的变化记录,记录在科目明细表中。
    另外的科目类型、凭证类型、科目凭证对应关系都可以认为是维护的字典项目。科目从名称上理解就是一种分类方式。凭证理解为凭据、证件之类的单据吧。正好我手头上有前几天取钱的单据:中国邮储银行的通用凭证,一般是打印出来给客户签字的,可能有几联,大家都留一份,为啥要有纸质的东西?因为要有人工签名的纸头证据啊,全都电子化还不现实。
    至于科目日记账:就是每天的产生的科目的统计啊,为什么每天?这个是要求吧。
    至于试算平衡表:就是账户变化与科目两个不同维度变动的对比,两个角度的数据应该是一致的,应该是同一个事务产生的不同的记录方式数据的平衡。有对比才能及时发现问题,所以也应该是标准的做法。金融平台容不得半点马虎。

    6.系统参数:这里就是记录各流水表的流水号的,当天不断累加的纯数字。因为当天从头开始,不能用Oracle的seq,不多讲了。

    7.渠道:这个渠道从名称上来说就是一个个交易的通道,具体指啥呢,要搞搞清楚?我发现后面3.11有渠道类型与渠道管理,比如有 网银、同城、银企等5个类型。更重要的表是:渠道管理表,里面重要的字段是“支付渠道为本平台分配的商户号”,还有URL,IP,队列,类名等信息。
    后面还有一个渠道账户对应表,渠道与交易类型共同PK,而且还有一个帐号,那么渠道就是本平台在其它银行之类的平台上的商户号,我平台是人家某银行的一个商户。而且还可以开几个帐号。类似于我个人是某银行一个客户,我名下有几个银行账号,有借记卡,有信用卡等,以前还可以开几个信用卡。而对平台来说,开的帐号与交易类型是相关的。
    继续在网上【知乎】查了些资料:
“银行接口指的是银行等提供的技术接口。
银行通道是对银行接口的封装,并包含了诸如具体合作银行及通道的详细信息。例如同为某家商业银行的某个支付接口,非总对总的情况,支付公司可能同时在北京分行、上海分行接入。
支付渠道是对银行通道的业务封装,包含了诸如通道成本、最低商户费率等信息。
支付产品是第三方支付对外提供的产品,例如快捷支付。
支付渠道路由的设计,一般采用规则引擎或类似方案(例如基于groovy),如果单纯只是满足企业当前的业务需要,用最丑陋的If-Else方式也能搞定。”
    再找到一些资料:
    备付金又称为沉淀资金或准备金,第三方支付备付金是指存在第三方支付平台,为即将产生的支付交易,在银行储备的准备金。买家付款到确认收货、卖家收款总隔着几个交易日,那些“沉淀”在第三方支付机构账户上的资金就是“备付金”。后来又查到备付金只能有一个监管银行,多个合作银行,貌似政策还在微调,因为为了备付金的安全。备付金分存管(跨行)、收付(同行内收付)、汇缴(汇总一下,每日清0,转到收付账户)账户,银行渠道路由系统是所有第三方支付核心的系统之一。
   (这里有https://www.zhihu.com/question/34352468,灰色细胞的解释清楚)
    比如小明在网上看中了一款产品,使用了支付宝进行付款,在使用支付宝付款的时候,选择的是小明的招商银行卡,付款成功后,小明的招行账户会扣除资金,同时支付宝会将支付成功的信息告诉卖家,卖家发货。在第二天,招商银行会将小明被扣除的资金结算给支付宝,这个时候这笔钱是由银行结算给支付宝在招商银行开设的对公账户。而小明由于还没有确认收货,或者可能一周之后才会确认收货,那么在这段时间,这笔钱会一直停留在支付宝的对公账户中。(后面本人发挥:)等确认收货了,收货的方如果只到其支付宝账号,那只要记账就行了,都是在备付金中,但如果收货方要现金,就从最做优的路由方案结果中,转给对方银行账号上,一般是与对方相同的同行内的收付账号转收货方账号,支付宝此行的收付账号有头寸的话。)

    好了,到这里渠道概念差不多了。有些交易的过程也非常清楚了。另外一些概念,如清分clearing,清算settlement,结算Settlement of Accounts轧差neting,头寸position也简单知道一下,英文也许更好理解。
    上面写那很多,下面真正来分析表的设计:
    252,253的渠道参数、返回码就是一些配置项,不多说了。251是清算指令,就是发起一个渠道的清算任务,就是一个渠道的某业务的支付场次基本情况记录,一个命令的执行情况,不涉及金额。254是渠道交易流水,既然是流水,就是具体的一个个渠道的交易信息了,一般是与支付交易流水密切相关的,只要不是平台内部的交易,就要和渠道打交道,反正信息是非常全,字段也非常的多。255是批量交易的渠道的批次表,批量交易时是很多笔的情况。里面有个settleDate居然叫轧差日期,我反正很注重命名问题,名字准确可减少了大脑中的运算,可以更好的考虑更复杂的事情。257,258渠道对账表与不平明细表,是指渠道双方对账,借贷是不是正确,从字段看不出是不是天天对账的,不过是通过文件来对账的。明细就是发现不平,要记录是哪一个交易,如果是批量的,记录下批次,可能要人工处理。我在实际中知道有人报名马拉松,出现支付成功,却网站说不成功,是系统没做好,这个可以看成是事务,不过要人工回滚或者人工补正确。
    2.5.(12.13.14)分别是同城对账指令、对账表与对账明细。指令中PK是流水,那就是每一次对账都是有一个指令的。对账表与明细中都有笔数与金额数,差别从PK中可以看出。对账表对应每一个对账报文,一天内可以多个报文。明细中多了业务编号,就是按业务产生成明细,并不是细到每一个业务。15/16的下载回应与回应明细,貌似是给企业查看一天内的情况的,总的和明细的情况。应该不复杂,没有数据与页面说明也就不细究了。

   (写到这里,家里网络崩溃,已经在写基金了,ITEYE页面刷新了,居然不是后台提交,也没恢复自动保存的内容,晕死....另外保存后会回到查看页面,一般应该是继续编辑吧,或者用不同的按钮...)


   二、系统管理数据库
   这里的系统维护、权限等与其它平台的设计差别不大,就不多研究了。
   重点是账户:
   结算账户余额表,就是我平台的结算账户在各个合作银行的账户上的钱数情况。
   子账户类型,前面有提到平台客户可以有多个子账户,有类型就有可能互转,另外子账户会与客户的银行卡绑定,那么客户银行卡的信息有一个表,绑定有一个表;绑定变化也有一个流水表。客户的银行账号也要进行验证,验证就有一个记录,还可能一天多次验证,都记录在一个表中。
   3.4.8是代付绑定收款账户,某个平台的客户根据与平台的协议,由平台代付水电煤,付到公用事业公司的相关银行账户上去。就要有一个记录。当然具体的一笔业务是另外记录的。
   客户信息:这个就是平台上的客户的情况,当然客户有个人,还有企业。文章中说是不是考虑两个分开的表,因为字段差别比较大,也是有可能的。
   商户信息也是要记录的。
   其它的客户级别,开通的业务,相关的协议等、手续费、限额啥的就不说了,比较简单。
   看一下3.11.7(记录快付通结算户之间的资金调拨指令)与3.12.3/4这三个表,结算户就是前面提到的平台在各合作银行开的收付账号,监管户就是备付金分存管账号。头寸不足时就要调拨。
 
   三、基金相关数据库
   先看一个概念:赎回是从理财产品或者基金转入你的帐户余额 提现是从帐户余额转到你的银行卡。
   开户信息:在基金业务平台开立的只能是基金子账户。
   业务表:申购、撤销与赎回是三个核心的业务,所以有三个相关交易的表,都与基金定单有关,说明是真正的基金购买行为了。
   还有一个充提交易表,是有关子账户与银行账户之间的关系,应该只是指基金业务子账户吧。这个与基金本身操作关系不大。
   基金交易一般有个T+*的问题,当日15点交易所下班的问题。
  【基金赎回资金过户是T+2,也就是说,今天(T日)你申请赎回,今天收市后(就是今天晚上)基金管理公司把所有的赎回申请进行统计计算,再经过托管人的复核之后,上报至[中登公司];在明天白天(T+1日),中登公司那帮犊子们上班之后,就会把头一天(T日)接收到的申购赎回申请统计,然后进行资金过帐,说白了就钱该给谁就给谁,基金份额该给谁给谁;然后等后天(T+2日),如果你是赎回,那这天钱都到你帐户了;如果你是申购,那基金份额就到你帐户了。】
   其实基金这边也比较简单的,客户有一个基金子账户。基金管理公司能支取的是自有资金,不能支取客户受托的资金用于其他用途。客户受托的资金存放于专户,只能用于股票、债券买卖。这个与第三方支付公司的备付金一样被严格监管的。
   另外指指令表,显示是与监管银行之间的交易指令、包括成功笔数,成功金额等信息,莫非基金的申购就是直接由平台打到监管银行中的基金公司的专用托管账户上?这个也不难,有人告诉一下就知道了。刚才顺便查了一下:监管、托管、存管银行的关系。有一个说监管是监督机构,存管保证的客户的信息与监管的账户之前的资金流动,而不会被基金公司挪用。

    四、总结:
    从网上的一个数据库设计,基本上可以学习到上面相当多的金融相关业务及其关系,配合网上的其它一些文章,差不多理解了支付业务。不过一些文章看的出政策变化是很多的,必然影响业务系统。
   
    因为以前从没了解过相关的系统,所以分析难免有出错与不足的地方,欢迎指正!!
分享到:
评论

相关推荐

    最新.net第四方API程序 SQL Server 2008 编辑所有行

    标题中的“最新.net第四方API程序 SQL Server 2008 编辑所有行”意味着这个压缩包可能包含一个.NET框架的第三方库或者工具,它专门用于与SQL Server 2008数据库进行交互,特别是涉及到编辑数据行的操作。这里有几个...

    ssh框架第三方银联支付。

    在描述中提到的"第三方银联支付"是指在Web应用中集成银联提供的支付接口,实现在线支付功能。 首先,让我们深入了解一下SSH框架的每个部分: 1. **Struts2**:这是一个基于MVC设计模式的Web应用框架,主要负责视图...

    基于ASP的圣科API支付第三方支付程序.zip

    圣科API支付系统是一种第三方支付平台,旨在为商家提供安全、便捷的在线支付解决方案。通过圣科API,开发者可以将其集成到自己的网站或应用程序中,实现快速的支付功能,包括但不限于信用卡支付、支付宝、微信支付等...

    花旗务限制版 支付平台

    这可能包括多币种支持、多种支付方式集成(如信用卡、借记卡、第三方支付等)、复杂的结算规则、以及详尽的报表和统计分析功能。 然而,由于提供的信息有限,我们无法深入了解这个特定的支付平台的全部特性。但我们...

    Java基于javaweb的二手交易平台管理系统(源码+数据库脚本).zip

    它与第三方支付平台集成,允许用户使用各种支付方式来完成交易。 5. 搜索与筛选:该模块用于帮助用户快速搜索和筛选所需的商品。通过关键字搜索、价格范围过滤等方式,用户可以找到符合自己需求的商品。 6. 评价与...

    半自动支付系统

    标签“通讯类”表明此系统着重于数据通信的实现,包括客户端与服务器之间的交互,以及服务器与其他服务(如第三方支付平台)的通信。通信的效率和安全性是这类系统的重要考量因素,通常会采用JSON或XML格式封装数据...

    Java毕业设计-基于javaweb的二手交易平台管理系统(源码+数据库脚本).zip文件

    它与第三方支付平台集成,允许用户使用各种支付方式来完成交易。 5. 搜索与筛选:该模块用于帮助用户快速搜索和筛选所需的商品。通过关键字搜索、价格范围过滤等方式,用户可以找到符合自己需求的商品。 6. 评价与...

    站长亲测版精品聚合支付款极致经营无BUG三方代付平台网站源码带有演示及安装说明.txt

    该技术通常支持包括但不限于信用卡、借记卡、第三方支付(如支付宝、微信支付等)等多种支付渠道。聚合支付系统通过统一接口对接各个支付渠道,从而减少了商户与多个支付服务提供商单独对接的复杂性。 ### 知识点二...

    基于PHP的WordPress免签约支付宝充值积分插件 php版.zip

    5. **免签约支付**:免签约支付是指用户在使用第三方支付平台时,无需与商家直接签订协议,只需拥有支付平台账户即可完成交易。这种方式简化了商家的签约流程,降低了门槛,同时也方便了消费者。 6. **积分系统**:...

    2021030906_网上在线学习平台设计和实现.rar

    9. **支付接口集成**:如果平台涉及付费课程,需要集成第三方支付接口,如支付宝、微信支付等。 10. **服务器性能优化**:包括数据库索引优化、缓存策略、负载均衡等,以保证在高并发访问下平台的稳定运行。 以上...

    基于ssm无中介租房系统微信小程序源码数据库文档.zip

    标题中的“基于ssm无中介...总结起来,这个项目涵盖了Java Web开发技术,微信小程序开发,数据库设计与管理,以及可能的第三方服务集成等多个方面,是一个综合性的IT实践项目,对于学习和提升相关技能具有很高的价值。

    影院网上订票系统数据库设计 sql

    - 使用数据库管理系统(如MySQL)提供的备份工具或第三方工具进行备份和恢复操作。 在实际开发过程中,还需要考虑性能优化,例如建立索引以加快查询速度,合理设计表之间的关系以减少冗余数据,同时需要关注数据库...

    基于springboot+Web的农产品直卖平台源码数据库.zip

    SpringBoot是Spring框架的一个简化版,它集成了大量常用的第三方库配置,如JPA、Thymeleaf、Freemarker、Jetty、Tomcat等,使得开发者可以快速构建应用,无需繁琐的配置。在本项目中,SpringBoot用于初始化和管理...

    基于PHP的最新4合1小说系统源码 (音乐、漫画、视频自动采集).zip

    可能通过API接口与第三方音乐服务进行数据交换,或者直接集成一个音乐库。此外,可能涉及到音频文件的处理和播放器的实现。 5. **漫画模块**:漫画功能可能包括了漫画的分类、分卷、章节浏览,以及图片加载和滑动...

    PHP实例开发源码—PDD出码通道在线支付PHP系统源码(带PC端监控).zip

    2. **支付接口**:通过与第三方支付平台如支付宝、微信支付等的API集成,实现用户支付的处理。 3. **订单管理**:存储和管理订单状态,包括创建、支付、发货、退款等生命周期过程。 4. **安全机制**:确保支付过程中...

    ssm+mysql的网上商城系统(附数据库脚本和说明)

    可能使用第三方支付平台如支付宝或微信支付,涉及支付API的调用和订单状态的同步。 8. **商品评价**:用户可以对购买的商品进行评价,这部分涉及到用户反馈的收集和展示,可能包括评分、评论内容等。 9. **后台...

    基于jsp的网上商城网站源码数据库.zip

    7. **支付集成**:对于网上商城,可能还集成了第三方支付接口,如支付宝或微信支付,涉及到API调用和回调处理。 8. **响应式设计**:为了适应不同设备的屏幕尺寸,项目可能采用了响应式布局,确保在手机、平板电脑...

    基于ssm+vue的新能源汽车在线租赁管理系统源码数据库.zip

    - 支付接口:可能集成第三方支付平台,如支付宝、微信支付,处理租赁费用的支付。 - 权限控制:角色权限分配,确保不同用户看到和操作的功能不同。 - 异常处理和日志记录:捕获并记录系统运行中的异常,便于后期问题...

    ASP源码—无忧购物系统 ASP通用版.zip

    5. **支付接口**:如果系统支持在线支付,源码中会有与第三方支付平台(如支付宝、微信支付)的接口集成代码。 6. **用户认证**:登录、注册等功能会涉及到用户身份验证和会话管理,这部分代码是系统安全的关键。 ...

    otc承兑平台系统源码.rar

    5. **配置文件**:设置服务器环境、数据库连接信息、第三方服务API密钥等。 6. **测试脚本**:单元测试和集成测试代码,用于验证各个模块的功能正确性。 7. **文档**:可能包括设计文档、使用说明、开发者指南等,...

Global site tag (gtag.js) - Google Analytics