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

相关推荐
路在脚下@8 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
啦啦右一10 分钟前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring
森屿Serien11 分钟前
Spring Boot常用注解
java·spring boot·后端
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
Hello.Reader2 小时前
深入解析 Apache APISIX
java·apache
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
菠萝蚊鸭2 小时前
Dhatim FastExcel 读写 Excel 文件
java·excel·fastexcel
旭东怪2 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
∝请叫*我简单先生2 小时前
java如何使用poi-tl在word模板里渲染多张图片
java·后端·poi-tl