一般来说,银行会提供两种支付途径:无跳转的快捷支付接口和带跳转的网银接口。前者在绑卡,支付的时候,不需要跳到银行页面上去处理,后者则需要在银行的网银页面上完成。显然前者对用户来说体验要好多了,用户流程不会被打断。快捷支付要求支付系统在本地保存用户的支付信息,如卡号,登记手机。系统要确保这些信息不被泄漏。风险非常好,所以大部分银行要求接入方必须经过ADSS检验才能够接入快捷支付。

  这种固定方式的接入有单点故障的问题,一旦某个渠道出问题,绑定的支付方式就无法使用。改进策略是为每个支付方式定义多个渠道,第一个渠道出问题即选择第二个,以此类推。

  当然,更进一步,可以为候选渠道定义权重,按照权重来选择支付方式。当渠道出问题,自动调整权重。

  路由实现上还会更复杂,对同一张银行卡,运营上会要求在不同的系统上,比如android,iOS,windows上,或者不同地区,如大陆,台湾,香港,北美等,甚至不同业务上,采用不同渠道来支付。

  支付渠道

  如果采用微服务来实现,整体设计上,可以考虑将支付渠道分离、支付网关前置分离。支付渠道的微服务实现有两种策略,一种是按照服务来拆分,一种是按照渠道来拆分。

  ● 按渠道拆分,指每个渠道单独部署在一个容器中,对支付网关提供相同的服务。

  ● 按服务拆分,是按接口来拆分,分为支付,对账,退款等子系统,每个服务单独部署,所有容器的服务都实现在一起。

  渠道拆分

  按照服务来拆分的一个典型案例是大众点评网的早期实现。 大众点评支付渠道网关系统的实践之路。 每个支付服务接口实现为一个独立的子系统,独立部署,通过支付网关前置来对外提供服务。 这篇文章里面也提到这种方式存在的问题,

  ● 银行的加密客户端会有各种奇葩的需求,有些可以支持linux,有些要windows系统,如何在一个容器中满足所有需求?

  ● 这样拆分后,每个渠道接口独立部署。某个渠道出问题也不会影响其他渠道。至于渠道访问量小导致资源浪费问题,可以通过虚机或者docker的资源调度来解决,谁也不会在物理机上玩微服务。

  ● 对接渠道难点在于对输入输出做加密和解密,以及组装和解析报文。同一个渠道对不同的服务的加密解密方式是一样的,报文格式也是一样的。按渠道来构建服务可以共用这样方法,减少开发投入。

  ● 从安全的角度,按渠道划分也有优势。一般渠道都要求只对接到特定ip的机器,这样每个渠道对接系统所在的机器仅开放对渠道和支付网关前置机的访问白名单即可,尽可能的缩减被暴露的风险。

  接入渠道

  对于支付渠道,首先考虑的是接入哪些渠道。要对接的渠道按优先级有:

  ● 第三方支付,对大部分应用来说,支付宝和微信支付都是必须的,一般来说,这两者可以占到90%以上的交易量。用户不需要绑卡,授权后直接支付就行。各种平台都支持,性能和稳定性都不错。对于一些特殊业务,比如游戏,企业支付,可以查看一些专用的第三方支付平台。

  ● 银联,这货的存在,极大方便了和银行的对接。和第三方支付主要不同在两个地方一是需要绑卡,也就是用户先把卡号,手机,身份证号提供出来。这一步会折损不少用户。绑卡后,以后的支付操作就简单了,用户只需要输入密码就行。手机客户端不需要像第三方支付那样安装SDK,都在服务器端完成。当然,这是针对快捷支付。网银支付还是挺麻烦的。银联接入也需要ADSS认证。

  ● 银行,建议先看这一篇文章,了解下对接银行的难度。那最终需要选择哪些银行?先看个统计数据。 截至 2015 年底,我国银行业金融机构包括 5 家大型商业银行、12 家股份制商业银行、133 家城市商业银行、5 家民营银行、859 家农村商业银行、71 家农村合作银行、1373家农村信用社、1 家邮政储蓄银行、3 家政策性银行、 311 家村镇银行、48 家农村资金互助社。优先选择5家商业银行,他们占40%的交易量。其次是股份制银行和邮储。这就18家银行了。老板要是不满意,城商行和农商行加起来有1000多家呢。一般对接一个银行预计有3周左右的工作量,大部分银行需要专线接入,费用和带宽有关,一年也得几万费用。不同银行对接入环境有不同要求,这也是成本。另外,还有一个重大风险,就是央行在搞得网联系统,毕竟还没有出来,相关资料参考知乎上关于网联的一篇讨论。

  ● 手机支付,现在不少厂商都内置了各种支付,比如苹果的In-App支付, 三星支付、华为支付等, 这些支付仅针对特定的手机型号, 支持NFC等,根据业务需要也可以接入。 就是目前用户群不大,收益不明显。

  ● 话费支付, 这一块容易被人忽略,但考虑到国内不少职场人士,话费是公司报销的,每个月多的用不完,所以这块支付还是相当有市场的。 问题是,联通和移动两大运营商,不仅接口不能互通,内部各个地域也是各自为政,所以对接起来还是有点麻烦。不过话费支付领域也有类似支付宝微信的第三方支付公司,比如虹软、联动优势等公司。

  这篇文章对支付系统整体设计做一个概要描述,后续会逐步补充内容并完善。其实每个模块都是一个大坑,有很多的技术细节。

