支付系統(tǒng)設(shè)計(jì):支付系統(tǒng)的賬戶模型(一)

賬戶體系是支付系統(tǒng)的基礎(chǔ),它的設(shè)計(jì)直接影響整個(gè)系統(tǒng)的特性。這里探討如何針對(duì)電子商務(wù)系統(tǒng)的支付賬戶體系設(shè)計(jì)。我們從一些基本概念開(kāi)始入手,了解怎么建模。
支付賬戶和登錄賬號(hào)
賬戶體系設(shè)計(jì)首先要區(qū)分兩個(gè)概念,支付賬戶和登錄賬號(hào)。 這是兩個(gè)不同業(yè)務(wù)領(lǐng)域的概念:支付賬戶指用戶在支付系統(tǒng)中用于交易的資金所有者權(quán)益的憑證;登錄賬號(hào) 指用戶在系統(tǒng)中的登錄的憑證和個(gè)人信息。 一個(gè)用戶可以有多個(gè)登錄賬戶,一個(gè)登錄賬戶可以有多個(gè)支付賬戶,比如零錢賬戶,儲(chǔ)值卡賬戶等。 一般來(lái)說(shuō),支付賬戶不會(huì)在多個(gè)登錄賬戶之間共用。如果沒(méi)有特殊說(shuō)明,下文中的賬戶,都默認(rèn)指支付賬戶。
賬戶的設(shè)計(jì)需求
在支付系統(tǒng)中,賬戶的設(shè)置,主要是從如下幾個(gè)方面來(lái)考慮:
- 交易的需求,比如檢查賬戶是否被鎖定、余額是否足夠、是否有效等。
- 記賬的需求,按照公司會(huì)計(jì)需求記錄賬戶上的所有行為,包括支出、充值、轉(zhuǎn)賬等。
- 對(duì)賬的需求,包括和支付渠道、商戶、個(gè)人的對(duì)賬需求,核對(duì)交易和賬戶余額是否正確。
- 風(fēng)控的需求,如反洗錢、反欺詐等,都需要依賴于賬戶體系來(lái)提供核心數(shù)據(jù)。本文暫不分析這個(gè)內(nèi)容,將在《支付風(fēng)控》、《支付反洗錢》這兩篇文章中詳細(xì)分析
- 信用的需求,對(duì)用戶、資產(chǎn)、商戶等主體進(jìn)行信用評(píng)估時(shí),也需要依賴賬戶體系來(lái)提供的核心數(shù)據(jù)。本文也暫不分析這內(nèi)容,將在《信用與支付》一文中分析。
這五個(gè)需求,按照其設(shè)計(jì)的優(yōu)先級(jí),也是從支付、記賬、對(duì)賬、風(fēng)控來(lái)進(jìn)行。 支付系統(tǒng)根據(jù)其發(fā)展所處的階段,逐步將新增需求納入設(shè)計(jì)中。
交易與賬戶
賬戶設(shè)置,一般是從交易開(kāi)始的。 交易的實(shí)現(xiàn)必須有賬戶的支持,賬戶是交易的基本構(gòu)成元素。 從支付系統(tǒng)的角度,交易中涉及到的資金流是資金從一個(gè)賬戶流向另一個(gè)賬戶。 發(fā)起交易的一方,被稱之為交易主體,他可以是個(gè)人,也可以是一個(gè)機(jī)構(gòu)。
資金從該主體所擁有的賬戶中流出。 而接收交易的一方,被稱為交易對(duì)手,他也可以是個(gè)人,或者機(jī)構(gòu)。 和第三方支付或者金融機(jī)構(gòu)的交易不同,電商系統(tǒng)中,交易還會(huì)涉及到渠道。
由于電商系統(tǒng)本身并無(wú)清結(jié)算的資質(zhì),所有資金從交易主體到交易對(duì)手的賬戶的流動(dòng),在大部分情況下,并沒(méi)有經(jīng)過(guò)電商系統(tǒng),而是由電商系統(tǒng)調(diào)用支付渠道提供的接口,由它來(lái)完成真正的支付過(guò)程。 當(dāng)然,渠道也不是活雷鋒,在這過(guò)程中,渠道要收取費(fèi)用。
所以,在電商系統(tǒng)中,一次交易會(huì)涉及到三個(gè)賬戶: 交易主體賬戶、交易對(duì)手賬戶以及支付渠道賬戶。 如何在這三個(gè)賬戶中完成一次交易,我們將在后續(xù)的《交易和記賬》一文中詳細(xì)分析。
記賬與賬戶
公司的會(huì)計(jì)需要對(duì)每一筆交易都要做詳細(xì)的記錄,即記賬。 公司每天都產(chǎn)生大量的交易行為,為了便于管理和統(tǒng)計(jì),一個(gè)簡(jiǎn)單的方法是對(duì)交易進(jìn)行分類,比如食品、帶寬、辦公用品等等。 這個(gè)分類,按照公司的規(guī)模和業(yè)務(wù)復(fù)雜度,可以有一級(jí),二級(jí),三級(jí)或者更多級(jí)的結(jié)構(gòu),這被稱之為會(huì)計(jì)科目。 記賬時(shí),除了交易明細(xì),還需要在每個(gè)級(jí)別上對(duì)交易額進(jìn)行匯總。
一般來(lái)說(shuō),一級(jí)科目上匯總稱為總帳科目,而詳細(xì)記錄稱為明細(xì)科目。 在電商系統(tǒng)中,由于涉及到的參與方較多,記賬也相對(duì)復(fù)雜,但基本方法也是類似的。 電商的參與者可以分為商戶、買家和渠道,對(duì)這三類參與者,都需要分別建立總帳賬戶和明細(xì)賬戶。
內(nèi)部賬戶和外部賬戶
當(dāng)用戶使用銀行卡來(lái)支付時(shí),電商支付系統(tǒng)需要和銀行對(duì)接,從用戶銀行卡所代表的賬戶上扣除資金。對(duì)接了銀行,第三方支付等機(jī)構(gòu)的電商支付系統(tǒng),它需要連接到用戶在這些機(jī)構(gòu)的賬戶來(lái)執(zhí)行扣款或者充值操作,這些賬戶或稱為外部賬戶。對(duì)外部賬戶,支付系統(tǒng)只能記錄賬戶在本系統(tǒng)的明細(xì)以及累計(jì)消費(fèi)額,無(wú)法得知賬戶真正余額。 不少電商在玩零錢的概念,也就是讓用戶充值到零錢,使用的時(shí)候就直接從零錢中扣除。這就需要零錢賬號(hào)。這是電商系統(tǒng)中自己設(shè)立的賬號(hào),所以也叫內(nèi)部賬號(hào),可以知道賬號(hào)的全部消費(fèi)明細(xì)和余額。 當(dāng)然,除了零錢賬號(hào),也可以有儲(chǔ)值卡賬號(hào),信用賬號(hào)等。
那問(wèn)題來(lái)了,什么時(shí)候需要建立賬戶,比如優(yōu)惠券,需要賬戶嗎? 一次消費(fèi)的儲(chǔ)值卡和可以充值的儲(chǔ)值卡,需要建立賬戶嗎?這里先埋個(gè)雷,后續(xù)介紹支付和記賬時(shí),給出答案。
收款賬戶和收單賬戶
當(dāng)電商要對(duì)接銀行時(shí),往往都會(huì)被要求開(kāi)設(shè)一個(gè)收款賬戶。用戶通過(guò)這個(gè)銀行來(lái)支付時(shí),錢就被轉(zhuǎn)到這個(gè)賬戶上。 對(duì)第三方支付也是一樣。收款賬戶是開(kāi)設(shè)在銀行或者第三方支付這邊的, 即渠道側(cè)。 一般來(lái)說(shuō),渠道每天都可以提供這個(gè)賬戶的交易流水供電商對(duì)賬用。 這樣在電商這邊,渠道就成為一個(gè)收單機(jī)構(gòu)。 所以在電商這邊,建立這個(gè)收款賬戶對(duì)應(yīng)的對(duì)賬用的收單賬號(hào),用來(lái)記錄通過(guò)這個(gè)渠道進(jìn)行的各項(xiàng)交易流水。
賬戶建模
說(shuō)了這么多,目的是為了對(duì)賬戶建模。 賬戶模型是和公司業(yè)務(wù)密切相關(guān)的,公司不同規(guī)模,發(fā)展的不同階段需要不同的模型。 賬戶建模本身包括三大核心模型:實(shí)體模型、賬戶模型和交易模型。 從交易模型中可以衍生出針對(duì)各個(gè)角色的賬戶流水,即明細(xì)模型,用于支持對(duì)賬。
實(shí)體模型
實(shí)體模型和用戶、商戶模型有重疊的地方,這里專門針對(duì)支付而設(shè)置的各個(gè)實(shí)體屬性。 一般來(lái)說(shuō),支付相關(guān)的實(shí)體模型需要包括如下的屬性:
- 用戶ID,一般直接映射到登錄賬戶的ID;
- 是否允許執(zhí)行支付;
- 支付密碼;
- 用于設(shè)置或者重置支付密碼的手機(jī)號(hào);
- 用戶設(shè)置或者重置支付密碼的郵箱;
- 用戶的安全等級(jí),根據(jù)業(yè)務(wù)需要來(lái)設(shè)置。
賬戶模型
根據(jù)業(yè)務(wù)需要,可以設(shè)置多種賬戶,如支付賬戶、預(yù)付卡賬戶、代扣賬戶、零錢賬戶、結(jié)算賬戶等。 從類別上來(lái)說(shuō),這里的賬戶,一般指總賬賬戶。一般來(lái)說(shuō)電商系統(tǒng)中涉及的賬戶類型有:
- 虛擬幣賬號(hào):用戶和使用奇點(diǎn)奇豆的商戶都需要建立虛擬幣賬戶。
- 代扣賬號(hào): 用來(lái)支持訂閱類型的定期代扣;
- 零錢賬號(hào):即電商的內(nèi)部賬號(hào),用戶、商戶、清算單位需要建立零錢賬戶
- 第三方支付賬號(hào):用戶在第三方支付機(jī)構(gòu)建立的賬戶。
- 銀行卡賬號(hào):用戶的銀行卡信息,每個(gè)卡對(duì)應(yīng)一個(gè)賬戶。
- 結(jié)算賬號(hào):用來(lái)支持和第三方支付公司、銀行進(jìn)行結(jié)算用。 第三方支付需要為每個(gè)商戶號(hào)建立結(jié)算賬號(hào);銀行需要為借記卡、貸記卡分別建立結(jié)算賬號(hào)(有必要嗎?銀行卡直連時(shí)使用)。
- 代扣代繳賬戶:用來(lái)支持代扣稅款業(yè)務(wù)。
對(duì)這些賬戶,需要設(shè)置如下屬性: 基本屬性,包括:
- 賬戶號(hào),或稱為賬戶ID,一般是系統(tǒng)自動(dòng)生成。特別注意的是,要事先約定好賬戶ID的規(guī)則。比如頭三位用來(lái)表示賬戶類型,后幾位用來(lái)表示賬戶編號(hào)等。務(wù)必保證根據(jù)賬號(hào)號(hào)能夠快速確定賬戶類型,并且保證賬戶號(hào)是不重復(fù)的。
- 賬戶名稱,一般是由用戶自己設(shè)置的,顯示用。
- 賬戶使用的貨幣類型,注意雖然一張銀行卡可以支持多個(gè)幣種,實(shí)際在內(nèi)部,還是針對(duì)每個(gè)幣種建立獨(dú)立的子賬戶。 涉及到多幣種的賬戶,也可以采用類似的建模方案。
- 會(huì)計(jì)科目代碼,一般是一級(jí)會(huì)計(jì)科目的代碼。
賬戶控制相關(guān):
- 是否允許充值;
- 是否允許提現(xiàn);
- 是否允許透支;
- 是否允許支付;
- 是否允許轉(zhuǎn)賬進(jìn)入;
- 是否允許轉(zhuǎn)賬轉(zhuǎn)出;
- 是否有安全保障;
- 是否激活;
- 是否凍結(jié)。
資金相關(guān):
- 當(dāng)前賬戶余額:等于可用余額+凍結(jié)余額;
- 當(dāng)前賬戶可用余額;
- 當(dāng)前賬戶凍結(jié)的余額。凍結(jié)余額指在賬戶上暫不能使用的額度。在支付的時(shí)候,往往是先凍結(jié),商品出庫(kù)后, 再實(shí)際執(zhí)行扣款。
銀行卡、第三方支付信息:
- 第三方實(shí)體的ID;
- 第三方賬號(hào),如銀行卡號(hào)或者在第三方支付的open_id等;
- 第三方的app_id;
- 賬號(hào)的失效日期,該賬號(hào)什么時(shí)候失效。
注意,有些第三方信息是不能保存的,如用戶的賬號(hào)密碼、信用卡的CV號(hào)等。 為了避免賬戶信息被爬庫(kù)或者數(shù)據(jù)庫(kù)信息意外泄露,一般還需要對(duì)敏感字段,如密碼等,進(jìn)行加密保存,甚至保存到另外的表中。 更進(jìn)一步,為了避免賬戶信息被意外修改,還可以增加一個(gè)校驗(yàn)字段,在寫入數(shù)據(jù)時(shí)設(shè)置該字段,在讀取數(shù)據(jù)時(shí)做校驗(yàn),一旦發(fā)現(xiàn)數(shù)據(jù)有問(wèn)題,則關(guān)閉該賬號(hào)。
交易模型
交易記錄,交易流水,賬戶流水,交易臺(tái)賬,這三個(gè)容易混淆的概念,從數(shù)據(jù)上來(lái)說(shuō),卻并不復(fù)雜,它們的核心是交易流水,賬戶流水是從賬戶視角的交易流水。那對(duì)一筆交易,涉及到的方方面面內(nèi)容很多,有哪些需要記錄的呢?考慮到交易記錄將被用于風(fēng)控和信用分析,能收集到的信息是越全面越好。
- 流水號(hào):每一筆交易的流水號(hào)都不一樣。需要根據(jù)業(yè)務(wù)情況詳細(xì)設(shè)計(jì)流水號(hào)。這個(gè)號(hào)往往也是對(duì)交易表做分表分庫(kù)的依據(jù)。
- 交易記錄創(chuàng)建時(shí)間;
- 交易記錄最后修改時(shí)間;
- 會(huì)計(jì)科目代碼
- 關(guān)聯(lián)的訂單號(hào),由商戶提供;
- 訂單名稱、描述、關(guān)聯(lián)的地址等信息;
- 費(fèi)用信息,包括: 結(jié)算貨幣類型、原始費(fèi)用、實(shí)際費(fèi)用等;
- 交易主體信息,記錄主體ID、類型、名字、賬號(hào)、賬號(hào)類型、使用的IP地址、手機(jī)號(hào)、平臺(tái)、通知郵箱、當(dāng)前位置等。 這些信息雖然可以從主體表中獲取,但考慮主體表信息隨時(shí)會(huì)被修改,所以這里需要記錄詳細(xì)的各原始信息。
- 交易對(duì)手信息,記錄對(duì)手主體的ID,類型,名字,賬號(hào),賬號(hào)類型,手機(jī)號(hào),平臺(tái),通知郵箱等。
- 交易渠道信息,記錄所使用的交易渠道的實(shí)體id,渠道賬戶,渠道執(zhí)行支付的時(shí)間、渠道側(cè)返回的訂單號(hào)等。如果有錯(cuò)誤發(fā)生,還需要記錄從渠道接收到的錯(cuò)誤信息和錯(cuò)誤碼。
總結(jié)
如上內(nèi)容,不管是賬戶還是交易,模型都很復(fù)雜。是否有必要記錄這么多信息,如何在交易中使用這些模型,請(qǐng)關(guān)注后續(xù)文章。
作者:鳳凰牌老熊,程序員 & 架構(gòu)師,來(lái)自中科大的本科,研究生在軟件所學(xué)習(xí)。先后在中科輔龍、三星(中國(guó))研究院和國(guó)內(nèi)一些大型的互聯(lián)網(wǎng)公司呆過(guò)。在中科輔龍公司負(fù)責(zé)電子政務(wù)內(nèi)容管理系統(tǒng)建設(shè),負(fù)責(zé)研發(fā)龍馭系列產(chǎn)品的研發(fā),這款產(chǎn)品最終實(shí)施到2000多個(gè)電子政務(wù)網(wǎng)站上,期間也參與了一些支付反洗錢以及支付系統(tǒng)的建設(shè)。之后在三星中國(guó)研究院,負(fù)責(zé)自然語(yǔ)言處理(NLP)以及智能家居相關(guān)項(xiàng)目。智能家居項(xiàng)目在2014CES消費(fèi)電子展上作為三星重點(diǎn)項(xiàng)目推介。2014年開(kāi)始加入愛(ài)奇藝公司,負(fù)責(zé)數(shù)據(jù)倉(cāng)庫(kù)和支付系統(tǒng)的建設(shè)。
本文由@鳳凰牌老熊(微信公眾號(hào):shamphone) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理 。未經(jīng)許可,禁止轉(zhuǎn)載。