今天串讲支付系统的7大核心子域/模块,包括收单结算,资金产品,收银支付,渠道网关,会员平台,商户平台,账务中心等。 一个完整的支付系统包含了很多模块或子域,在跳过几家公司后,发现各家支付公司的系统,从逻辑划分上基本大同小异,有些名字不一样,但本质是一样的,因为大家基本都脱胎于银行,而银行就那么几家供应商。 下面部分是支付系统最核心的服务,用于支撑对外的产品能力。 1.2. 极简系统架构图 说明: 这个图很精简,但是已经能够说清楚支付系统最核心的模块划分。 一些复杂的支付系统可能还有外汇、额度中心、产品中心、卡中心等,甚至一个子系统可能被拆分为多个应用独立部署,比如收单结算就可以拆成收单和结算两个独立的应用。 1.3. 同时还提供核身服务(比如登录密码,支付密码,短信验证码等)、实名认证服务等。 7. 商户平台 管理商户的入驻、登录、交易管理等。 商户平台负责管理商户的生命周期,包括入驻签约、KYB、交易管理等。
2.2.4支付应答将支付报文提交给渠道以后,就等着渠道返回支付结果了接收到支付结果以后,更新支付单相关状态,并通知交易系统、业务请求系统、账务系统等内部系统进行支付成功后的业务处理至此,一笔支付的处理就结束了以上的主流程 ,路由系统针对每项规则去过滤已经维护的全部通道,直到挑选出最合适的那个7.3路由原理模型调用系统比如支付网关、业务系统、支付系统等,传入交易特征,路由系统先根据规则树快速定位到可用通道,然后再通过一组筛选规则注意筛选 谁最优先常见的筛选规则有以下这些通道状态这是通道的固有属性,配置在通道信息中,一般是开通、关闭两个值,每次交易要过滤掉处于“关闭”状态的通道营业时间不管怎样,你得等别人开始营业才能去办理业务,也就是通道的营业时间维护,7* ,有些企业将支付系统也划归到支付网关内部,这样支付网关的职能边界被加大,承载着支付业务系统的职能,需要与内部风控,路由,交易等系统交互,这样做没什么不好,只不过显得笨重而已,这里我们将支付网关和支付系统单独研究 (目前国内银联卡,因银行众多,特别是村镇银行的存在,BIN长度以6位占绝大部分,另外还存在7、8、9、10等位数卡BIN)。如果要更严谨,还可以匹配银行卡长度对应得上不。
:第一阶段:支付作为一个(封闭)的、独立的应用系统,为各系统提供支付功能支持。 说明 对账,我们一般称为勾兑,支付系统的对账,包含着两个层面: 支付系统内部间的对账,支付系统一般是分布式的,整个支付系统被拆分成了多个子系统,如交易系统、账户系统、会计系统、账户系统, 支付系统与渠道间的对账 系统间的对账比较好理解,这里主要讲支付系统与渠道间的对账。 可能原因如下:1、银行日切晚与支付系统核心账务系统;2、支付系统账务核心系统与其他系统间的掉单。 每个操作实现,都包括参数校验,支付路由,生成订单,风险评估,调用渠道服务,更新订单和发送消息这7步,对于一些比较复杂的渠道服务,还会涉及到异步同通知处理的步骤。
账户体系是支付系统的基础,它的设计直接影响整个系统的特性。这里探讨如何针对电子商务系统的支付账户体系设计。我们从一些基本概念开始入手,了解怎么建模。 这是两个不同业务领域的概念:支付账户指用户在支付系统中用于交易的资金所有者权益的凭证;登录账号 指用户在系统中的登录的凭证和个人信息。 和第三方支付或者金融机构的交易不同,电商系统中,交易还会涉及到渠道。 由于电商系统本身并无清结算的资质,所有资金从交易主体到交易对手的账户的流动,在大部分情况下,并没有经过电商系统,而是由电商系统调用支付渠道提供的接口,由它来完成真正的支付过程。 内部账户和外部账户 当用户使用银行卡来支付时,电商支付系统需要和银行对接,从用户银行卡所代表的账户上扣除资金。
账户体系是支付系统的基础,它的设计直接影响整个系统的特性。这里探讨如何针对电子商务系统的支付账户体系设计。我们从一些基本概念开始入手,了解怎么建模。 这是两个不同业务领域的概念:支付账户指用户在支付系统中用于交易的资金所有者权益的凭证;登录账号 指用户在系统中的登录的凭证和个人信息。 和第三方支付或者金融机构的交易不同,电商系统中,交易还会涉及到渠道。 由于电商系统本身并无清结算的资质,所有资金从交易主体到交易对手的账户的流动,在大部分情况下,并没有经过电商系统,而是由电商系统调用支付渠道提供的接口,由它来完成真正的支付过程。 内部账户和外部账户 当用户使用银行卡来支付时,电商支付系统需要和银行对接,从用户银行卡所代表的账户上扣除资金。
整体上来说,我们可以把一个公司的支付系统发展分为三个阶段: 1、支付系统:支付作为一个(封闭)的、独立的应用系统,为各系统提供支付功能支持。 一般来说,这个系统仅限于为公司内部的业务提供支付支持,并且和业务紧密耦合。 2、支付服务:支付作为一个开发的系统,为公司内外部系统、各种业务提供支付服务。 用户在这个系统中完成交易。 支付系统,可以是电商系统的一个模块,或者是个独立的系统。这是本文的主角,用来完成支付过程。 用户,在电商系统中败家的那位。 这就有三种情况: 电商系统和商家对账;电商系统和支付系统对账;支付系统和收单机构对账。最为支付系统,我们仅关注后两者的情况。 整体上来说, 从分层的角度,支付系统和普通的业务系统并没有本质的区别,也是应用、服务、接口、引擎、存储等分层。 在应用层,支付系统一般会提供如下子系统: 1、支付应用和产品.
支付的过程一定要做到高效且安全,C端客户在支付的过程中按照一般人的习惯不会等待超过7秒,7秒之内一定要支付完成,否则会给客户造成很不好的体验。 4 理想的支付系统架构 微服务的核心思想是把复杂的系统拆分为多个简单的子系统。明确了支付业务模型之后,需要把确定的支付产品转化为系统,以支撑我们的业务需求。 支付体系架构经过多次演进,根据业务架构我们需要把系统拆解一下,每个小系统只负责一个业务模块。按照微服务的思想把支付系统拆分为多个小模块,如图7所示。 图7 每个模块都可以单独作为一个微服务的小系统,每个小系统负责不同的业务,某一个模块出现问题不会影响其他的业务模块。 支付的各个系统拆分之后,每个系统负责不同的职责,系统划分之后,就可以进行技术选型了。 本文节选自《支付架构实战》一书,欢迎阅读本书继续了解技术选型等支付架构设计的内容。
支付的过程一定要做到高效且安全,C端客户在支付的过程中按照一般人的习惯不会等待超过7秒,7秒之内一定要支付完成,否则会给客户造成很不好的体验。 4 理想的支付系统架构 微服务的核心思想是把复杂的系统拆分为多个简单的子系统。明确了支付业务模型之后,需要把确定的支付产品转化为系统,以支撑我们的业务需求。 支付体系架构经过多次演进,根据业务架构我们需要把系统拆解一下,每个小系统只负责一个业务模块。按照微服务的思想把支付系统拆分为多个小模块,如图7所示。 图7 每个模块都可以单独作为一个微服务的小系统,每个小系统负责不同的业务,某一个模块出现问题不会影响其他的业务模块。 支付核心发送支付成功消息,清结算系统监听支付成功消息并把支付成功的记录落入数据库,等待发起结算。账务系统接收支付成功消息进行记账。
支付的过程一定要做到高效且安全,C端客户在支付的过程中按照一般人的习惯不会等待超过7秒,7秒之内一定要支付完成,否则会给客户造成很不好的体验。 4 理想的支付系统架构 微服务的核心思想是把复杂的系统拆分为多个简单的子系统。明确了支付业务模型之后,需要把确定的支付产品转化为系统,以支撑我们的业务需求。 支付体系架构经过多次演进,根据业务架构我们需要把系统拆解一下,每个小系统只负责一个业务模块。按照微服务的思想把支付系统拆分为多个小模块,如图7所示。 图7 每个模块都可以单独作为一个微服务的小系统,每个小系统负责不同的业务,某一个模块出现问题不会影响其他的业务模块。 支付核心发送支付成功消息,清结算系统监听支付成功消息并把支付成功的记录落入数据库,等待发起结算。账务系统接收支付成功消息进行记账。
wallet-2292428_1280.jpg 在我们支付系统设计中,经常会遇到这样一个问题,防止用户重复支付。 用户明明只想购买一次,却因为系统问题,导致重复支付,带来额外的物流成本和扯皮退货的运营成本,对商家的信誉和系统的体验很不好。 那么实际我们在设计支付系统时,如何来避免这一问题呢。 如何防止重复支付提交 在我们实际支付系统设计中,我们系统设计人员经常无法区分商品订单和支付订单之间的关系,经常混为一谈。 支付系统需要对这个支付订单号做交易的幂等。 1.如果不存在该支付订单号,则记库,并标记状态为支付中,然后调用渠道进行支付落地。 2.收到渠道异步通知或者通过查询得到渠道支付状态时,更新该笔支付订单状态 3.如果客户再次发起支付,不给客户产生新的支付订单号,先用该笔支付订单号调用支付系统,支付系统会判断订单号幂等性,如果已支付,则报错告诉客户已支付成功
在上一篇里我们主要讲了支付系统的账户体系的产品设计,在这一篇里重点介绍技术设计上需要考虑的一些问题。 上一篇里讲到,账户体系对应的是联机记账的过程,在实际过程中会划分为客户用户信息子系统、账户子系统以及记账子系统。 客户信息子系统技术设计 客户和用户涉及的信息 客户是一个社会化的概念,一个自然人或一个法人(任何社团、组织、机构等,具有社会关系比较紧密,并且有相似消费特征的团体)就称之为一个客户。 账户子系统 账户子系统存储要素 该系统是整个账户体系的核心,在按照产品设计进行会计科目划分后,体现为单个账户,这些账户,具体在系统中落地为2类数据库表,一个是账户余额表(又叫账户表),主要用来记录账户基本信息 记账子系统 该系统可以作为一个联机异步或者日终批量系统,可以与账户体系隔离,单独完成会计科目记账和核对。该部分可以采用的技术较多,可以根据各公司具体实际选择。 ----
在银行、支付公司以及电商平台的支付系统中,如果不是只做交易转发,而是真正需要做账务处理清结算,一定会涉及到账户体系的设计,一套好的账户体系应该是与业务无关的。 账户体系在银行叫核心系统,在支付公司或者电商平台都是虚拟账户体系。在这一篇里我们主要讲讲支付系统的账户体系的产品设计,在下一篇里重点介绍技术设计中需要考虑的问题。 所以,我们在支付系统设计中一般是将记账为分2个步骤,支付成功后系统同步记录流水账,异步通知会计系统做复式记账。 传统的第一代支付系统通常是日终批量记账;现在的流行的支付系统设计通常是异步准实时记账,日终根据银行对账文件,对当日记账做批次结转核对并记录。 所以通常来讲,我们的支付过程与会计记账过程会进行分离。 这部分我会另外写文章专门讲解,大家也可以参考支付宝架构中的记账分析过程。 产品架构划分 账户体系对应的是联机记账的过程,在实际过程中会划分为客户用户信息子系统、账户子系统以及记账子系统。
支付对账系统是整个支付清结算体系中具体基础性意义的一个环节,是确保支付平台与各类第三方支付渠道数据一致性的关键系统,是商户资金结算、资金划拨、资金报表等逻辑准确运行的重要前提。 账单下载&处理 对于公司自建支付系统来说,一般会根据业务的复杂程度不同,对接多个支付渠道。 按照上述逻辑,我们需要将账单数据表与支付平台订单表进行full join,但是由于账单表我们是存储在Postgresql上的,而支付系统所采用的数据库可能是Mysql或Oracle,总之,从系统拆分的角度看 其中长款根据对账处理方式的不同可以分为“渠道成功,平台订单不存在”、“渠道成功、平台状态非成功”两种情况,从生产实践上看,因为支付系统中会存在比较多的支付失败订单,而国内支付渠道的账单多数情况下只会提供用户支付成功的账单数据 而如果是因为支付平台状态未处理成功,则是系统掉单问题导致,除了正常消除这笔差错、产生对应的对账明细数据外,还需要通知支付系统进行状态更新操作,其涉及的业务逻辑,还需要根据整个支付平台的流程设计,触发商户回调
1、联机交易链路 用户在前端业务系统操作后,订单被发送到交易系统,经过计费和风控检查,再由支付引擎调度,完成内部账务登记和外部渠道支付。 支付完成后,结果通过回调返回,更新账务和订单信息,并将入账流水推送到清结算系统,最终通知商户支付成功。 2、日终结算链路 日终结算链路,由资金系统和账务系统共同组成。 了解这两条链路和八个模块之后,下面我们就把最核心的7个模块来进行逐一介绍(产品中心主要是配置,文本就不做展开了,可以参看《支付产品工厂》) 详情参考《耦合链路,支付架构》 02 四段交互、支付收银 用户对支付最多的感知来源于收银台 1)交易下单 用户选择支付方式后提交,系统需要先向支付系统下单提交商品交易信息,同时系统也会上传回调地址作为支付结果的通知。 2)调用收银台 下单成功后渠道按照支付方式返回对应的收银台参数到支付系统内,支付系统调用收银台引导用户跳转到渠道侧进行支付。我们平时所看到的各种扫码、小程序的聚合支付就是在这里包装的。
说到目的,比如有些平台需要提升自有支付占比,别一直使用微信、支付宝 看看快手的通道费就知道了,为啥所有平台都亟需要自己的支付系统了。 营销定义 在第三方支付企业中,营销经常伴随有营销活动。 请添加图片描述 整个流程如下: 用户发起下单,订单信息落在统一订单落在统一交易系统, 在订单发起支付时, 由支付系统向营销系统发起查询,查询这笔交易能参与的营销活动。 立减 立减是指在交易支付过程中,同步查询营销并抵扣用户应支付金额的一种营销产品。 支付系统与营销系统之间的交互是同步进行的,对营销系统的性能要求很高。 在这里插入图片描述 总结 在第三方支付企业中,由于营销系统是作为支付系统的旁挂系统,所以主要是在交易下单后参与,可支持的营销规则能力并不是特别多。 但随着支付企业中慢慢孵化有各种业务,各业务系统也都会建设自己的产品系统。届时,各业务系统可建立自己的营销系统,借用营销系统目前的原子能力,实现更丰富的营销规则。
# 了解支付宝支付流程 # 准备内网穿透 ## 内网穿透软件,花生壳 pycryptodome 3.9.0 pycryptodomex 3.7.2 python-alipay-sdk 1.10.1 分类管理: 增 删 改 查 商品管理: 增 删 改 查 订单管理:查看,更新, 支付管理:.... ,1已支付,2取消,3退款.. 支付方式, 订单时间, 支付时间, 订单详情模型: id,订单号,产品ID,数量,单价, 4.相关技术 基本环境 pyhton.Django Mysql win10,linux nginx,apache 手机注册验证,短信验证 支付宝支付,支付接口 ....
支付业务的核心流程 1.支付应用根据用户选择的支付工具来调用对应的支付产品来执行支付。 2.支付产品通过支付网关根据支付工具、渠道费率、接口稳定性等因素选择合适的支付渠道来落地支付。 3.支付渠道调用银行、第三方支付等渠道提供的接口来执行支付操作,最终落地资金转移。 支付系统的典型架构 ? 支付核心系统 设计原则 支付网关、支付产品和支付渠道的职责分工为: 1.按照支付能力来划分支付产品。 2.同一支付能力的公共支付流程,在支付产品中实现。 支付渠道 支付渠道模块是调用支付渠道接口执行真正的资金操作。 支付核心系统交易请求数据流 1.支付请求被发送到支付网关。 ---- 本文参考“凤凰牌老熊”、“梁川”、“路杨”、“叉一”等相关支付系统架构设计文章结合自己支付系统设计经验整理。 坚持原创,只说真话,我就是金融民工小曾。
在这一篇文章中,我们将介绍去中心化的支付系统 Stellar,它被设计与实现的目的就是在区块链和传统中心化的金融机构之间构建一个桥梁;其目的并不是创建一套完整的金融模型,而是将区块链技术与现有的金融生态系统相结合 ,在支付和银行系统之间提供协调的功能。 架构 我们可以使用 Stellar 网络构建移动端的手机钱包、在线的银行系统以及支付服务,整个网络其实由两个组件构成,一个是用于与 Stellar 网络交互的 API 服务 Horizon;另一个是网络的骨干 发送者通过查找 Stellar 账户 ID 根据客户的联合地址发送一笔付款; 发送者将付款信息与付款方的账户信息发送给收款方的合规服务; 合规服务联系三个不同的服务: 一个用于判断发送者是否允许的支付客户的制裁回调 总结 Stellar 作为去中心化的支付系统,在设计时考虑了与监管相关的功能和架构,给银行和大型金融机构提供了一些接入 Stellar 网络的理由,没有追求绝对的去中心化以及匿名性,与大多数区块链项目不同
这篇文章的目的是作为一篇支付系统的入门教程,并解释代理银行业务、NOSTROS、实时全额结算(RTGS)系统和延期结算(DNS)系统。它支撑了我的其他的讨论使用分布式分类账构建分布系统的文章。 中央银行支付系统 一家银行将他们全部存入银行。 所以有一个更有效的方法。 如果在白天进行-10/+10的调整, 这就是一个实时的总结算系统;如果支付排队等了一段时间(每小时或者每天), 然后净调整,这就是一个延迟净额结算(DNS)系统。 因此,最先进的国家将拥有一个集中清除的 RTGS或DNS系统,用于清算该国内以本币进行的银行间支付。 对于国际支付(一种货币 - 即不是外汇!),我们依赖代理银行而不是实时支付结算系统,因为两家银行不太可能在同一个实时结算系统上。
内容导读:支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢? 抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。 其实整体可以看成是交易核心+支付核心 两个大系统。 交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下 各个系统的核心组成和交互。 作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ Part one 支付系统总览 核心系统交互 业务图谱 Part two 核心系统解析 交易核心 交易核心把公司的业务系统和底层支付关联起来,让业务系统专注于业务,不比关心底层支付。