金融支付系統(tǒng)架構(gòu)概述_第1頁
金融支付系統(tǒng)架構(gòu)概述_第2頁
金融支付系統(tǒng)架構(gòu)概述_第3頁
金融支付系統(tǒng)架構(gòu)概述_第4頁
金融支付系統(tǒng)架構(gòu)概述_第5頁
免費預(yù)覽已結(jié)束,剩余16頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 金融支付系統(tǒng)架構(gòu)概述支付系統(tǒng)是連接消費者、商家(或平臺)和金融機構(gòu)的橋梁,管理支付數(shù)據(jù),調(diào)用第三方支付平臺接口,記錄支付信息(對應(yīng)訂單號,支付金額等),金額對賬等功能,根據(jù)不同公司對于支付業(yè)務(wù)的定位不同大概有幾個階段:第一階段:支付作為一個(封閉)的、獨立的應(yīng)用系統(tǒng),為各系統(tǒng)提供支付功能支持。一般來說,這個系統(tǒng)僅限于為公司內(nèi)部的業(yè)務(wù)提供支付支持,并且和業(yè)務(wù)緊密耦合。第二階段:支付作為一個開發(fā)的系統(tǒng),為公司內(nèi)外部系統(tǒng)、各種業(yè)務(wù)提供支付服務(wù),支付服務(wù)本身應(yīng)該是和具體的業(yè)務(wù)解耦合。 支付是電商系統(tǒng)中核心 我們先來看一下用戶完成一次購物需要進行那些操作:通常消費者在手機APP或者網(wǎng)站都會涉及到支付相

2、關(guān)的業(yè)務(wù)場景,用戶只需要簡單點擊支付按鈕輸入支付密碼,就可以完成整個支付過程,那么我就和大家一起來看看一個完整的支付系統(tǒng)有什么功能組成和設(shè)計時需要考慮那些問題。01支付系統(tǒng)的作用從上圖中我們可以看出真實的資金流向。首先當(dāng)用戶產(chǎn)生支付行為時,資金從用戶端流向支付系統(tǒng),退款時則相反,從支付系統(tǒng)回流至用戶端。因此在整個交易過程中用戶端與支付系統(tǒng)是雙向資金的流動方式。對于支付系統(tǒng)而言,資金有進有出。從支付系統(tǒng)到商戶端就比較簡單了,在清算完成后支付系統(tǒng)負責(zé)將代收的資金結(jié)算給商戶,通常結(jié)算的操作可以在線上來完成(采用支付公司代付接口或者銀企直連接口來完成),也可以由公司財務(wù)通過線下手工轉(zhuǎn)賬的方式來完成,因

3、此這種資金流動的方式是單向的。出于資金安全考慮,大多數(shù)公司通常這部分采用線下方式實現(xiàn)。真實的資金流由支付公司按照約定期限(通常 T+1 )結(jié)算到平臺公司對公賬戶中,然后再由平臺公司再按照交易明細進行二次清算后結(jié)算給對應(yīng)的商戶。支付系統(tǒng)一個支付系統(tǒng)需要由哪些功能模塊組成01 完整的支付系統(tǒng)包括如下功能:應(yīng)用管理: 同時支持公司多個業(yè)務(wù)系統(tǒng)對接。商戶管理: 支持商戶入駐,商戶需要向平臺方提供相關(guān)的資料備案。渠道管理: 支持微信、支付寶、銀聯(lián)、京東支付等多種渠道。賬戶管理: 渠道賬戶管理,支持共享賬戶(個人商戶)及自有賬戶。支付交易: 生成預(yù)支付訂單、提供退款服務(wù)。對賬管理: 實現(xiàn)支付系統(tǒng)的交易數(shù)據(jù)

