支付系统:整体架构

产品架构图

2.png

产品层

通过核心层提供的服务组合起来,对最终用户、商户、运营系统提供服务的系统。

支付系统的支撑系统、核心系统每家公司的架构都大同小异,而且都是必不可少的模块。而每家公司的支付业务、运营策略各自不同,所以,上面的应用层各自不同。通常我们可以按照使用对象划分为:针对最终用户应用、针对商户应用、针对运营人员应用、针对分控人员应用...

支付流程图

product-workflow.jpg

资金流处理

EE65D732-B8D5-48ee-9741-17E0FDFD40EF.png

核心层

支付系统的核心模块,内部又分为两个部分: 支付核心模块以及支付服务模块

支付应用

支付核心层通过支付应用对上册提供服务,用户从这里启动支付流程。

支付网关

在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是对外提供服务的接口,所有需要渠道支持的资金操作都需要通过网关分发到对应的渠道模块上。一旦定型,后续就很少,也很难调整。而支付渠道模块是接收网关的请求,调用渠道接口执行真正的资金操作。每个渠道的接口,传输方式都不尽相同,所以在这里,支付网关相对于支付渠道模块的作用,类似设计模式中的wrapper,封装各个渠道的差异,对网关呈现统一的接口。而网关的功能是为业务提供通用接口,一些和渠道交互的公共操作,也会放置到网关中

支付网关工作流程:

  • 商户侧应用发起支付请求。注意,这个请求一般是从服务器端发起的。比如用户在手机端提交“立即支付”按钮后,商户的服务器端会先生成订单,然后请求支付网关执行支付
  • 支付请求被发送到支付(API)网关上。网关对这个请求进行一些通用的处理,比如QPS控制、验签等,然后根据支付请求的场景(网银、快捷、外卡等),调用对应的支付产品
  • 支付产品对用户请求进行预处理,包括执行参数校验、根据支付路由寻找合适的支付通道、评估交易风险、生成订单、调用通道落地执行支付、响应通道的结果并将交易结果通知到商户侧
  • 支付产品调用支付通道执行支付。这个请求并不是直接落地到通道上,而是通过支付通道前置来封装,由支付通道前置来完成和通道的交付。 支付产品是按照可以提供的支付服务来设计的
  • 支付通道前置,(以下在不引起混淆的情况下,都简称支付通道)负责和支付通道之间的通讯,调用支付通道接口完成最终的支付操作数

设计原则
如上所述,支付网关、支付产品和支付渠道的职责分工为:

  • 按照支付能力来划分支付产品。
  • 同一支付能力的公共支付流程,在支付产品中实现。 支付产品提供的是和渠道无关的、和支付能力流程相关的功能。
  • 在各支付产品中,其和支付能力无关的公共功能,在支付网关上实现。

按照这个分工,在支付网关上实现的主要功能:

  • API路由。在聚合支付场景下,当有多个支付产品可以提供支持时,使用支付网关可以让接入方对接时无需考虑支付产品的部署问题。
  • 接口安全: 熔断、限流与隔离。 这对支付服务来说尤为重要。 这是微服务架构的基本功能,本文不做描述。

如下功能,是在支付产品中提供:

  • 风控拦截: 风控是和支付产品有关,不同产品的风控措施、处理对策也是不同的,所以风控是在产品层实现。
  • 支付路由: 路由也是和产品有关。不同产品路由策略也不同。
  • 参数校验: 这也是和支付产品相关的,不同的产品接口其参数也不同。
  • 支付流程: 生成交易记录、落地渠道执行支付、同步和异步通知等操作。

如下功能,可以在产品层或者网关层实现:

  • 身份验证: 确认付款方、收款方、渠道是否有执行当前操作的权限。 在那一层实现取决于这些信息是否有提炼为公共行为。
  • 验签: 对接口参数进行签名并验证其签名。这是为了避免接口被盗刷和篡改的必要手段。如果对各个接口采用统一的签名规则,则可以在网关层实现。

支付产品

