网关定义:网关是从一个网络到另一个网络的“关口”,最主要的作用是接收协议,并检查收到的协议是否符合规定,符合的就通过,不符合的就挡住。
支付网关的作用同样,支付网关是支付机构的“关口”,所有的支付交易都需要经过支付网关的过滤再分发给各个支付系统,并经由支付渠道转发给银联或者网联。为什么需要这个关口呢?作为一家现代的支付机构,需要支持微信支付、支付宝支付、协议支付等各式各样的支付方式,每种支付方式的后端接入接口都是不一样的。如果不同的支付方式都要不同的接口接入,则是非常耗费资源的,支付网关就是支付机构为商户提供的统一接入方式,更是支付机构的“关口”。支付网关的作用如图2-1所示。
可以看出,支付网关是支付机构的门户,它实现了统一接入和协议转换的重要作用,但支付网关只做到这两点是远远不够的,那么支付网关还可实现哪些功能呢?
网关的基本功能支付网关作为支付交易的入口,可以把公共处理的模块收拢在支付网关这一层来处理,这样设计的优点如下:
- 减轻下游系统的压力:像参数校验这类功能可以拆分出公共模块,在网关层对基础参数做校验,校验通过后再转发给下游系统进行处理,大大降低了下游系统的压力。
- 系统更加安全:将不符合标准的请求都挡在网关层外,对恶意刷单、恶意攻击的行为有一定的防控作用。只把网关这一层暴露给外部服务,避免支付核心系统的IP地址等信息的泄露。
- 容错能力强:当下游某一个系统有性能问题时,网关层能够直接感知,后续的交易直接被挡在网关层外,防止交易堆积把其他的系统也“拖死”。
那么作为支付网关都需要具备哪些业务能力,才能有效地体现上面的优点呢?
- 统一接入:作为支付机构最核心的功能,支付网关需要为上游提供统一的接入方式,即接口要统一,不管客户使用哪种支付方式,上游只需要对接一个接口即可。
- 参数校验:支付网关收到上游的报文之后需要校验参数的合法性,如果参数不合法,则要及时丢弃,避免给下游造成压力。
- 加签/验签:作为支付机构,操作的都是“真金白银”,所以要慎之又慎,通过验证签名可以验证服务的上游是不是支付机构签约的客户,一来为资金安全提供保障,二来避免收到不良攻击,另外返回给上游的结果也需要加签。
- 加密/解密:互联网支付涉及很多非常隐私的信息,比如银行卡号、密码、身份证号等,所以协议传输的过程中更需要加密,收到的协议也需要解密后才能处理,返回给上游的报文也需要加密后才能返回。
- 协议转换:参数校验、验签、解密都通过之后,支付网关需要根据特定的字段判断将报文转发给哪个系统,转发之前需要按照系统的标准转化为可识别的报文格式。
- 结果反馈:等待支付系统处理完成之后,支付网关需要接收处理结果并返回给上游。
支付网关各个功能的部分处理流程如图2-2所示。
每个网关都有自己的业务特点,支付网关对加密/解密、加签/验签的要求比较高。作为支付网关,具备上面的业务能力是必需的,但却是远远不够的。网关的特点是流量非常大,所以对性能的要求是非常苛刻的。网关要具备高负载的能力,同时网关肩负保护下游的职责。在流量暴增的情况下,为了防止把下游系统“拖死”,网关要具有容错限流的能力。
内容摘自《支付架构实战》,作者苏博亚,支付领域资深技术专家,在支付行业深耕十余年,先后在随行付支付有限公司、美团、有赞科技从事支付业务的开发、设计、架构工作。获得认证:
PMP(项目管理人士资格认证)
OCP(Oracle数据库认证专家)