4、與第三方支付渠道交易明細的自動核對(通常T+1),確保交易數(shù)據(jù)的準確性和一致性。清算管理: 計算收款交易中商戶的應(yīng)收與支付系統(tǒng)收益。結(jié)算管理: 根據(jù)清算結(jié)果,將資金劃撥至商戶對應(yīng)的資金帳戶中。02 核心流程支付系統(tǒng)有幾個關(guān)鍵的核心流程:支付流程、對賬流程、結(jié)算流程支付流程支付流程說明用戶在商城選購商品并發(fā)起支付請求;商城將支付訂單通過B2C網(wǎng)關(guān)收款接口傳送至支付網(wǎng)關(guān);用戶選擇網(wǎng)銀支付及銀行,支付平臺將訂單轉(zhuǎn)送至指定銀行網(wǎng)關(guān)界面;用戶支付完成,銀行處理結(jié)果并向平臺返回處理結(jié)果;支付平臺接收處理結(jié)果,落地處理并向商戶返回結(jié)果;商城接收到支付公司返回結(jié)果,落地處理(更改訂單狀態(tài))并通知用戶。一般而言

5、支付系統(tǒng)會給商戶設(shè)置有“可用余額”賬戶、“待結(jié)算”賬戶;系統(tǒng)在接收到銀行返回支付成功信息會進行落地處理,一方面更改對應(yīng)訂單狀態(tài),另一方面在商戶待結(jié)算賬戶記入一筆金額;該筆金額,系統(tǒng)會根據(jù)結(jié)算周期從待結(jié)算賬戶“可用余額”賬戶。退款流程說明用戶在商戶平臺發(fā)起退款申請,商戶核實退款信息及申請;商戶登錄支付平臺賬戶/或者通過支付公司提供的退款接口向支付平臺發(fā)起退款;支付系統(tǒng)會對退款信息校驗(退款訂單對應(yīng)的原訂單是否支付成功?退款金額是否少于等于原訂單金額?),校驗商戶賬戶余額是否充足等;校驗不通過,則無法退款;支付系統(tǒng)在商戶可用余額賬戶扣除金額,并將退款訂單發(fā)送至銀行,銀行完成退款操作。注意:對于網(wǎng)關(guān)

6、收款的訂單退款,各銀行要求不一,有些銀行提供的退款接口要求原訂單有效期在90或180天,有些銀行不提供退款接口;針對超期或者不支持接口退款的訂單,支付公司通過代付通道完成退款操作。對于收單金額未結(jié)算,還在“待結(jié)算”賬戶的訂單,如果出現(xiàn)退款情況,業(yè)務(wù)流程和上述流程差不多,只是從待結(jié)算賬戶進行扣款。對賬流程說明 對賬,我們一般稱為勾兌,支付系統(tǒng)的對賬,包含著兩個層面:支付系統(tǒng)內(nèi)部間的對賬,支付系統(tǒng)一般是分布式的,整個支付系統(tǒng)被拆分成了多個子系統(tǒng),如交易系統(tǒng)、賬戶系統(tǒng)、會計系統(tǒng)、賬戶系統(tǒng),每個子系統(tǒng)在處理各自的業(yè)務(wù),系統(tǒng)間的對賬,就是以上系統(tǒng)的核對,用于修正內(nèi)部系統(tǒng)的數(shù)據(jù)不一致。支付系統(tǒng)與渠道的對賬

7、,這里的渠道泛指所有為支付系統(tǒng)提供代收付業(yè)務(wù)的渠道,如:第三方支付公司、銀行、清算中心、網(wǎng)聯(lián)、銀聯(lián)等。支付系統(tǒng)與渠道間的對賬系統(tǒng)間的對賬比較好理解,這里主要講支付系統(tǒng)與渠道間的對賬。支付系統(tǒng)與渠道間的對賬,又包含2個維度:信息流勾對:即業(yè)務(wù)對賬交易對賬,主要是就收單交易的支付信息與銀行提供的信息流文件進行勾兌。信息流的勾地能發(fā)現(xiàn)支付系統(tǒng)與銀行系統(tǒng)間的掉單、兩邊由于系統(tǒng)間的原因?qū)е碌耐还P交易支付金額不一致(可能性很小)或者支付狀態(tài)不一致。信息流勾兌一般用來恢復(fù)掉單數(shù)據(jù),可通過補單或者具體系統(tǒng)問題排查解決。資金流勾對:即資金對賬,主要就收單交易的支付信息與銀行提供的資金流信息進行勾兌。資金流的勾

