1. 程式人生 > >支付系統路由系統設計

支付系統路由系統設計

路由系統,即智慧選擇最優‘‘線路’’,對於支付結算系統而言,就是要智慧選擇入款、出款渠道,那如何體現其智慧呢?我們先看幾個例子:

例子1: 現有2個渠道,渠道A的收費規則是1‰,渠道B的收費規則是2元1筆。毫無疑問,在其他條件相同的情況下,我們更願意使用更便宜的渠道,而手續費到底哪家便宜,會根據交易金額有所不同。

路由,就是要實現節約成本!

例子2: 現有2個出款渠道,收費都是2元1筆,渠道A的到賬時效一般在30分鐘內,渠道B的到賬時效一般在2小時內。顯然,通常我們會選擇到賬時效快的。

路由, 就是要提高使用者體驗!

例子3:現有2個渠道,不管從成本上來說還是從使用者體驗來說渠道A都佔盡優勢,可是有個硬傷,此筆交易渠道A走不通, 雖然渠道B成本高點速度慢點,但是畢竟能走通且滿足使用者的需求,也只好使用渠道B了。

路由,就是要確保渠道可用!

還有還有,如果某個渠道突然癱瘓怎麼辦,傻傻的等到對方恢復嗎?

以上,我們對幾個最基本的點進行了考慮,總結下來就是:

路由系統,在滿足當前交易的前提條件下,選擇我們最希望的結果。其中,前提條件有很多,入款和出款還不太一樣,一般有單筆限額、渠道當前是否可用等,後面會詳述;最希望的結果,與公司的政策策略相關,一般可能考慮的是成本和使用者體驗。

我們看下入款(支付) 、出款(提現)渠道常見的幾個限制維度:

  • 入款:單筆限額、卡種、銀行、當日限額、 當月限額等;
  • 出款:到賬時效、金額、髮卡行、發起時間、賬戶型別(對公、對私)等,出款這塊的知識可以參考之前的一篇文章《提現業務流程》;

路由系統邏輯圖可以參考下圖:

1

相關說明:

  • 按照手續費從低到高對渠道進行排序,對於手續費相同的,則再依據渠道權重進行排序;
  • 按照渠道排序依次對渠道條件進行檢查,如果當前渠道有任一條件不滿足,則該渠道不滿足條件,進行下一渠道條件檢查
  • 直到找出滿足的渠道,如果所有渠道皆不滿足,則不支援本次交易。

以上路由系統邏輯模式比較適合渠道較多,判斷規則較複雜的場景,如果是出款路由,且規則相對簡單,也可以使用如下模型:

2

大致邏輯為:

  • 配置N條規則及1條預設渠道
  • 每條規則包含‘‘條件’’和‘‘渠道’’2個組成部分,條件由若干個條件維度組成條件集合
  • 當滿足此條件時使用該渠道,如此規則不滿足則進入下一規則判斷直到找到符合的規則
  • 如果所有規則都不滿足,則使用預設渠道

為了便於理解,給大家舉個例子

銀行A:所有出款都免費,但是到賬週期偏長;

銀行B:行內轉賬免費,實時到賬,跨行轉賬收費;

銀行C:所有業務均收費,但是5萬以下實時到賬,5萬以上到賬週期也較長

根據以上條件我們設計方案為,如收款銀行為B時,則使用銀行B進行出款;如收款銀行不為B&金額為5萬內&到賬時效要求高時使用銀行C出款;除以上規則外,其他所有情況使用銀行A出款。

其他說明:

以上討論的僅是簡單路由系統模式,仍有許多細節沒有說明,挑幾個需要注意的點介紹給大家

  • 每個渠道能配置是否可用,當第三方渠道出現異常時可以進行切換
  • 每條規則支援配置生效時間、失效時間,不需要進行蹲守進行變更操作
  • 規則調整支援熱插撥,而不是寫死在程式碼裡面,不需要重啟應用

路由系統,對於出款來說有路由系統就夠了,一般不涉及產品層面的改動;但是對於入款而言,則最好有產品層面的相應調整。

入款產品層面的設計將在後期給出,本篇先做鋪墊,大家也可以先行思考下。