妙谈支付网关设计
网关:网络中转
接手支付网关半年有余,对于其中的一些设计也有了一些自己的认识
支付系统中, 支付网关和支付渠道的对接是公司最核心的业务, 且支付架构一旦定型将很难做出改变, 没有支付牌照的互联网金融公司只能依赖第三方支付公司进行收款, 在与多渠道的对接过程的各种壁垒, 也吸取了一些教训:随着公司业务的扩展,对支付系统的要求越来越高
1、参数校验:为保证外置接口的安全性, 必须对传入参数做成校验,以防止被人恶意攻击
2、加密解密:对支付而言, 最重要的就是安全,做好加密解密是保障支付安全的重要一步, 至于加密算法依靠合作的支付公司
3、数据库分表:随着公司业务的扩展, 数据库数据越来越多,必须面临分表,是水平切割还是垂直切割,根据业务发展而定
技术架构:Dubbox + mq + ssm
一次简单的付款请求,后台其实做了很多中转,从前端页面请求后端, 后端请求支付系统, 支付系统请求第三方支付公司, 第三方支付公司请求中国网银再到银行,然后再依次返回, 作为一名有支付经验的技术人员, 必须懂得如何保障交易的完成,以及交易订单掉单的处理,如何进行防重过滤,这些都是必须要考虑的:
由于网络请求中断,网络丢包, 第三方支付公司并没有异步回调接口告知支付结果如何处理?对单定时器,对于正在处理中且没有支付结果的支付订单可以采用对单定时器去拉取支付结果,定时器设置时间看具体需要而定;
如何进行防重过滤: 从前端页面进行过滤, 避免重复请求, 后端请求在还款中检查上一笔是否正在还款中的订单,如果有的话,拒绝请求
如何根据业务发展的需要搭建路由支付控制器,根据不同支付渠道, 不同支付参数进行适配,这些都是需要克服的困难,总而言之,支付网关最重要的就是安全性,保障支付交易的安全
当支付系统处于持续性的高并发时, 如何处理?读多写少用缓存, 写多读少用队列, 减少数据库的压力,保证支付系统的正常运行