8、兌能發(fā)現(xiàn)支付系統(tǒng)在銀行的帳戶資金實際發(fā)生的變動與應(yīng)該發(fā)生的變動的差異,比如長款(銀行多結(jié)算給支付系統(tǒng))和短款(銀行少結(jié)算給支付系統(tǒng))。說了這么多,就出現(xiàn)來4個對賬文件,支付系統(tǒng)信息流文件、支付系統(tǒng)資金流文件、銀行信息流文件、銀行資金流文件。業(yè)務(wù)對賬(勾兌)就是支付系統(tǒng)的信息流文件與銀行的信息流文件勾兌,資金對賬即支付系統(tǒng)的資金流文件與銀行的資金流文件勾兌。核對的差異處理1、信息流勾對的差異處理支付系統(tǒng)信息流沒有,而銀行有的差異,可能是因為支付系統(tǒng)交易數(shù)據(jù)的丟失、銀行的掉單,如果是銀行的掉單,由支付公司的運營登錄銀行網(wǎng)銀確認后,做補單處理,并將差異表中該記錄核銷。支付系統(tǒng)信息流有,而銀行沒有的差

9、異,此種情況一般不會發(fā)生,因為支付系統(tǒng)所有的交易數(shù)據(jù)都是取銀行返回狀態(tài)的數(shù)據(jù)。2、資金流勾對對差異處理支付系統(tǒng)資金流沒有,而銀行有的差異。可能原因如下:1、銀行日切晚與支付系統(tǒng)核心賬務(wù)系統(tǒng);2、支付系統(tǒng)賬務(wù)核心系統(tǒng)與其他系統(tǒng)間的掉單。一旦出現(xiàn),則會出現(xiàn)長款(即銀行不應(yīng)該結(jié)算而實際結(jié)算)的現(xiàn)象,對于因日切導(dǎo)致的差異,在第二天的對賬中系統(tǒng)會對平,其他原因的,需要技術(shù)排查。支付系統(tǒng)資金流有,而銀行沒有的差異,可能是因為銀行日切早于支付系統(tǒng)的核心賬務(wù)系統(tǒng),一旦出現(xiàn),會出現(xiàn)短款(銀行應(yīng)結(jié)算而實際未結(jié)算)的現(xiàn)象,銀行日切導(dǎo)致段差異,會在下一天與銀行的勾對中,將此筆差異勾對上,如果是非日切導(dǎo)致的原因,就需要

10、找銀行追款了。總結(jié)就是,業(yè)務(wù)對賬,即信息流對賬,支付系統(tǒng)的交易流水與銀行的交易流水間核對,保障支付交易完整入賬。資金對賬,即資金流對賬,支付系統(tǒng)的入賬流水與銀行的結(jié)算流水間核對,保障銀行入賬流水與實際入賬資金的匹配。結(jié)算流程在清結(jié)算部分,系統(tǒng)按照設(shè)定好的清結(jié)算規(guī)則自動將錢款結(jié)算給商戶。完善的運營會計體系幫助財務(wù)進行精細化核算,提高財務(wù)效率。與支付渠道自動進行對賬,確保賬務(wù)正確,在異常情況下能及時定位問題并處理。系統(tǒng)更是能對商戶進行個性化的費率配置或賬期配置,方便靈活。系統(tǒng)的價值不僅體現(xiàn)在支付清結(jié)算方面,同時更是提升了運營管理效率。支付清結(jié)算系統(tǒng)可以有效幫助運營、財務(wù)、開發(fā)以及管理人員。對于運營

