设计一个类似支付宝的在线支付系统,问如何着手?
2015-01-30 12:33
399 查看
首先是最前端,与用户打交道的WEB端。考虑到用户量的问题,必然要做负载均衡。硬件或者软件都有很多解决方案,比如软件可以用开源的nginx、haproxy、lvs什么的。WEB端的基本功能是 用户服务平台、支付网关、商户服务平台(提供针对商户的订单管理功能)。
在WEB后面需要一系列的服务相互配合,这里细节略去。详情可以参考各支付平台给商户的各种文档,里头可以窥知一二。
服务的背后就是数据,所以必然得有数据库,得考虑用什么数据库。然后要考虑的两个主要问题是:1. 数据量、请求量都很大,怎么解决压力的问题。分库分表什么的,少不了;这还不够,你不能把所有请求都直接扔给数据库,所以得引入memcached/redis之类的来作为缓存;有了缓存,又得考虑数据的一致性问题…… 2. 数据的安全性,主从同步、数据恢复这些东西我都不是很熟,必然得有专业的DBA才行。
在整个核心支付流程之外,还得考虑支付的风险,这得在支付流程内外都安插一些环节。你所提到的https,这个是最最基本的。在网络传输中被拦截数据的风险远小于在客户端被拦截的风险,所以你得有安全控件。这还远远不够。即使密码泄漏了,你也得用一定的方式保证用户的资金不被任意使用,跟不用说常见的欺诈、钓鱼之类风险,在这里,安全控件也能帮上不少的忙,详情可以参见知乎这个问题,里面有Fenng和白鸦的回答。
除了支付,你还得考虑保障后勤工作的清算对账,核对支付的疏漏。比如说我在评论里提到的,重复支付的问题是不能完全避免的,就得靠清算对账来完成。通常支付平台还得给商户提供流水以供商户核对。
在WEB后面需要一系列的服务相互配合,这里细节略去。详情可以参考各支付平台给商户的各种文档,里头可以窥知一二。
服务的背后就是数据,所以必然得有数据库,得考虑用什么数据库。然后要考虑的两个主要问题是:1. 数据量、请求量都很大,怎么解决压力的问题。分库分表什么的,少不了;这还不够,你不能把所有请求都直接扔给数据库,所以得引入memcached/redis之类的来作为缓存;有了缓存,又得考虑数据的一致性问题…… 2. 数据的安全性,主从同步、数据恢复这些东西我都不是很熟,必然得有专业的DBA才行。
在整个核心支付流程之外,还得考虑支付的风险,这得在支付流程内外都安插一些环节。你所提到的https,这个是最最基本的。在网络传输中被拦截数据的风险远小于在客户端被拦截的风险,所以你得有安全控件。这还远远不够。即使密码泄漏了,你也得用一定的方式保证用户的资金不被任意使用,跟不用说常见的欺诈、钓鱼之类风险,在这里,安全控件也能帮上不少的忙,详情可以参见知乎这个问题,里面有Fenng和白鸦的回答。
除了支付,你还得考虑保障后勤工作的清算对账,核对支付的疏漏。比如说我在评论里提到的,重复支付的问题是不能完全避免的,就得靠清算对账来完成。通常支付平台还得给商户提供流水以供商户核对。
相关文章推荐
- BBS 设计思路系列 ---- 普通网友如何投诉一个帖子??
- 如何在一个系统中设计权限控制机制(3)
- 如何使用form嵌套和接口来设计一个复杂的用户界面
- 如何用c#来制作一个activeX控件或类似的东西
- 如何构建一个ERP系统(需求分析、系统架构、系统设计、系统编码、测试、交付程序及文文件)。
- Web Services的设计越来越多,如何用它来分析和组织更大粒度的信息系统,比如一个地区?
- 如何用c#来制作一个activeX控件或类似的东西
- 如何建立一个网站?规划、设计、目的、原则、宣传(一)
- 设计模式研究:如何判断一个封装方案是好是坏
- 如何独立设计完成一个软件项目
- 如何在一个系统中设计权限控制机制(1)
- 如何设计一个类,让它易于测试?
- 如何在ASP.NET中设计类似RichEdit样式的文本编辑区域
- 如何建立一个网站?规划、设计、目的、原则、宣传(三)
- 如何用c#来制作一个activeX控件或类似的东西
- 一类似传销的累加算法以及如何设计数据库!
- 如何用c#来制作一个activeX控件或类似的东西
- 如何添加一个自定义的columnstyles 到设计器中,以便在设计时直接使用他们?
- 如何架设一个类似 YouTube 的小型视频分享站点.
- 如何设计一个公共的数据字典维护模块