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

系列文章PDF合集,不定时更新:

Github:GitHub - yinmo-sc/Decoding-Payment-System-Book: 百图解码支付系统设计与实现

百度网盘:百图解码支付系统设计与实现_免费高速下载|百度网盘-分享无限制

公众号:隐墨星辰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/13239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm 里面安装 codeium 插件的时候,不能够弹出登录界面

pycharm 里面安装 codeium 插件的时候,不能够弹出登录界面 pycharm 里面安装 codeium 插件的时候,不能够弹出登录界面--解决如下A pycharm 里面安装 codeium 插件的时候,不能够弹出登录界面–解决如下 #踩坑/pycharm/codeium插件无法登录 安…

微信联登报invalid code, rid: 66446806-0826d0b4-3a94ce3a ,错误码:40029解决方法

目录 一、问题描述二、问题原因三、解决方法 一、问题描述 微信登录报错: invalid code, rid: 66446806-0826d0b4-3a94ce3a ,错误码:40029二、问题原因 后端设置的 appsecret 和 appid 与前端的 appid 不一致。 三、解决方法 检查是否已…

用Ai编写一个电机驱动程序

问:帮我写一个步进电机的控制程序,要有包括加减速,以及电机步中断处理函数。 答:编写一个步进电机的控制程序涉及到硬件层面的操作,通常需要依赖特定的硬件平台和相应的驱动程序。以下是一个简化的示例,它展…

制氧机负离子的作用与好处深度解析

随着现代生活节奏的加快,空气质量逐渐下降,人们对健康生活的追求也日益增强。在这样的背景下,制氧机负离子功能因其多重健康效益而备受关注。本文将深入探讨制氧机负离子的作用与功效,帮助大家更好地了解并应用这一健康科技。 我们…

单片机烧录程序时“DTR的低电平复位,RTS高电平进入bootloader”有关的串口Modem联络信号

烧录程序时常见DTR和RTS引脚 参考,参考视频 因为常常使用的都是串口下载程序,常用的芯片CH340系列,下图中标红的引脚是MODEM联络信号,其中常见的DTR和RTS就是常见的串口Modem网络输出信号,也就是通过烧录软件控制的接…

VUE v-for中修改data数据

有个需求,要求使用v-for生成序号,但是中间可能会中断,例如: 1 2 3 4 (此行无序号) 5 6 (此行无序号) (此行无序号) (此行无序号) 7 8 ...... 想着这还不简单,只要在data中定义一个变量,然后每次调用时就行…

CMMI3认证如何升级为CMMI5认证

众所周知,CMMI认证体系共分为五个等级,一级最低,五级最高。企业初次申报一般从三级做起,在这个等级水平上,企业在项目研发管理方面已经具备一定的规范程度,对企业的过程改进有着显著成效,在同行…

wps本地js宏基础语句

IF语句 //str.indexOf("")的值为-1时表示不包含 function 是否包含关键字(){var str "陈表达真是个大帅哥";if(str.indexOf("大") ! -1){alert("是的,他是非常大");} }//str.includes("")返回一个布尔值&#x…

深入解析Wireshark1:从捕获到分析,一网打尽数据包之旅

目录 1 认识 Wireshark 1.1 选择网卡界面 1.2 捕获数据包界面 1.3 常用按钮功能介绍 1.4 数据包列表信息 1.5 数据包详细信息 2 数据包案例分析 Frame: 物理层的数据帧概况 Ethernet II: 数据链路层以太网帧头部信息 Internet Protocol Version 4 (IPv4): 互联网层IP…

Git系列:git restore 高效恢复代码的技巧与实践

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Java网络编程:介绍Java提供的网络编程接口,如Socket,ServerSocket,URL等,并通过实例说明它们的用法。

一、Java网络编程简介 网络编程的重要性: 网络编程是计算机科学中不可或缺的一部分,它使得两个或两个以上的计算机能够互相通信、协作,达成完成某个任务的目标。网络编程扫描多数我们日常生活中的应用场景,比如聊天软件、网页浏览、电子邮件、社交网络,甚至远程办公等。许多…

AndroidStudio集成高德地图后出现黑屏并报错

报错内容为:No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeMainThreadTrigger(int, long) (tried Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeMainThreadTrigger and Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeM…

如何判断自己是不是有癔病症?

癔病症分为两种类型: 分离症和转换症,需要分开来描述。 分离症:短时间的意识分离,比如:遗忘,忘记了自己的身份,就像换了个人(多重人格的特征),所以人格分裂&…

爱吃香蕉的珂珂

题目链接 爱吃香蕉的珂珂 题目描述 注意点 piles.length < h < 10^9如果某堆香蕉少于k根&#xff0c;将吃掉这堆的所有香蕉&#xff0c;然后这一小时内不会再吃更多的香蕉返回可以在 h 小时内吃掉所有香蕉的最小速度 k&#xff08;k 为整数&#xff09; 解答思路 二…

数据分析实例——搭建电商的指标体系||对应功能开发需要接入的电商API接口说明

前言&#xff1a; 在日常工作中&#xff0c;数据分析中常常涉及搭建指标体系&#xff0c;搭建电商需要接入的电商API接口本文主要以电商为案例&#xff0c;来讲讲如何搭建指标体系。 指标体系的定义&#xff1a; 指标体系是由一系列指标组成的&#xff0c;这些指标是基于不同的…

React 第三十六章 Scheduler 任务调度

Scheduler 用于在 React 应用中进行任务调度。它可以帮助开发人员在处理复杂的任务和操作时更好地管理和优化性能。 关于 Scheduler 在React 如何渲染的可以参考 React 第三十四章 React 渲染流程 下面我们根据流程图先简单的了解 Scheduler 的调度过程 Scheduler 维护两个队…

C++入门系列-赋值运算符重载

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 赋值运算符重载 运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其返回值类型&#xff0c;函数名字以及参…

使用React.createContext()在React应用中传递数据,nolan出品

React.createContext() 是React中的一个API&#xff0c;用于创建一个“上下文”&#xff0c;这是一种在组件树中传递数据的方法&#xff0c;而无需手动将props逐级传递。 这个方法接受一个参数&#xff0c;即默认值&#xff0c;当组件在树中上层没有找到对应的Provider时&…

【GESP试卷】2024年03月Scratch三级试卷

2024年GESP03月认证Scratch三级试卷 分数&#xff1a;100 题数&#xff1a;27 一、单选题(共15题&#xff0c;每题2分&#xff0c;共30分) 010203040506070809101112131415CBACADDADCBCBAB 1、小杨的父母最近刚刚给他买了一块华为手表&#xff0c;他说手表上跑的是鸿蒙&…

24长三角A题思路+分析选题

需要资料的宝子们可以进企鹅获取 A题 问题1&#xff1a;西湖游船上掉落华为 mate 60 pro 手机 1. 手机掉落范围分析 物品特征&#xff1a;华为 mate 60 pro 手机的尺寸、重量、形状等特性。静水假设&#xff1a;西湖水面平静&#xff0c;不考虑水流影响。掉落位置&#xff…