支付業務的數據庫表的設計
一、數據表
數據庫中的數據表是整個核心邏輯的載體說在,所有的記賬邏輯、以及與支付前臺交互的數據都是在這裏 進行記錄。現就主要的表進行簡要說明。不同的第三方支付其數據表名稱肯定也不同,這裏的表名稱僅作參考
- gTransLog表: 支付網關交易流水表,所有通過網關的交易全部都會在此表中寫入數據。
- tAccounts表: 用戶的賬戶數據記錄表,在第三方系統中其記錄著用戶的賬上資金。
- tAccountLog表: 用於記錄賬戶的自己流水情況,所有對tAccounts表的資金變動都會在流水表中進行記錄
- tBankPaymentInfo表: 上傳對賬文件後,解析對賬文件生成的表
- tBankcardInfo表
- tChannelConfig表: 渠道配置表,用於配置商戶與不同渠道的對應關系,比如接入支付寶或者招商銀行
- tFreeze表: 凍結表,當tAccounts表中的資金有事先凍結的情況下,比如說基金贖回等會向tFreezes表中插入數據
- tPayments表: 付款表,記錄賬戶付款相關信息
- tReceivables表: 收款表,記錄收款信息
- tPaymentChannel表: 商戶付款渠道的相關信息
- tRefundChannel表: 商戶退款屠刀的相關信息
- tRollLog表: 業務流水表
- tTrans表: 交易表,只要是交易,資金有變化,是商戶與用戶交互的過程
- tTransLog表: 交易流水表,記錄交易流水的相關信息
- tTransCashBack: 記錄銀行賬號退款的相關信息
- tBankPayReconFile表:上傳對賬文件後,解析對賬文件生成的表
- tReconcilationPaySucc表:對賬成功後寫入的表
- tReconcilationPayFail表:對賬失敗後寫入的表
- tAccountSystemayPaymentInfo表:付款內部數據收集表
二、數據表分析
在第一部分對其中後臺記賬系統的數據表中大致進行了一下說明,但是其中也會有一些需要註意的點, 這才測試中分出關鍵。現在就每一個表進行詳細的分析一下。
1、gTransLog表:該表是所有網關交易都要登記的表,從支付前臺傳入的數據首先經過gTransLog
2、tAccounts表:該表是賬戶數據記錄表,記錄著用戶賬上的資金。可以聯系一下支付寶,就相當於個人的支付寶賬戶 裏面的余額。不同的記賬系統對賬戶的區分也不一樣,可能有的賬戶系統中只用商戶賬戶存在,有的則允許個人和商戶都存在。該 表中的賬戶除了較為重要的Balance Amount外,還有幾點需要註意:
- 賬戶的凍結金額
- 賬戶的子類型,有些時候需要關註是主賬戶還是次級賬戶
- 賬戶的科目類型,是資產賬戶還是負債賬戶,這在記錄賬戶流水的時候很有用
- 賬戶的狀態,可用還是失效
3、tAccountLog表: 該表是用來記錄資金賬戶流水變化,並記錄相關交易單號以及金額。在表中會有標誌記錄這次的資金流動情況 是借記還是貸記,這在核對賬戶的資金流動上很重要,難免出錯。
4、tBankPaymentInfo表:這個表在對賬的時候使用,關於對賬相關邏輯在下一章情景支付中進行講述。這個表是付款對賬表,當然與之 相對的是收款對賬表,在此僅以付款對賬表進行講述。將對賬文件進行解析,獲取文件中數據,來成生成此表。將在外部對賬時使用。
5、tChannelConfig表:該表是渠道配置表,主要是商戶使用。該表中配置了商戶以及此商戶所接入的渠道,比如支付寶或者某銀行。可以 從現實生活中去理解此邏輯,在某商戶進行購物時並不是每一個商戶都對某家銀行支持,說的也是這個道理。
6、tFreezes表:該表為凍結表,當有交易發生資金凍結的情況時,都會向這個表中寫入數據;而當這個某些資金解凍後,也將該凍結表中的 狀態改為解凍。並不是所有的交易在金額變動之前都會去事先凍結金額,對於實時性交易來說,賬戶的錢是會被實時扣除。賬戶資金出現凍結的情況 出現在基金申購、優惠券消費等為數不多的場景中。
7、tPayments表: 該表為付款表,這裏的付款是從商戶的角度來說的,對於用戶來說就是收款。初次涉及賬戶邏輯時很容易將這邏輯搞混,這個表使用 再向用戶打錢的時候才會被用到。比如在基金贖回的場景中,就會向這個表中插入數據,通過表中的狀態,就可以判斷其向用戶打錢有沒有成功,對於沒有成功、 的情形又會涉及到退票的情形,這在下一章討論。
8、tReceivables表: 該表為收款表。這裏的收款也是對商戶而言,對用戶而言則是付款。比如用戶在進行購物的時候,用戶是付款,商戶是收款,那麽此時 就會向此表中插入數據,其表中也存有state字段用來表示用戶付款有沒有成功。只要是涉及用戶的資金進入第三方系統,此表都會有收款數據寫入。
9、tPaymentChannel表:此表為付款渠道表,如果從字面意思進行理解便可知道,這個是付款時的渠道。不管是商戶還是用戶其相關的付款渠道信息都是在此 配置,如果在這個表中將渠道置為無效,則在支付前端看不到此渠道。
10、tRefundChannel表:此表是退款渠道配置表,可以類比付款渠道配置表進行理解。
11、tTrans表:該表是交易表,核心點在與交易,交易必須有買和賣,只有這樣才能完成交易。此時就涉及一個易被忽視的問題,比如向用戶向自己錢包充值, 這個階段只是收錢,並沒有存在交易,所以在這個場景下並不會向該表中寫入數據。在一般的交易中,可查看表中的狀態來判斷此交易的狀態,是等待付款、付款完成 、付款失敗、已清算。支付前端也時刻通過這個表來進行其他聯接查詢操作。
12、tTransLog表:該表為交易流水表,對tTans表的變化都會在tTransLog中進行記錄,這在後續查詢交易異常情況下,比較有幫助作用
13、tTransCashBack表:該表為現金退款表,當用戶通過銀行卡支付並成功扣款後,這個時候如果發起退款那麽要這個表中插入數據。有一個情況要註意,這個表中的 數據只涉及銀行退款,比如在組合消費的時候,可能有優惠券的金額。那麽由於優惠券過期而發生退款時,銀行卡退款部分寫入tTransCashBack表中。
14、tBankPayReconFile表:這個表中的數據為解析銀行付款對賬文件而來,其數據來源於銀行。這個數據表為付款文件對賬表,與之相對的是收款銀行文件對賬表,雖然 在這裏沒有將其列出,但是其業務邏輯思想是相通的。
15、tReconcilationPaySucc表:對賬數據的結果存放處,對賬的結果又對平和對差的區別。具體在這裏不做講解,對平的數據放入此表中,而對差的數據放入Fail表中。
16、tAccountSystemayPaymentInfo:這個表為付款信息收集表,也是內部對賬後的結果表。與之相對的是收款信息收集表。
支付業務的數據庫表的設計