賬戶體系的設計(1)


回來看看自己的博客園,自己總是三天打魚,2天曬網。從flask到爬蟲,現在啥也沒學會,殘念。

也許要一以貫之吧。

我是想說說賬戶體系的設計的。

但我沒有什么強大的設計能力,而且我也總覺得賬戶設計這個事和會計沒啥關系,不知道很多人為什么一定要扯上會計的事。

我們還是從第三方支付來只管感受一下,小白用戶對賬戶的感受是咋樣的?

直接就以微信支付來說好了,先看微信支付是否有賬戶?

我們覺得是有的。為什么有?因為我能看到一個自己有一個微信零錢的余額,也許可能余額是零也說不定。

回顧一下上面一句話,其實從我的理解來看,我們之所以說微信支付有賬戶,是因為微信支付有一個地方記錄了我的微信錢包余額的變化。

這引出一個問題,微信錢包余額是啥?

我為什么會有微信錢包余額?我為什么要知道我的微信錢包余額的變化?

我們先從業務發生的角度來看,當我們使用銀行卡向微信錢包充值的時候,我們就擁有了微信錢包余額。

那我為什么要充值呢?

因為微信支付錢包的余額可以讓我發紅包,或者去買個快餐。

那我為什么要關注微信錢包的余額呢?

第一,因為我的余額是我的一部分錢。

第二,根據微信支付的設計,當我的余額不足以支付時,我必須再充值。

這大概是我們用戶對微信支付賬戶的一個理解。

當然可能和大家實際感受不是那么一致。

為什么?

因為微信支付不僅有賬戶的功能,他還做了一個“橋”的功能。

什么是“橋”?

就是我們使用銀行卡快捷支付的時候。

當我們通過微信支付使用快捷支付的時候,我們其實和我們的微信余額半毛錢關系都沒有,這個時候你其實用的是你的銀行賬戶來支付,微信支付只是做一個橋。讓你可以使用不是微信支付的東東也來支付。

好的,那我們現在說錯了一些什么事情呢?

我知道轉折的有些大。

這個可能還不是我們理解的一個賬戶。

因為從我們理解來看,我用銀行卡快捷支付的時候,我感覺我也是在用微信支付的賬戶啊,反正我是這么感覺的。

我的證據是什么?或者說造成我錯覺的是什么呢?

我可以通過查看微信支付的交易記錄看到我所有的快捷支付。這你還說和微信支付賬戶半毛錢關系都沒有?

也是哦,這會讓我們再深入的思考賬戶這個玩意到底是什么?

我們再來頭腦風暴一下,如果用一些詞來形容賬戶,我們會想到什么?

實名認證,綁卡,余額,發紅包,理財,查交易記錄,被盜號了,密碼

這里的感受是,賬戶這個東東好像有很多功能,實名認證就說明他一定記錄了我的身份信息,比如我多少歲,性別是啥,姓甚名誰,身份證號碼是多少,哪個國家的人,如果可能再細一點的話,可能還有我是干啥的,我的工資有多少,我是已婚還是未婚....

綁卡,是啥?這個賬戶還可以和其他賬戶體系關聯。

余額是我們最開始說的賬戶的一些粗略印象。

發紅包理財,查交易我們也說了一下。

被盜號?大家會不會突然想到我們是否有一個微信支付賬戶的ID呢?我們很清楚的是我們有身份證ID,我們有手機號碼,我們是否有微信支付賬戶ID呢?好像是沒有的。感覺像是我們的微信支付賬戶是跟着微信開通的,只不過我多點了一個確認信息。

那我可能微信賬號被盜,微信支付賬號不被盜么?

這涉及到一個密碼的事了,微信支付單獨設立了一個微信支付的交易密碼。這個是微信賬號被盜,我們微信支付賬號不被盜的保護了。

我們零零散散的說了很多,其實就是想說,我們感覺賬戶是一個很大的綜合體,感覺他好像啥事都參與了一些。

好像真的要仔細說明一個賬戶是很復雜的。

那我們不如換一個視角來看看,假設你自己是設計的人員,你設計的賬戶體系要把上面的功能全部完成,你要怎么設計?

