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

相关推荐
激流丶4 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue7 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
让学习成为一种生活方式24 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画30 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
假装我不帅1 小时前
asp.net framework从webform开始创建mvc项目
后端·asp.net·mvc
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
神仙别闹1 小时前
基于ASP.NET+SQL Server实现简单小说网站(包括PC版本和移动版本)
后端·asp.net
Heavydrink1 小时前
HTTP动词与状态码
java
ktkiko111 小时前
Java中的远程方法调用——RPC详解
java·开发语言·rpc
计算机-秋大田1 小时前
基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
java·论文阅读·spring boot·后端·vue