聚合支付平台
一、聚合支付平台介绍
1、业务背景及功能介绍
1)商家对接支付,形成二维码显示到你的网站上。二维码背后就是一个字符串。给到一个微型和支付宝的url。
2)Deplink 可以调到对应的APP,如:weixin:// 唤醒微信的APP。
3)对接支付入款API和回调API,回调API修改订单状态。
4)支付中有几个角色,商户:对接支付的人。接口:聚合支付平台。
支付渠道:支付宝、微信、京东等。清结算系统。
5)支付对接流程
①商务对接,身份提交给平台,还有手续费问题
②技术对接
③测试和上线(数据类型用decimal)
④对账和提现
6)聚合支付
聚合平台自己又成了商户的角色。
2、支付对接时序图介绍
支付成功通知
二、一个聚合支付平台的基本需求
1、支付相关
1)支付API(出入款、查询、异步回调通知)
2)对接不同的支付渠道(支付方式)
3)订单系统 扣费系统
2、管理系统
1)商户账户管理(配置商户、手续费等)
2)渠道管理
3)订单管理
4)对账
5)权限
6)其他(权限、结算、统计)
三、聚合支付系统介绍
1、架构介绍
Adpator,对接不同支付渠道。
商户的管理后台
通知
Mysql 和redis
2、技术栈
Java8 node.js vue mysql
3、为什么去spring化
Spring 并不是百分之百完美的,不用spring对代码的掌控力很高。
四、无spring实现
1、web功能
Simple HTTP API Endpoint
1) 为什么这个业务场景只需要简单的http服务
① 对B端系统用户
② 使用签名技术而非普通session认证
③ 接口变化非常缓慢
④ 基本无复杂前端相关业务
2) 我们需要的是:
① HTTP协议服务器
② HTTP请求分发器
③ 支持不同HTTP相应
④ 提供业务代码框架
⑤ Cookie以及其它http协议。
2、NanoHttpd框架
Session里面有各种方法
3、Beetl3模板
选择模板、传入参数。
4、Requst dispatcher(分发)
定义分发规则
Url找到哪个类的哪个方法
定了一个规约
包路径规则定义完成后,利用反射找到对应的class。
5、在非spring环境下使用MyBites
封装DBTools类,通过传SqlSession的lamda表达式