假設我們把賬戶當一個對象來看的話,是不是他就會有很多玩意。

他有用戶的身份信息,有用戶綁定的卡的信息,他有用戶所有交易的信息,有用戶的密碼,和他和哪些外面賬戶有關聯。

這樣一個對象是不是有些太大了?

是不是能更好的分層,來簡化一下復雜程度呢?

網上有一些三戶體系,我很敬佩的知乎梁川大神也提了一個客戶/賬戶/賬務的體系,說實話我都不是特別懂。

但我們也想冒險設計一下?

我們設計之前總是有些自己的原則和目標的,我自己的第一個目標是關於資金變化的信息,越少干擾信息就越好。

這個也不知道對不對,只是我的直覺。

對於編程垃圾的我,也只是在胡說不到,但我還是想扯一扯。

如果按照這樣的層次划分話,

我想賬戶應該是很純粹的一個東西。

他有啥信息?

有余額,有交易。

沒了。

其實這個就和我一開始最初的印象基本一致。

那我們再來具體定一下,啥叫有余額?

我們的第一個問題就是,我不僅有微信錢包的余額,我還有理財通的余額,你這個余額是啥余額?

這就是我想說的第一個點。

從我的理解來看,這其實是2個賬戶。

一個賬戶就應該只記錄一種余額。

而且其實也可以把這些賬戶都放在一起,互相之間產生交易。

或者說,我們想說的賬戶設計,不僅對微信錢包的余額有用,其實也應該對理財通余額也是有用的,或者說和你公交卡的余額也是有用的。只是上層功能會有不同。

最底層的賬戶設計應該是要通用的。

說完余額,我們再說說交易。

交易是一個令人疑惑的東西。

既然我們說了我們的賬戶是只針對零錢的賬戶,那你通過橋的交易,抱歉,在我們的賬戶,我們是不記錄的。除非你的交易涉及到了我的賬戶余額發生變化,比如充值,那我會記錄這樣一筆交易。

當然你也可以把每一次銀行快捷的支付都設計成為賬戶充值+賬戶支付的組合,但是這個又是后面的話題了。

然后我們在具體說說交易你到底要記錄啥?

我們說交易其實在說啥,比如我通過余額給朋友轉了一筆賬,你覺得我們的交易是啥?

這筆交易是不是就是我的賬戶給我朋友的賬戶轉了一筆錢?是的,就是這樣。

我們還要再細說,我們為什么要記錄交易?

其實上面的一個轉賬不就是我的余額減少了100元錢,我朋友的余額加了100元錢么?一減一加就完成了。

但是這樣會產生幾個問題。

第一,假設說我要查我之前有什么交易的話,我不知道。

第二,假設系統加錯了,我朋友的余額加了200元錢,這個怎么辦?我們是否能發現?發現之后是否能處理?

如果不記交易的話,我們就不知道這里加錯了。

其實,從這里出發,可以看出,賬戶系統的很多設計,其實是為了當系統出問題時,我們能定位並發現問題。

如果我們要滿足上面的幾個要求,我們的交易該怎么設計呢?

這筆交易應該說名幾個事情。

誰出錢,誰收錢,金額,時間,唯一編碼

這樣,當我們看到我朋友的余額加了200元錢的時候,我們就可以發現了他多家了100元錢。

等等,你是不是想多了?

你怎么發現?

你其實這樣還很難發現,為什么?

你還缺一個事情,就是我的賬戶的流水。

我的賬戶加了一百元錢,我還必須記錄一條流水,這條流水有啥信息呢?

唯一編碼,金額,時間

這樣你才可以發現。

具體怎么操作呢?

假設說我們要查我的賬戶是不是有沒有操作錯誤?

我就把所有的交易拉出來,挑選出是關於我的賬戶的交易,然后吧這些單和流水比對,怎么比對,因為你們公用一個唯一編碼,你就可以一條條比對,我是不是加錯了還是加對了。

那這樣的話,你也可以推而觀之,把所有的賬戶都這樣核對一遍,這樣我們初步的賬戶體系也就設計完了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM