支付中心1.0
初期为快速响应业务的支付、退款以及一些基础需求,支付中心主要负责接入支付通道(支付宝、微信、连连等),由各业务线分别实现收银台,然后调用支付中心进行支付。业务系统、支付中心和第三方通道的交互流程图如下:
各系统交互流程为:
1、业务线将订单信息封装后请求到支付中心;
2、支付中心对订单信息简要处理后增加支付信息请求到第三方支付通道;
3、第三方支付通道将支付结果异步回调到支付中心;
4、支付中心将第三方响应的数据简易处理后同步通知到各业务系统;
5、业务系统进行逻辑处理、用户通知及页面跳转等。
业务发展初期,业务量较小,交易场景也比较单一,这样的设计可以快速响应业务需求,实现功能。但当业务复杂性不断提高,接入的业务也越来越多时,该架构就显得力不从心了。各业务线需要重复开发一些功能,并且支付中心不具备整体管控能力,开发维护成本越来越大。主要的问题包括:
维护成本高:各业务线需单独维护收银台,调用支付系统完成支付,需分别保证幂等、安全等问题;
容灾能力差:所有功能集中在一个大模块里,某个功能出问题,直接影响全部;
结构不合理:架构单一,不能满足复杂业务场景;
系统职责乱:收银台维护了收款方式及部分业务路由,缺乏统一的管控。
为了兼顾对快速发展中的业务的需求响应和系统的高可用性,保证线上服务的质量,我们快速进行了架构调整,开始了向支付中心 2.0 的演进。
支付中心2.0
2.0 架构将各业务的公共交易、支付、财务等沉淀到支付中心,并主要解决了以下三个主要问题:
1、建立基础订单、支付、财务统一体系,抽象和封装公共处理逻辑,形成统一的基础服务,降低业务的接入成本及重复研发成本;
2、构建安全、稳定、可扩展的系统,为业务的快速发展和创新需求提供基础支撑,解决业务「快」和支付「稳」之间的矛盾;
3、沉淀核心交易数据,同时为用户、商家、财务提供大数据支撑。
支付网关对外抽象出支付、退款、查询这些标准请求,然后在网关基础上逐步梳理各支付通道,并逐步抽取出基础订单模块,解耦业务功能与支付功能,同时可支持复杂的业务场景。
目前的系统功能整体架构如下:
从架构上主要分为三个层次:
产品层:组合核心层提供的支付能力,对终端用户提供收银台、对运营财务人员提供运营财务系统
核心层:支付中心核心模块,包括基础订单、支付路由、支付通道等
支撑层:用来支撑整个系统的基础设施,包括监控报警、日志、消息队列等
请简要介绍一下支付系统的工作原理,包括第三方支付和银行支付。
支付系统工作原理:支付系统主要包括第三方支付(如支付宝、微信支付等)和银行支付(如银联、信用卡支付等)。当用户发起支付请求后,商户会将支付信息传递给支付网关,之后支付网关与相应的支付平台进行通信,根据支付渠道完成支付授权和结算。支付完成后,支付平台会向支付网关返回支付结果,最后支付网关将结果通知商户和用户。
请描述一下支付系统涉及的主要参与方(如用户、商户、支付网关、银行等),以及它们在支付过程中的角色和作用。
支付系统主要参与方:
用户:发起支付请求,为在商户购买的商品或服务付款。
商户:提供商品或服务,并接收用户的支付。
支付网关:负责支付请求的处理,并连接不同的支付平台。
支付平台:处理来自支付网关的支付请求,并向银行和清算机构提交交易信息。
银行和清算机构:负责处理付款、退款等交易,并确保资金安全流转。
请说明支付网关的职责和作用,并解释如何与支付系统集成。
支付网关的职责:支付网关负责处理来自商户的支付请求,连接不同的支付平台,管理交易流程,并完成身份验证、风险评估、交易记录等。支付网关可通过API、通知等与支付系统集成,使商户可以灵活、安全地接入多种支付方式。
谈谈您对支付系统中的支付状态和支付回调机制的理解。
支付状态和支付回调:支付状态表示支付交易的当前状态,如未支付、已支付、支付失败、退款等。支付回调是指支付平台在交易结束后,将支付结果通知给商户的过程,通常采用异步通知方式。
请解释一下支付系统中的预授权(Pre-authorization)与正常支付之间的区别。以及预授权适用的场景。
预授权与正常支付的区别:预授权是一种授权交易,意味着用户的付款渠道向商户暂时承诺未来的支付。预授权完成后,商户在约定期限内可以对预授权金额进行冻结、部分或全部结算。预授权适用于需要预留或暂时冻结金额的场景,如酒店预订、租车等。
请谈谈常见的支付方式,如信用卡支付、实时支付、数字钱包等,以及它们的优缺点。
常见支付方式:
信用卡支付:基于传统信用卡体系的在线支付,易用性好,信用额度较高,但交易费用相对较高。
实时支付:对接银行实时汇款系统的支付方式,具有较低的交易费用,支付速度较快,但不够便捷。
数字钱包:如支付宝、微信支付,兼具实时支付和信用卡支付的优势,操作简便,促进线上线下场景的整合。
描述如何确保支付系统在面对高并发请求时的稳定性,包括应对策略和技术方案。
确保支付系统在高并发时的稳定性:可以采取负载均衡、服务限流、服务降级、缓存技术、异步处理并增强数据库的读写能力等策略,以确保系统在面对高并发请求时保持稳定运行。
请简要说明如何实现支付服务的负载均衡,以提高系统性能和可用性。
支付服务的负载均衡:负载均衡通常采用硬件设备(如F5)或软件(如Nginx、LVS)实现,通过分配请求到各个服务器,有效处理并发访问和请求,提高系统性能,确保服务可用性。
请谈谈您对支付系统中数据安全的重要性,以及采取哪些措施来保障用户信息和支付数据的安全。
支付系统的数据安全:保障用户信息和支付数据的安全需要加强用户身份验证、实现数据传输和存储的加密、采用强化措施防范DDoS攻击、实施严格的系统审计和监控、遵循相应国家法规和标准(如PCI DSS)。
请详细解释一下PCI DSS(支付卡行业数据安全标准),以及如何符合这一标准来确保支付系统的安全性。
PCI DSS:支付卡行业数据安全标准,是针对存储、处理、传输支付卡数据的组织所制定的一套通用安全标准。符合PCI DSS可以确保支付系统在数据保护、访问控制、系统维护等方面达到较高的安全要求。
请描述一下支付系统中如何实现对敏感数据(如信用卡信息)的加密存储和传输。
支付系统中加密实现:可以采用AES、RSA等加密算法对敏感数据加密,并使用HTTPS传输,以确保数据的安全性。
请解释数字签名和证书在支付系统中的使用场景和重要性。
数字签名与证书:数字签名是用于验证数据完整性和身份认证的非对称加密技术,有助于防止数据篡改问题。证书是由证书颁发机构(CA)颁发的公钥文件,负责验证支付系统的合法性。
在支付系统中,如何确保事务的原子性、一致性、隔离性和持久性?
实现事务的ACID特性:采用数据库的事务管理机制,如提交(commit)、回滚(rollback)等,确保支付过程在出现异常时可以保持原子性、一致性、隔离性和持久性。
如何在支付系统中实现多币种、多国家支付?
实现多币种、多国家支付:支付系统需要支持多种货币单位和汇率转换,在支付过程中根据用户所在地区、支付渠道要求实现不同币种和结算方式的自动切换。
请谈谈支付系统与其他系统(如订单系统、物流系统、会计系统等)之间的集成和数据交换方式。
支付系统集成:支付系统与其他系统(如订单系统、物流系统、会计系统等)可通过API、消息总线和事件驱动等方式实现数据交换与协同作业,确保业务流程的顺畅进行。
支付系统中订单生成的流程:
1、客户端请求下单:当用户在客户端(如网站、移动应用等)完成购物操作后,会向服务端发送下单请求。此请求通常包括购买的商品详情、价格、数量、收货人和收货地址等信息。这个步骤涉及用户提交订单信息。
2、服务端订单创建:服务端收到下单请求后,会根据请求内容创建订单。在创建订单之前,会执行一些验证操作,例如检查库存、计算价格、检查收货地址等,确保订单的有效性。订单创建成功后,会将订单状态设置为“待支付”,并将订单信息存储到数据库或其他存储系统中。
3、发起支付:客户端根据提交的订单信息,向支付服务(如支付宝、微信支付或银行系统)发起支付请求。支付请求通常包括订单号、支付金额、支付渠道等信息。为确保安全性,发起支付请求时需要注意将敏感数据加密,并使用签名等机制防止数据篡改。
4、支付服务处理支付:支付服务收到支付请求后,会根据支付渠道、支付方法等信息处理支付。在处理过程中,支付服务会进行一些验证操作,例如确认订单金额、检查支付渠道可用性等。对于需要用户输入密码或短信验证码的支付方式,支付服务会提示用户输入相关信息。
5、支付结果通知:支付成功或失败后,支付服务会将支付结果通知客户端和服务端。这通常通过回调接口实现,客户端和服务端需要分别实现对应的支付回调处理逻辑。收到支付结果通知后,客户端可以更新页面或提示信息,告知用户支付结果;服务端在接收到回调信息后,需要对数据进行签名验证,确保数据安全性和一致性,并更新订单的支付状态。
6、订单后续处理:当订单支付成功后,服务端会根据订单内容执行相应的后续处理操作,例如商品发货、生成发票、记录支付日志等。同时,会将相关信息推送给客户端,以便用户查询订单状态和查看物流信息等。