從零打造聚合支付系統(tǒng):二古程、建立領(lǐng)域模型

從零打造聚合支付系統(tǒng) 系列文章鏈接如下

從零打造聚合支付系統(tǒng):一煎殷、淺談聚合支付的核心價(jià)值
從零打造聚合支付系統(tǒng):二屯伞、建立領(lǐng)域模型
從零打造聚合支付系統(tǒng):三、應(yīng)用微服務(wù)架構(gòu)
從零打造聚合支付系統(tǒng):四豪直、打通任督二脈

上一篇分析了聚合支付為什么能做劣摇,本篇開始講講聚合支付系統(tǒng)怎么入手。

前言

在針對(duì)特定業(yè)務(wù)進(jìn)行分析設(shè)計(jì)時(shí)弓乙,首要的事情便是建立業(yè)務(wù)模型(又稱領(lǐng)域模型)末融。

領(lǐng)域模型,通常是業(yè)務(wù)人員與軟件工程師溝通的橋梁暇韧。

為了避免陷入專業(yè)名詞的泥沼中勾习,我并不打算運(yùn)用嚴(yán)格的領(lǐng)域模型語言來描述聚合支付系統(tǒng)的分析設(shè)計(jì)。盡管如此懈玻,但建模的思路的做法依然重要巧婶。

關(guān)于領(lǐng)域建模的重要性及基本原則,Eric Evans大神在《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)——軟件核心復(fù)雜性應(yīng)對(duì)之道》一書中有詳細(xì)闡述涂乌,有興趣的小伙伴可以閱讀的第一部分粹舵。

系統(tǒng)功能

上一篇中介紹過,聚合支付是為商戶提供支付“一站式”的服務(wù)骂倘。

聚合支付系統(tǒng)位于商戶與支付機(jī)構(gòu)或銀行之間,收斂商戶與支付機(jī)構(gòu)及銀行間的一切交互巴席。

一個(gè)聚合支付系統(tǒng)历涝,首先要具備支付、查詢漾唉、退款三個(gè)基本功能荧库,對(duì)應(yīng)用戶使用支付的三種基本操作;其次赵刑,為了確保各方交易記錄一致分衫,通常要以天為單位對(duì)賬,實(shí)現(xiàn)業(yè)務(wù)閉環(huán)般此;最后蚪战,根據(jù)對(duì)賬結(jié)果牵现,定期完成資金結(jié)算。

模塊劃分

建立一個(gè)最小的聚合支付系統(tǒng)邀桑,至少應(yīng)具備以下三個(gè)模塊(或子系統(tǒng)):

  • 核心支付模塊:完成支付瞎疼、查詢、退款三個(gè)基本功能壁畸,此三個(gè)功能屬于實(shí)時(shí)調(diào)用贼急,需要立即返回結(jié)果。每次調(diào)用傳遞的信息包含一個(gè)訂單捏萍。
  • 對(duì)賬結(jié)算模塊:對(duì)賬是每天定時(shí)執(zhí)行太抓,需要將前一天的交易批量下載或上傳,并進(jìn)行比對(duì)令杈;清分結(jié)算則是匯總對(duì)賬結(jié)果走敌,并將結(jié)果提交給會(huì)計(jì)系統(tǒng)或銀行。
  • 商戶管理模塊:商戶需要在聚合支付系統(tǒng)注冊(cè)这揣,需要申請(qǐng)接入悔常,需要查詢交易,需要下載配置信息等必要功能给赞。因此机打,需要此模塊實(shí)現(xiàn)與商戶間的交互,傳遞一些必要的信息片迅,這是三個(gè)模塊中唯一一個(gè)需要用戶界面的模塊残邀。

核心支付模型

接口信息

由上面圖可以看出,支付和退款是由商戶主動(dòng)發(fā)起的柑蛇。商戶調(diào)用接口時(shí)芥挣,實(shí)際上發(fā)送的是訂單信息(涉及支付的信息),聚合支付系統(tǒng)為其生成相應(yīng)的支付信息和退款信息耻台。

  • 訂單信息:商戶ID空免,訂單號(hào),商品名稱盆耽,商品描述蹋砚,訂單金額,支付方式摄杂,回調(diào)地址坝咐;
  • 支付信息:支付流水號(hào),支付金額析恢,支付結(jié)果墨坚,結(jié)算日期;
  • 退款信息:退款流水號(hào)映挂,退款金額泽篮,退款結(jié)果盗尸,結(jié)算日期;


退款信息中包含退款金額咪辱,是由于實(shí)際支付中存在部分退款的需求(比如購買兩件東西有一件退款)

支付流程

上一篇中介紹過振劳,聚合支付首要解決是支付的“碎片化”的市場(chǎng)痛點(diǎn)。

為了吸引更多的商戶接入油狂,努力讓商戶接入變得更簡(jiǎn)單历恐。做一個(gè)產(chǎn)品歷來有Less Is More的設(shè)計(jì)原則。所以在設(shè)計(jì)支付流程時(shí)专筷,應(yīng)盡可能讓流程看起來簡(jiǎn)單易懂弱贼。

比如Ping++主頁上標(biāo)語的,“七行代碼接入聚合支付”磷蛹。 這看起來非常有吸引力吮旅。

通過仔細(xì)研究,市面上常用的支付手段味咳,其背后的流程庇勃,只有兩種。

  • 第一種我稱之為授權(quán)支付:用戶首先需要通過商戶后臺(tái)到支付機(jī)構(gòu)申請(qǐng)支付授權(quán)槽驶,然后使用授權(quán)碼(通常是一個(gè)類似于Token的串)調(diào)起支付功能责嚷,最后在輸入密碼完成支付。這種支付方式流程如下掂铐,常見的APP支付罕拂、PC網(wǎng)頁支付、手機(jī)掃碼支付等支付方式都適用此流程全陨。

需要先授權(quán)再支付爆班,主要是因?yàn)樯唐酚嗁彽慕缑妫ㄓ缮虘籼峁┡c支付操作界面(由支付機(jī)構(gòu)提供)不屬于同個(gè)界面,或者不在同個(gè)APP中辱姨,甚至不在同一臺(tái)設(shè)備上柿菩。

  • 另一種我稱之為直接支付:用戶將帶有自己身份信息的一個(gè)信息串,通過商戶發(fā)送到支付機(jī)構(gòu)雨涛,商戶在發(fā)送過程中加上訂單和支付信息枢舶,直接完成支付。常見的線下購物刷卡支付镜悉,掃碼槍掃條碼支付都適用此流程。

與需要授權(quán)的原因相反医瘫,無需授權(quán)操作侣肄,是因?yàn)椴恍枰诓煌缑嫔蟻砘靥D(zhuǎn)。線下購物通常是如此醇份。

查詢與退款流程

查詢與退款由于完全是后臺(tái)請(qǐng)求稼锅,因此流程相對(duì)來說則簡(jiǎn)單些吼具。

通常來說退款并不能立即確定成功或失敗,因此大部分機(jī)構(gòu)都是采用異步通知的方式告知退款結(jié)果矩距。

對(duì)賬結(jié)算模型

對(duì)賬模式

對(duì)賬模塊會(huì)每天定時(shí)將前一天的多方交易記錄下載拗盒,并進(jìn)行比對(duì),以確保各方記錄一致锥债。

聚合支付系統(tǒng)對(duì)賬有兩種模式陡蝇,一種是由商戶主動(dòng)上傳記錄的,另一種是商戶不上傳交易記錄哮肚。其差別如下登夫。

對(duì)比項(xiàng) 商戶上傳交易記錄 商戶不上傳交易記錄
對(duì)賬內(nèi)容 將商戶交易記錄與支付機(jī)構(gòu)的記錄進(jìn)行比對(duì) 將聚合支付系統(tǒng)的交易記錄與支付機(jī)構(gòu)的記錄進(jìn)行比對(duì)
對(duì)賬范圍 可以比對(duì)成功交易與失敗交易 只能比對(duì)成功交易
適用商戶 有一定研發(fā)能力,且對(duì)一致性要求較高的大商戶 無研發(fā)能力或不愿意投入開發(fā)成本的
其它 可及時(shí)發(fā)現(xiàn)系統(tǒng)問題(如交易丟失允趟、信息錯(cuò)誤等)恼策,但需要實(shí)現(xiàn)上傳記錄的接口,有后期投入的成本 全權(quán)委托聚合支付系統(tǒng)做對(duì)賬潮剪,不需要后期投入

結(jié)算賬戶模型

根據(jù)監(jiān)管部門要求涣楷,聚合支付通常要避免“二清”問題。即不允許聚合支付機(jī)構(gòu)在沒有相應(yīng)資質(zhì)的前提下抗碰,先代商戶收錢狮斗,再將分給各個(gè)商戶。

資金結(jié)算要交給有相應(yīng)資質(zhì)的機(jī)構(gòu)來完成改含,一般會(huì)委托給銀行來完成情龄。

為了保證在銀行系統(tǒng)中各個(gè)賬戶中的結(jié)算金額可靠,遇到不一致時(shí)可追溯錯(cuò)誤捍壤,因此骤视,需要在對(duì)賬結(jié)算模塊內(nèi)建立一套虛擬賬戶體系,與銀行系統(tǒng)中的賬戶一一對(duì)應(yīng)(做同步)鹃觉。

關(guān)于如何建闕金融賬戶體系专酗,可以參考此篇文章《金融結(jié)算系統(tǒng)的基礎(chǔ)業(yè)務(wù)之賬戶體系結(jié)構(gòu)分析》

由于聚合支付系統(tǒng)并不是真的要建立一套完整的賬戶體系,其目的只是與外部系統(tǒng)的賬戶保持同步而己盗扇,因此祷肯,可將賬戶體系精簡(jiǎn)如下。

圖中有如下要點(diǎn):

  • 由于可能存在分潤疗隶,一筆交易可能按規(guī)則記入多個(gè)賬戶佑笋,因此,交易記錄(相當(dāng)于憑證)與賬戶明細(xì)(收支)是一對(duì)多的關(guān)系斑鼻。
  • 余額由于有期初與期末的概念蒋纬,如果每期做一條記錄,則一個(gè)賬戶根據(jù)時(shí)間不同可能有多條余額記錄,因此賬戶與余額也是一對(duì)多的關(guān)系蜀备。

總結(jié)

至此关摇,搭建一個(gè)最小聚合支付系統(tǒng)的領(lǐng)域模型已經(jīng)基本完成,以上的知識(shí)己經(jīng)足夠一個(gè)從未涉足支付領(lǐng)域的開發(fā)人員進(jìn)行設(shè)計(jì)和開發(fā)了碾阁。

領(lǐng)域建模的精髓在于输虱,模型本身是發(fā)展的,隨著對(duì)業(yè)務(wù)理解的深入和業(yè)務(wù)需求的變化脂凶, 模型也會(huì)隨之進(jìn)行變更宪睹,逐漸變的完善。

與此同時(shí)艰猬,還要注意輸出模型要可落地横堡。例如,以上的分析夾雜了一些面向?qū)ο蚍治龅氖址ü谔遥虼瞬贿m合采非面向?qū)ο蟮恼Z言來實(shí)現(xiàn)命贴。

在后面的文章中,我會(huì)詳細(xì)地描述如何應(yīng)用微服務(wù)架構(gòu)將系統(tǒng)一步步實(shí)現(xiàn)食听,以及討論為什么要使用微服務(wù)架構(gòu)胸蛛。請(qǐng)看下文。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末樱报,一起剝皮案震驚了整個(gè)濱河市葬项,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迹蛤,老刑警劉巖民珍,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盗飒,居然都是意外死亡嚷量,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門逆趣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝶溶,“玉大人,你說我怎么就攤上這事宣渗《端” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵痕囱,是天一觀的道長田轧。 經(jīng)常有香客問我,道長鞍恢,這世上最難降的妖魔是什么傻粘? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任巷查,我火速辦了婚禮,結(jié)果婚禮上抹腿,老公的妹妹穿的比我還像新娘。我一直安慰自己旭寿,他們只是感情好警绩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盅称,像睡著了一般肩祥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缩膝,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天混狠,我揣著相機(jī)與錄音,去河邊找鬼疾层。 笑死将饺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痛黎。 我是一名探鬼主播予弧,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼湖饱!你這毒婦竟也來了掖蛤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤井厌,失蹤者是張志新(化名)和其女友劉穎蚓庭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仅仆,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡器赞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝇恶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拳魁。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撮弧,靈堂內(nèi)的尸體忽然破棺而出潘懊,到底是詐尸還是另有隱情,我是刑警寧澤贿衍,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布授舟,位于F島的核電站,受9級(jí)特大地震影響贸辈,放射性物質(zhì)發(fā)生泄漏释树。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奢啥。 院中可真熱鬧秸仙,春花似錦、人聲如沸桩盲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赌结。三九已至捞蛋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柬姚,已是汗流浹背拟杉。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留量承,地道東北人搬设。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像撕捍,于是被迫代替她去往敵國和親焕梅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 從零打造聚合支付系統(tǒng) 系列文章鏈接如下 從零打造聚合支付系統(tǒng):一、淺談聚合支付的核心價(jià)值從零打造聚合支付系統(tǒng):二阀蒂、...
    船前幾度寄芳心閱讀 7,323評(píng)論 0 28
  • 互聯(lián)網(wǎng)支付系統(tǒng)整體架構(gòu)詳解 在互聯(lián)網(wǎng)產(chǎn)品運(yùn)營中该窗,有很多小伙伴或許會(huì)遇到這樣的困擾:產(chǎn)品好不容易推出來了,流量成本節(jié)...
    尹興飛閱讀 2,308評(píng)論 1 39
  • 《非銀行支付機(jī)構(gòu)網(wǎng)絡(luò)支付業(yè)務(wù)管理辦法》條款釋義 - 中國支付網(wǎng) - 中國支付行業(yè)第一門戶網(wǎng)站2016年7月1日...
    菜菜苔閱讀 7,561評(píng)論 1 44
  • 1年輕人要有些理想主義蚤霞,但要有現(xiàn)實(shí)的做事方法酗失。 2學(xué)會(huì)分析問題的技巧 3資源整合(做平臺(tái))和資源創(chuàng)造(做產(chǎn)品)同樣...
    Eric小風(fēng)閱讀 206評(píng)論 0 0
  • 昨天如愿以償?shù)某缘搅诵男哪钅畹幕疱仭?約了三五好友一起吃吃喝喝规肴,聊聊天,我覺得生活中的不開心也煙消云散了夜畴。 開心的...
    越來悅幸福閱讀 187評(píng)論 0 0