外聯網關平臺實踐之車支付渠道改造

1. 項目背景

車支付系統對接很多的外部渠道,如蘋果支付、支付寶、微信、銀聯等,在實際開發與實施的過程中,發現了其中存在的一些問題,比如:

⬤  需要一定精力在與渠道進行非業務邏輯的聯調與測試。

⬤  渠道的對接可能分佈在不同的業務子系統中,沒有進行統一有效的出口管控。

針對以上類似問題,外聯網關應運而生,以保證內部系統與外部系統之間進行安全、有效、便捷的通訊。

2. 設計方案

2.1

系統交互流程圖

簡單來說,系統的主要功能就是通過對請求的一些配置,選擇系統預置的一些插件(系統內置了常用的通訊協議、加簽驗籤、加密解密過程,也可以通過規則引擎腳本實現對請求和響應數據的個性化處理),以實現在不編寫代碼的情況下,實現對請求的鑑權、參數預處理、參數與響應結果映射等。讓業務開發同學更關注業務邏輯。

平臺還提供 Mock 數據的能力,在外部接口未提供可調用環境時,可以根據渠道提供的文檔,進行 Mock 數據的返回。

系統提供兩種接入方式:

⬤  客戶端如果採用 spring cloud,可以接入統一註冊中心 Consul;

⬤  如果是其他系統,可以通過 HTTP 方式調用。

3. 實踐過程

在獲取到對接方的接口文檔之後,通過分析接口的通訊與鑑權方式,在外聯網關的配置管理後臺配置相應的參數,配置完成之後會有相應的模板編號,客戶端通過模板編號 + 對接接口的請求參數進行接口的請求。

3.1

組管理

系統通過組管理,對同一系列的接口的通用配置,實現對一個外部渠道中一個或多個接口的的請求響應處理配置,包括:

⬤  加簽驗籤

⬤  加密解密

⬤  預設字段

系統預置加密及簽名:

⭐️ 加密分爲三種:

  1. 對稱加密(symmetric),例如:AES、DES 等

  2. 非對稱加密(asymmetric),例如:RSA、DSA 等

  3. 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC 等。

⭐️ 摘要算法:

tWglTV

⭐️ 加解密算法:

BCux4D

注意:

AES | 祕鑰長度 | IV 向量(byte-->Base64)|AES/mode (加密模式)/padding (填充方式)

AES|128|AQIDBAUGBwgJAAECAwQFBg==|AES/CBC/PKCS5Padding

⭐️ 簽名策略(SignStrategyEnum)

jSAnUO

⭐️ 驗籤策略(VerifySignStrategyEnum)

53xKm8

⭐️ 簽名鹽值位置:

99dTuE

⭐️ 加密策略(EncryptStrategyEnum)

0cEJju

⭐️ 解密策略:

QrZXM6

⭐️ 接口預設參數:

{
 "body"{
  "requestNo""$simple_uuid$",
  "requestTime""$millisecond_long$",
  "charset""UTF-8",
  "signType""SHA256withRSA",
  "encryptType""AES"
 }
}

示例:$simple_uuid$

p6BrOz

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