11、人員,系統(tǒng)可幫助處理平臺的運營工作,包括各類支付管理,商戶、會員管理,營銷活動的數(shù)據(jù)統(tǒng)計等,全面提高運營效率。針對財務(wù)人員,可以協(xié)助完成資金對賬、會計處理,出入款管理,賬務(wù)差錯處理等,大部分工作由系統(tǒng)自動處理,減少人工處理,提高資金處理效率。一套靈活便捷的配置后臺供開發(fā)人員快速調(diào)整系統(tǒng)以適應(yīng)新的業(yè)務(wù),并能方便對系統(tǒng)進行維護,如渠道接入、費率配置、賬期調(diào)整等,提高開發(fā)效率。系統(tǒng)提供資金流轉(zhuǎn)過程中各個環(huán)節(jié)的數(shù)據(jù),能夠從各個維度進行核算和分析,形成對管理人員的決策支持,從而提高決策效率。03 關(guān)鍵表設(shè)計04 支付系統(tǒng)要點在支付系統(tǒng)中,支付網(wǎng)關(guān)和支付渠道的對接是最繁瑣重要的功能之一,其中支付網(wǎng)關(guān)是對外

12、提供服務(wù)的接口,所有需要渠道支持的資金操作都需要通過網(wǎng)關(guān)分發(fā)到對應(yīng)的渠道模塊上。一旦定型,后續(xù)就很少,也很難調(diào)整。而支付渠道模塊是接收網(wǎng)關(guān)的請求,調(diào)用渠道接口執(zhí)行真正的資金操作。每個渠道的接口,傳輸方式都不盡相同,所以在這里,支付網(wǎng)關(guān)相對于支付渠道模塊的作用,類似設(shè)計模式中的wrapper,封裝各個渠道的差異,對網(wǎng)關(guān)呈現(xiàn)統(tǒng)一的接口。而網(wǎng)關(guān)的功能是為業(yè)務(wù)提供通用接口,一些和渠道交互的公共操作,也會放置到網(wǎng)關(guān)中。支付系統(tǒng)對其他系統(tǒng),特別是交易系統(tǒng),提供的支付服務(wù)包括簽約,支付,退款,充值,轉(zhuǎn)帳,解約等。有些地方還會額外提供簽約并支付的接口,用于支持在支付過程中綁卡。 每個服務(wù)實現(xiàn)的流程也是基本類似

13、,包括下單,取消訂單,退單,查單等操作。每個操作實現(xiàn),都包括參數(shù)校驗,支付路由,生成訂單,風(fēng)險評估,調(diào)用渠道服務(wù),更新訂單和發(fā)送消息這7步,對于一些比較復(fù)雜的渠道服務(wù),還會涉及到異步同通知處理的步驟。01 網(wǎng)關(guān)前置支付網(wǎng)關(guān)前置是對接業(yè)務(wù)系統(tǒng),為其提供支付服務(wù)的模塊。它是所有支付服務(wù)接口的集成前置,將不同支付渠道提供的接口通過統(tǒng)一的方式呈現(xiàn)給業(yè)務(wù)方。這樣接入方就只需要對接支付網(wǎng)關(guān),增加和調(diào)整支付渠道對業(yè)務(wù)方是透明的。 支付網(wǎng)關(guān)前置的設(shè)計對整個支付系統(tǒng)的穩(wěn)定性、功能、性能以及其他非功能性需求有著直接的影響。在支付網(wǎng)關(guān)中需要完成大量的操作,為了保證性能,這些操作都盡量異步化來處理。支付網(wǎng)關(guān)前置應(yīng)保持

