开源发布:JAVA版低代码报文网关-通过简单配置快速对接银行渠道

大家好,我是隐墨星辰,自从《百图解码支付系统设计与实现》专栏中的文章《图解支付报文网关:一种低代码报文网关的设计思路与核心代码实现》发表以来,不少同学留言或私信问我如何实现,说是虽然看懂了思路,但是还是不知道如何写代码,所以周末抽空实现了核心模块的代码,贡献出来给大家。

1. 效果

只需要手写几个配置文件,就可以快速接入一个渠道。如果有能力的话,可以自行扩展后台界面,就可以形成产品化接入,连配置文件也不需要写,只需要在后台管理界面上输入变量和映射就行。

1.1. 几个配置文件

一共只需要几个配置文件:

  1. 接口配置文件:定义接口名称,报文格式类型,报文模板等。
  2. 机构/渠道参数配置文件:与渠道交互使用的host,url,apiKey,商户号等。
  3. 密钥配置文件:签名私钥,验签公钥,加解密密钥等配置。

详细如下:

  1. 渠道接口配置文件(生产上建议保存在数据库):

其中requestMessageTemplate的内容如下:

  1. 机构/渠道配置(生产上建议保存在数据库):
  1. 签名私钥配置(生产建议放在密钥中心)

验签公钥配置(生产建议放在密钥中心)

1.2. 外发请求与处理简要说明

以系统运行日志为例子说明,这样更直观。

其中渠道报文是拿的一个公共渠道做了一点修改。大家可以拿支付宝或微信支付做实验。

  1. 内部应用调用网关的完整请求参数 (GatewayRequest)
  1. 内部应用发送外部渠道的参数示例(只包括requestContext):
  1. 发给渠道前需要组装的报文模板(requestMessageTemplate):
  1. 组装后将要发给渠道的报文(assembledRequestMessage):
  1. 渠道返回的原始报文:
  1. 根据模板转成内部参数:
  1. 转换后返回内部应用的参数(GatewayResponse):

2. 设计思路

参考《百图解码支付系统设计与实现》专栏文章:

《图解支付报文网关:一种低代码报文网关的设计思路与核心代码实现》

《图解支付渠道网关(一):不只是对接渠道的接口》

《图解支付渠道网关(二):不只是对接渠道的接口》

使用责任链串起各处理器:

报文网关的整体架构图:

渠道网关的整体架构图:

3. 工程说明

如下图所示。

4. 如何获取源码

留言或私信。

5. 小结

报文网关有四层境界:

1)直接java手写,一个接口一段代码。

2)使用模板方法,定义好主流程,每个接口实现特定的函数。

3)低代码模式(本次实现),写好核心框架,通过写配置文件接入渠道。

4)产品化,通过后台管理界面配置接口完成渠道接入。

第4层境界,需要更好抽象,更多的前后端资源,留待各位自行去探寻。我带领团队实现过第4层,如果对第4层有兴趣,可私聊。

项目代码写得很简洁精炼,如果有同学所在公司的网关还处在第1、2层,可以直接拿回去修改一下就能用起来。如果已经到了第3层,但是准备重构,可以拿回去参考一下。说不定能为上半年的好绩效做点贡献。

周末有时间再写篇文章给大家拆解里面的源码和实现原理。

这是《百图解码支付系统设计与实现》专栏系列文章中的第(32)篇。 欢迎和我一起深入解码支付系统的方方面面。

相关推荐
roman_日积跬步-终至千里14 小时前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
毕设源码-钟学长14 小时前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案
java·spring boot·后端
CodeSheep程序羊14 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
程序员良许14 小时前
三极管推挽输出电路分析
后端·嵌入式
Java水解14 小时前
【JAVA 进阶】Spring AOP核心原理:JDK与CGLib动态代理实战解析
后端·spring
我是咸鱼不闲呀14 小时前
力扣Hot100系列19(Java)——[动态规划]总结(上)(爬楼梯,杨辉三角,打家劫舍,完全平方数,零钱兑换)
java·leetcode·动态规划
Java水解14 小时前
Spring Boot 4 升级指南:告别RestTemplate,拥抱现代HTTP客户端
spring boot·后端
宫水三叶的刷题日记14 小时前
工商银行今年的年终奖。。
后端
2的n次方_15 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
大黄评测15 小时前
双库协同,各取所长:.NET Core 中 PostgreSQL 与 SQLite 的优雅融合实战
后端