支付系统整体设计:整体架构设计以及注意要点(三)
一般來說,銀行會提供兩種支付途徑:無跳轉(zhuǎn)的快捷支付接口和帶跳轉(zhuǎn)的網(wǎng)銀接口。前者在綁卡,支付的時候,不需要跳到銀行頁面上去處理,后者則需要在銀行的網(wǎng)銀頁面上完成。顯然前者對用戶來說體驗要好多了,用戶流程不會被打斷。快捷支付要求支付系統(tǒng)在本地保存用戶的支付信息,如卡號,登記手機。系統(tǒng)要確保這些信息不被泄漏。風(fēng)險非常好,所以大部分銀行要求接入方必須經(jīng)過ADSS檢驗才能夠接入快捷支付。
這種固定方式的接入有單點故障的問題,一旦某個渠道出問題,綁定的支付方式就無法使用。改進策略是為每個支付方式定義多個渠道,第一個渠道出問題即選擇第二個,以此類推。
當(dāng)然,更進一步,可以為候選渠道定義權(quán)重,按照權(quán)重來選擇支付方式。當(dāng)渠道出問題,自動調(diào)整權(quán)重。
路由實現(xiàn)上還會更復(fù)雜,對同一張銀行卡,運營上會要求在不同的系統(tǒng)上,比如android,iOS,windows上,或者不同地區(qū),如大陸,臺灣,香港,北美等,甚至不同業(yè)務(wù)上,采用不同渠道來支付。
支付渠道
如果采用微服務(wù)來實現(xiàn),整體設(shè)計上,可以考慮將支付渠道分離、支付網(wǎng)關(guān)前置分離。支付渠道的微服務(wù)實現(xiàn)有兩種策略,一種是按照服務(wù)來拆分,一種是按照渠道來拆分。
● 按渠道拆分,指每個渠道單獨部署在一個容器中,對支付網(wǎng)關(guān)提供相同的服務(wù)。
● 按服務(wù)拆分,是按接口來拆分,分為支付,對賬,退款等子系統(tǒng),每個服務(wù)單獨部署,所有容器的服務(wù)都實現(xiàn)在一起。
渠道拆分
按照服務(wù)來拆分的一個典型案例是大眾點評網(wǎng)的早期實現(xiàn)。 大眾點評支付渠道網(wǎng)關(guān)系統(tǒng)的實踐之路。 每個支付服務(wù)接口實現(xiàn)為一個獨立的子系統(tǒng),獨立部署,通過支付網(wǎng)關(guān)前置來對外提供服務(wù)。 這篇文章里面也提到這種方式存在的問題,
● 銀行的加密客戶端會有各種奇葩的需求,有些可以支持linux,有些要windows系統(tǒng),如何在一個容器中滿足所有需求?
● 這樣拆分后,每個渠道接口獨立部署。某個渠道出問題也不會影響其他渠道。至于渠道訪問量小導(dǎo)致資源浪費問題,可以通過虛機或者docker的資源調(diào)度來解決,誰也不會在物理機上玩微服務(wù)。
● 對接渠道難點在于對輸入輸出做加密和解密,以及組裝和解析報文。同一個渠道對不同的服務(wù)的加密解密方式是一樣的,報文格式也是一樣的。按渠道來構(gòu)建服務(wù)可以共用這樣方法,減少開發(fā)投入。
● 從安全的角度,按渠道劃分也有優(yōu)勢。一般渠道都要求只對接到特定ip的機器,這樣每個渠道對接系統(tǒng)所在的機器僅開放對渠道和支付網(wǎng)關(guān)前置機的訪問白名單即可,盡可能的縮減被暴露的風(fēng)險。
接入渠道
對于支付渠道,首先考慮的是接入哪些渠道。要對接的渠道按優(yōu)先級有:
●?第三方支付,對大部分應(yīng)用來說,支付寶和微信支付都是必須的,一般來說,這兩者可以占到90%以上的交易量。用戶不需要綁卡,授權(quán)后直接支付就行。各種平臺都支持,性能和穩(wěn)定性都不錯。對于一些特殊業(yè)務(wù),比如游戲,企業(yè)支付,可以查看一些專用的第三方支付平臺。
●?銀聯(lián),這貨的存在,極大方便了和銀行的對接。和第三方支付主要不同在兩個地方一是需要綁卡,也就是用戶先把卡號,手機,身份證號提供出來。這一步會折損不少用戶。綁卡后,以后的支付操作就簡單了,用戶只需要輸入密碼就行。手機客戶端不需要像第三方支付那樣安裝SDK,都在服務(wù)器端完成。當(dāng)然,這是針對快捷支付。網(wǎng)銀支付還是挺麻煩的。銀聯(lián)接入也需要ADSS認證。
●?銀行,建議先看這一篇文章,了解下對接銀行的難度。那最終需要選擇哪些銀行?先看個統(tǒng)計數(shù)據(jù)。 截至 2015 年底,我國銀行業(yè)金融機構(gòu)包括 5 家大型商業(yè)銀行、12 家股份制商業(yè)銀行、133 家城市商業(yè)銀行、5 家民營銀行、859 家農(nóng)村商業(yè)銀行、71 家農(nóng)村合作銀行、1373家農(nóng)村信用社、1 家郵政儲蓄銀行、3 家政策性銀行、 311 家村鎮(zhèn)銀行、48 家農(nóng)村資金互助社。優(yōu)先選擇5家商業(yè)銀行,他們占40%的交易量。其次是股份制銀行和郵儲。這就18家銀行了。老板要是不滿意,城商行和農(nóng)商行加起來有1000多家呢。一般對接一個銀行預(yù)計有3周左右的工作量,大部分銀行需要專線接入,費用和帶寬有關(guān),一年也得幾萬費用。不同銀行對接入環(huán)境有不同要求,這也是成本。另外,還有一個重大風(fēng)險,就是央行在搞得網(wǎng)聯(lián)系統(tǒng),畢竟還沒有出來,相關(guān)資料參考知乎上關(guān)于網(wǎng)聯(lián)的一篇討論。
●?手機支付,現(xiàn)在不少廠商都內(nèi)置了各種支付,比如蘋果的In-App支付, 三星支付、華為支付等, 這些支付僅針對特定的手機型號, 支持NFC等,根據(jù)業(yè)務(wù)需要也可以接入。 就是目前用戶群不大,收益不明顯。
●?話費支付, 這一塊容易被人忽略,但考慮到國內(nèi)不少職場人士,話費是公司報銷的,每個月多的用不完,所以這塊支付還是相當(dāng)有市場的。 問題是,聯(lián)通和移動兩大運營商,不僅接口不能互通,內(nèi)部各個地域也是各自為政,所以對接起來還是有點麻煩。不過話費支付領(lǐng)域也有類似支付寶微信的第三方支付公司,比如虹軟、聯(lián)動優(yōu)勢等公司。
這篇文章對支付系統(tǒng)整體設(shè)計做一個概要描述,后續(xù)會逐步補充內(nèi)容并完善。其實每個模塊都是一個大坑,有很多的技術(shù)細節(jié)。
轉(zhuǎn)載于:https://www.cnblogs.com/barrywxx/p/8522622.html
總結(jié)
以上是生活随笔為你收集整理的支付系统整体设计:整体架构设计以及注意要点(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 7从Python 2.7升
- 下一篇: Unix系统编程()main函数的命令行