14、穩(wěn)定,盡量減少系統(tǒng)重啟等操作對業(yè)務(wù)方的影響。支付網(wǎng)關(guān)也避免不了升級和重啟。這可通過基于Nginx的LBS(Load Balance System)網(wǎng)關(guān)來解決。LBS在這里有兩個作用: 一個是實現(xiàn)負載均衡,一個是隔離支付網(wǎng)關(guān)重啟對調(diào)用的影響。 支付網(wǎng)關(guān)也采用多臺機器分布式部署,重啟時,每個服務(wù)器逐個啟動。某臺服務(wù)器重啟時,首先從LBS系統(tǒng)中取消注冊,重啟完成后,再重新注冊到LBS上。這個過程對調(diào)用方是無感知的。為了避免接口受攻擊,在安全上,還得要求業(yè)務(wù)方通過HTTPS來訪問接口,并提供防篡改機制。防篡改則通過接口參數(shù)簽名來處理。現(xiàn)在主流的簽名是對接口參數(shù)按照參數(shù)名稱排序后,做加密和散列,參考微信

15、的簽名規(guī)范。02 參數(shù)校驗所有的支付操作,都需要對輸入執(zhí)行參數(shù)校驗,避免接口受到攻擊。驗證輸入?yún)?shù)中各字段的有效性驗證,比如用戶ID,商戶ID,價格,返回地址等參數(shù)。驗證賬戶狀態(tài)。交易主體、交易對手等賬戶的狀態(tài)是處于可交易的狀態(tài)。驗證訂單:如果涉及到預(yù)單,還需要驗證訂單號的有效性,訂單狀態(tài)是未支付。為了避免用戶緩存某個URL地址,還需要校驗下單時間和支付時間是否超過預(yù)定的間隔。驗證簽名。簽名也是為了防止支付接口被偽造。 一般簽名是使用分發(fā)給商戶的key來對輸入?yún)?shù)拼接成的字符串做MD5 Hash或者RSA加密,然后作為一個參數(shù)隨其他參數(shù)一起提交到服務(wù)器端。03 路由選擇根據(jù)用戶選擇的支付方式確

16、定用來完成該操作的合適的支付渠道。用戶指定的支付方式不一定是最終的執(zhí)行支付的渠道。比如用戶選擇通過工行信用卡來執(zhí)行支付,但是我們沒有實現(xiàn)和工行的對接,而是可以通過第三方支付,比如支付寶、微信支付、易寶支付,或者銀聯(lián)來完成。那如何選擇合適的支付渠道,就通過支付路由來實現(xiàn)。支付路由會綜合考慮收費、渠道的可用性等因素來選擇最優(yōu)方案.04 風(fēng)險評估檢查本次交易是否有風(fēng)險。風(fēng)控接口返回三種結(jié)果:阻斷交易、增強驗證和放行交易。阻斷交易,說明該交易是高風(fēng)險的,需要終止,不執(zhí)行第5個步驟;增強驗證,說明該交易有一定的風(fēng)險,需要確認下是不是用戶本人在操作。這可以通過發(fā)送短信驗證碼或者其他可以驗證用戶身份的方式來

17、做校驗,驗證通過后,可以繼續(xù)執(zhí)行該交易。放行交易,即本次交易是安全的,可以繼續(xù)往下走。05 發(fā)送消息通過消息來通知相關(guān)系統(tǒng)關(guān)于訂單的變更。風(fēng)控,信用BI等,都需要依賴這數(shù)據(jù)做準實時計算。06 更新訂單對于同步返回的結(jié)果,需要在主線程中更新訂單的狀態(tài),標(biāo)記是支付成功還是失敗。對于異步返回的渠道,需要在異步程序中處理。07 異步通知其中涉及到調(diào)用遠程接口,其延遲不可控。如果調(diào)用方一直阻塞等待,很容易超時。引入異步通知機制,可以讓調(diào)用方在主線程中盡快返回,通過異步線程來得到支付結(jié)果。對于通過異步來獲取支付結(jié)果的渠道接口,也需要對應(yīng)的在異步通知中將結(jié)果返回給調(diào)用方。 異步通知需要調(diào)用方提供一個回調(diào)地址

18、,一般以http或者https的方式。這就有技術(shù)風(fēng)險,如果調(diào)用失敗,還需要重試。而重試不能過于頻繁,需要逐步拉大每一次重試的時間間隔。 在異步處理程序中,訂單根據(jù)處理結(jié)果變更狀態(tài)后,也要發(fā)消息通知相關(guān)系統(tǒng)。08 生成交易訂單將訂單信息持久化到數(shù)據(jù)庫中。當(dāng)訪問壓力大的時候,數(shù)據(jù)庫寫入會成為一個瓶頸。09 交易流水和記賬每一筆交易都需要記錄流水,并登記到個人和機構(gòu)的分戶賬戶上,統(tǒng)計和分析也需要根據(jù)交易流水來更新相關(guān)數(shù)據(jù)。 而個人和機構(gòu)賬戶總額更新、交易流水記錄以及庫存的處理,更是需要事務(wù)處理機制的支持。 從性能角度, 可以弱化了事務(wù)處理的要求,采用消息機制來異步化和交易相關(guān)的數(shù)據(jù)處理。在支付網(wǎng)關(guān)前

19、置的主流程中,僅記錄交易流水,即將當(dāng)前的請求保存到數(shù)據(jù)庫中。完成數(shù)據(jù)記錄后,發(fā)送MQ出來,記賬、統(tǒng)計、分析,都是接收MQ來完成數(shù)據(jù)處理。涉及到本地資金支付,比如錢包支付,會需要分布式事務(wù)處理,扣減賬號余額,記賬,扣減庫存等,每個操作失敗,都要回滾。阿里有很不錯的分享,這里不詳細描述。當(dāng)交易量上來后,需要考慮交易表的分表分庫的事情。分表分庫有兩個策略,按照流水號或者交易主體id來走。后者可以支持按用戶來獲取交易記錄。我們用的是前者。后者可以走elastic,確保數(shù)據(jù)庫專用。風(fēng)控,信用和統(tǒng)計所需要的數(shù)據(jù),通過MQ同步到歷史庫里面。作為支付系統(tǒng)最有價值的數(shù)據(jù),在存儲上做到專庫專用,無可厚非,畢竟存儲

20、成本還是廉價的。10 支付路由支付路由是一個復(fù)雜的話題。對支付系統(tǒng)來說,能支持的支付方式越多越好,不能由于支付方式的不支持斷了財路。現(xiàn)實中的支付方式多得難以置信。用戶隨時甩出一張你聽都沒聽說過的卡。如果一個銀行卡只有幾個用戶在用,那針對這個卡開發(fā)個對接有點得不嘗失。現(xiàn)在第三方支付的爆發(fā),確實給開發(fā)支付系統(tǒng)省了不少事。但是公司不可能只對接一個第三方支付,如果這個渠道出問題了,或者鬧矛盾了,把鏈接給掐了,老板還不欲哭無淚。總之,得對接多個渠道。對于交易量大的銀行,還得考慮直聯(lián)。11 渠道接入對于支付渠道,首先考慮的是接入哪些渠道。要對接的渠道按優(yōu)先級有:第三方支付,對大部分應(yīng)用來說,支付寶和微信支付都是必須的,一般來說,這兩者可以占到90%以上的交易量。用戶不需要綁卡,授權(quán)后直接支付就行。各種平臺都支持,性能和穩(wěn)定性都不錯。對于一些特殊業(yè)務(wù),比如游戲,企業(yè)支付,可以查看一些專用的第三方支付平臺。銀聯(lián),它的存在,極大方便了和銀行的對接。和第三方支付主要不同在兩個地方一是需要綁卡,也就是用戶先把卡號,手機,身份證號提供出來。這一步會折損不少用戶。綁卡后,以后的支付操作就簡單了,用戶只需要輸入密碼就行。手機客戶端不需要像第三方支付那樣安裝SDK,都在服務(wù)器端完成。當(dāng)然,這是針對快捷支付。網(wǎng)銀支付還是挺麻煩的。銀聯(lián)接入也需要ADSS認證。銀行:201

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論