在不同的公司由于接入渠道和应用的差异,对支付产品分类略有不同。支付产品是由支付系统对支付渠道进行封装而对业务方提供的支付能力。

  • 快捷支付
    用户在完成绑卡之后,在支付的时候,不需要再输入卡或者身份信息,仅需要输入支付密码就可以完成支付。对于小额度的支付,甚至可以开通小额免密,直接完成支付。 这种支付方式不会打断用户的体验,是目前主要的在线支付方式。一般快捷支付产品是通过封装银行或者第三方支付平台提供的快捷支付接口或者代付接口来实现的。

  • 网银支付
    用户在支付的时候,需要跳转到银行网银页面来完成支付。在网银页面,需要输入用户的卡号和身份信息。这种支付方式会中断用户当前的体验,一般仅用于 PC Web 上的支付。 网银支付是封装银行提供的网银支付来实现。

  • 账户支付
    也称为余额支付、零钱支付等。 指为用户建立本地账户, 支持充值,之后可以使用这个账户来完成支付。

支付路由

用户在前端选择一种支付方式,比如使用招行借记卡来支付后,系统不一定就是调用招行的接口来执行支付。支付宝、百付宝等第三方支付平台以及银联等,都支持招行借记卡支付。 这种将支付方式落地到具体的支付接口的模块,就是支付路由。

支付路由在支付系统中的核心作用,除了本职工作路由外,还承担如下职责:

  • 省钱,省钱,省钱,这是支付路由选择支付通道的最主要的规则。 哪个通道省钱,基本会优先考虑这个通道。
  • 提升支付产品的QOS。这体现在系统的可靠性、稳定性、性能和可用性上。通过屏蔽掉无法连接、不稳定、性能低的通道来提升这些指标。
  • 支持营销。通过优先选择有优惠活动的通道,可以帮助业务提升付费客户量。
  • 降低运营成本。一个设计良好的支付路由,可以大大降低运营投入。

架构图

route-arch.jpg

支付渠道

包括银行渠道和第三方支付(微信、支付宝、通联、易宝)渠道

用户管理

包括对用户、商户的实名身份、基本信息、协议的管理

资金管理

管理公司在各个支付渠道的头寸,在余额不足时进行打款。 对第三方支付公司,还需要对备付金进行管理

清算分润

对于有分润需求的业务,还需要提供清分清算、对账处理和计费分润功能

会计财务

提供会计科目、内部账务、试算平衡、日切、流水登记、核算和归档的功能

核算

账户账务

管理账户信息以及交易流水、记账凭证等。这里的账务一般指对接线上系统的账务,采用单边账的记账方式。 内部账记录在会计核算系统中

风控

风控包括,账户风险、交易风险、资金风险、套现风险、操作风险、合规风险、洗钱风险,每一块都是一个课题。

基础层

用来支持核心系统的基础软件包和基础设施, 包括运维监控系统、日志分析系统等

  • 运维监控
    支付系统运行的基础设施受到外界的干扰(压力、bug、掉电、黑客攻击...)造成系统不稳定,需要能够被及时响应,这就需要一个运维监控系统来协助完成。

  • 日志分析
    日志是支付系统统计分析、运维监控的重要依据。需要提供基础设施来支持日志统一收集和分析

  • 短信平台
    短信在支付系统中有重要作用: 身份验证、安全登录、找回密码、以及报警监控,都需要短信的支持

  • 实时计算

  • 全文检索

  • 数据存储

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • 互联网支付系统整体架构详解 在互联网产品运营中,有很多小伙伴或许会遇到这样的困扰:产品好不容易推出来了,流量成本节...
    尹兴飞阅读 2,300评论 1 39
  • 在互联网产品运营中,有很多小伙伴或许会遇到这样的困扰:产品好不容易推出来了,流量成本节节攀升,用户的活跃度、留存度...
    codingKeeper阅读 1,987评论 0 75
  • 支付产品模块是按照支付场景来为业务方提供支付服务。这个模块一般位于支付网关之后,支付渠道之前。 它根据支付能力将不...
    Java架构阅读 9,310评论 6 412
  • 支付产品模块是按照支付场景来为业务方提供支付服务。这个模块一般位于支付网关之后,支付渠道之前。 它根据支付能力将不...
    l鹿狸i阅读 14,234评论 6 693
  • 世界很热闹,而我却丝毫感觉不到乐趣。如此强烈的孤独感,如此的缺乏安全感。我似乎能预见我离疯子也不远了。没有人可以理...
    JJJam阅读 285评论 1 0