转载于:https://www.cnblogs.com/barrywxx/p/8522622.html

支付系统整体设计:整体架构设计以及注意要点(三)相关推荐

  1. Linux系统运维与架构设计之Linux概述

    Linux系统运维与架构设计之Linux概述 Linux系统运维与架构设计 1.1 浅谈计算机系统 1.1.1 计算机硬件系统 现代计算机是基于冯·诺依曼体系结构,由运算器.控制器.存储器.输入设备. ...

  2. 大型网站系统的特点和架构设计

    分布式架构 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁 优知学院」淘宝技术架构的前世今生(上) 优知学院」淘宝架构的前世今生(下) 揭秘:一位亲历者眼中的淘宝技术架构发展之路 淘宝发展历 ...

  3. 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

    我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...

  4. [转]去哪儿网机票搜索系统的高并发架构设计

    "高并发"一直是大家感兴趣的话题.2010年~2012年,我曾在Qunar供职,主要负责机票搜索相关的业务,当时我们的搜索系统最高每天承载了亿级用户的高并发访问.那段日子,很苦很累 ...

  5. 支付系统 “订单模型” 该如何设计?

    导读 最近经历了一件事,就是小码农所在的公司因为被某大厂收购之后要进行融合了,其他方面的融合就没必要说了,今天咱们只是聊一下支付系统融合的事情.首先从很多互联网公司的发展经验来看,随着多条业务线的发展 ...

  6. 云运维拓扑图_浅谈:智慧交通云平台网络拓扑设计及架构设计

    众所周知, 智慧交通云平台网络架构设计 支撑平台建设基于以物理分区为基本单元的设计理念,整个云计算中心可分为:核心交换区.管理区.DMZ区.业务应用区以及云存储区. 核心交换区:负责核心网络交换: 管 ...

  7. 支付系统设计白皮书:支付系统的概念与架构

    一.什么是支付系统 自古以来,所有的商业活动都会产生货币的收款与付款行为.在人类漫长的历史长河中,记录收付款行为的方式不断迭代:古代的账房先生通过手工记账,工业社会通过收银机机械记账-- 今天,进入了 ...

  8. 架构设计:架构设计要平衡兼顾多方需求

    "架构设计要平衡兼顾多方需求" 系统建模 定义接口 划分功能模块 套用模式 优化性能 系统的安全性 易用性(usability) 产品支持 发布管理 部署方式 解决以上问题的技术问 ...

  9. Java性能优化:架构设计-分布式架构设计

    分布式架构设计 一.前言 随着微服务的流行,"分布式架构"作为高频词时常出现在开发者面前,我们是否理解分布式架构?它和微服务有什么区别呢?这一小节我们将讲解微服务和分布式架构那些事 ...

  10. 分层设计与领域设计融合架构设计

    目录 文章目录 目录 传统分层架构存在的问题 领域驱动设计 领域驱动设计思想 领域驱动设计面临的问题 分层设计与领域设计的融合 应用服务层和领域服务层 领域划分和微服务化 传统分层架构存在的问题 传统 ...

最新文章

  1. py 的 第 31 天
  2. ASP.NET-------字符串和字节数组转换
  3. 牛B的调试工具:OzCode
  4. python3 os模块
  5. wordcloud里面设置mask加载不出来词频_一条龙搞定情感分析:文本预处理、加载词向量、搭建RNN
  6. Python中为啥 ‘abcd‘<‘ad‘ 答案他来啦
  7. 【PostgreSQL】PostgreSQL安装步骤
  8. maven-聚合与继承
  9. 亿能bms上位机_上位机软件 上位机PC软件 bms电池管理系统测试系统软件
  10. 什么是VB.NET?
  11. 计算机桌面机器人,桌面的 Spirit Rover(勇气号探测器),机器人爱好者的心头好!!...
  12. 如何利用STM32和迪文串口屏以及WIFI模组进行数据交互
  13. 京东微信购物性能优化,最佳实践总结!
  14. 休闲娱乐之和成熟的男生谈恋爱
  15. [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 错误
  16. Unity基础:图片根据文字内容自适应大小(ContentSizeFitter的使用小技巧)
  17. 非常好用的在线画树网站(树结构的自动生成工具,免去手动画树的烦恼)
  18. 2023届毕业生职场第一步:挡飞刀
  19. 我又双叒叕倒在了年初立下的flag里
  20. 解决问题:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

热门文章

  1. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1052:计算邮资
  2. 【C/C++17】_ooci.h,_ooci.cpp,_mysql.h,_mysql.cpp,_postgresql.h,_postgresql.cpp
  3. 【Linux】一步一步学Linux系统编程教程汇总(暂时暂停更新......)
  4. 【Linux】一步一步学Linux——route命令(169)
  5. java native 例子_Java native方法以及JNI实践
  6. 程序运行依赖的重要文件版本不对_Deno核心模块:灵活依赖amp;安全沙箱
  7. 0/1背包问题-----回溯法求解
  8. netbeans html 格式化,在NetBeans IDE8.0中怎么把html的文件转换成jsp格式
  9. 爬楼梯—leetcode70
  10. iOS Hacker 动态库 dylib 注入