外聯網關平臺實踐之車支付渠道改造
1. 項目背景
車支付系統對接很多的外部渠道,如蘋果支付、支付寶、微信、銀聯等,在實際開發與實施的過程中,發現了其中存在的一些問題,比如:
⬤ 需要一定精力在與渠道進行非業務邏輯的聯調與測試。
⬤ 渠道的對接可能分佈在不同的業務子系統中,沒有進行統一有效的出口管控。
針對以上類似問題,外聯網關應運而生,以保證內部系統與外部系統之間進行安全、有效、便捷的通訊。
2. 設計方案
2.1
系統交互流程圖
簡單來說,系統的主要功能就是通過對請求的一些配置,選擇系統預置的一些插件(系統內置了常用的通訊協議、加簽驗籤、加密解密過程,也可以通過規則引擎腳本實現對請求和響應數據的個性化處理),以實現在不編寫代碼的情況下,實現對請求的鑑權、參數預處理、參數與響應結果映射等。讓業務開發同學更關注業務邏輯。
平臺還提供 Mock 數據的能力,在外部接口未提供可調用環境時,可以根據渠道提供的文檔,進行 Mock 數據的返回。
系統提供兩種接入方式:
⬤ 客戶端如果採用 spring cloud,可以接入統一註冊中心 Consul;
⬤ 如果是其他系統,可以通過 HTTP 方式調用。
3. 實踐過程
在獲取到對接方的接口文檔之後,通過分析接口的通訊與鑑權方式,在外聯網關的配置管理後臺配置相應的參數,配置完成之後會有相應的模板編號,客戶端通過模板編號 + 對接接口的請求參數進行接口的請求。
3.1
組管理
系統通過組管理,對同一系列的接口的通用配置,實現對一個外部渠道中一個或多個接口的的請求響應處理配置,包括:
⬤ 加簽驗籤
⬤ 加密解密
⬤ 預設字段
系統預置加密及簽名:
⭐️ 加密分爲三種:
-
對稱加密(symmetric),例如:AES、DES 等
-
非對稱加密(asymmetric),例如:RSA、DSA 等
-
摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC 等。
⭐️ 摘要算法:
⭐️ 加解密算法:
注意:
AES | 祕鑰長度 | IV 向量(byte-->Base64)|AES/mode (加密模式)/padding (填充方式)
AES|128|AQIDBAUGBwgJAAECAwQFBg==|AES/CBC/PKCS5Padding
⭐️ 簽名策略(SignStrategyEnum)
⭐️ 驗籤策略(VerifySignStrategyEnum)
⭐️ 簽名鹽值位置:
⭐️ 加密策略(EncryptStrategyEnum)
⭐️ 解密策略:
⭐️ 接口預設參數:
{
"body": {
"requestNo": "$simple_uuid$",
"requestTime": "$millisecond_long$",
"charset": "UTF-8",
"signType": "SHA256withRSA",
"encryptType": "AES"
}
}
示例:$simple_uuid$
3.2
請求項配置
在配置好接口組之後,接下來就可以通過對請求項實現對某一個接口的具體配置,其中包括:
⬤ 選擇對應的接口組
⬤ 是否需要 Mock 數據
⬤ Mock 數據的模板配置(每個屬性由 3 部分構成:屬性名、生成規則、屬性值,可以實現返回動態 Mock 數據。)
⬤ 請求的方式(POST、GET)
⬤ 請求與響應的 Content-type,編碼格式等
⬤ 請求超時的配置
⬤ 請求參數映射(參數名稱的轉換)
⬤ 請求參數腳本(通過規則引擎腳本對請求參數進行二次處理)
Mock 模板示例:
'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value
3.3
模板配置
模板是打包一個或者多個請求(目前僅支持一個,後續通過接入規則引擎平臺,實現對請求項的編排能力),對外暴露給客戶端,通過模板編號進行請求。
4. 規劃
外聯平臺目前實現了基本的對請求的處理與封裝,還是有很多需要集成與完善的功能,比如對請求的監控與性能統計,直觀感受外部接口的響應效率,更好的優化自己的系統。
還有可以接入規則引擎系統,可以實現對請求更靈活的配置,讓系統更加靈活,適應更多的場景。
5. 總結
外聯網關是針對請求外部接口的一套實現方案,以低代碼的形式實現複用,以減少接口對接工作量爲目標,最終實現提高工作效率,實現對接口的統一管理與控制,確保交易在各支付渠道之間安全、無縫的傳遞。
⬤ 作爲之家內部業務系統與外部系統的隔離與統一管理:
⬤ 實現外部支付清算系統的統一接入和接入管理;
⬤ 完成通訊協議及信息的轉換;
⬤ 完成報文組包解包、報文解密和加密;
⬤ 完成信息的路由分發;
⬤ 完成報文的發送和接收。
作者簡介
鄭剛
■ C 端及中臺產研中心 - 效能平臺部 - 業務平臺團隊。
■ 2017 年加入汽車之家,主要負責中臺及金融相關業務服務器端設計與開發工作。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Q-zdXj2NMZj6zolhqO9KLg