開源發布: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.pswp.cn/web/13239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13239.shtml
英文地址,請注明出處:http://en.pswp.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…