开源发布: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)篇。 欢迎和我一起深入解码支付系统的方方面面。

相关推荐
五行星辰2 分钟前
Gson修仙指南:谷歌大法的佛系JSON渡劫手册
java·后端
哈哈哈哈哈哈哈哈哈...........7 分钟前
【无标题】object,wait,notifyAll
java·开发语言
未完结小说7 分钟前
RabbitMQ高级(二) - MQ的可靠性
后端
Lemon1257 分钟前
LeetCode刷题常见的Java排序
后端
javastart10 分钟前
深入解析大型应用架构:以dify为例进行分析
人工智能·架构·开源
Niuguangshuo13 分钟前
Python 设计模式:迭代模式
java·python·设计模式
uhakadotcom18 分钟前
使用Python访问NVIDIA CUDA:简化并行计算
后端·面试·github
1ven19 分钟前
JDBC驱动包的隔离加载与卸载
java
Richard201226 分钟前
Java 源码 - Atomic包中的原子操作类总结
java