結算模組設計
支付系統和結算系統關係很密切,在錢收到自己的賬戶裡面,不可能就放在那裡不管了,在使用者用完產品之後,大家要對對賬,看看使用者用了我們的什麼服務,有哪些要收費的專案,使用者需要付那些錢,錢有沒有付清楚,錢有沒有算錯,等使用者覺得這些收費沒錯,確認賬單了。
大家進行結算,這些結算的資料,後面可供財務製作報表,當然財務有另外一套邏輯,但是起碼要提供結算的資料。
這裡給出一個結算模組關鍵部分的參考設計
設計
需要儲存的內容
賬單
賬單歷史
賬單細節
結算單
結算單歷史
發票
除了正常的收費之外還有其他的結算專案,那麼再增加一些其他的收費資訊表
詳細的資料
賬單:
- 訂單id
- 應收
- 實收
- 價格型別(有時候由於不同的規則,計算應收的方式不同)
- 會員id
- 是否確認(賬單要展示給使用者看,需要使用者確認,或者自己人工確認,定時任務確認)
- 賬單確認時間
- 確認賬單來源
- 結算單id(有賬單,一般最終都會進行結算)
- 結算型別(收費種類不一樣,有時候一些結算的方式也進行歸類)
賬單明細:
- 收費專案,收費專案的編碼,收費專案的名稱
- 訂單id
- 會員id
- 結算型別
- 賬單id(因為是賬單的細節,所以這些細節都會對應到某一個賬單上)
- 結算單id(冗餘欄位,為了找到對應的結算單)
- 單價(因為是明細,總有一些收費的基本資訊)
- 數量
- 減免金額(有的時候,想少收點錢,可以減掉一些錢)
- 減免型別
- 應收
- 實收
- 排序號
- 關聯id(有時候因為某些收費種類,需要有關聯的資訊)
- 關聯時間
- 來源id(有時候要發現賬單弄錯了,或者需要進行調賬,記錄上一筆賬單的來源)
結算單:
- 結算單id
- 結算單號
- 訂單id
- 結算次數
- 會員id
- 結算型別
- 應收
- 實收
- 欠款
- 退款
- 各種收款方式的收費金額(微信支付,支付寶支付,銀行卡支付,餘額支付,押金抵扣,優惠券抵扣),真正收到我們的賬戶裡面的錢
- 返現積分
- 一些基本費用型別應收(產品使用費,服務費)
- 是否凍結(結算單凍結之後不能再操作)
- 凍結時間
- 結算時間
開票資訊:
- 訂單id
- 產品可開票金額
- 服務費可開票金額
- 產品已開票金額
- 服務費已開票金額
- 是否確認
一些注意點
賬單什麼時候結算?
- 確認賬單24h之後,定時任務
- 訂單狀態變成完成之後
- 後臺手動,生成結算單按鈕
結算單什麼時候凍結?
- 首次結算立刻凍結
- 定時任務15天進行凍結(二次結算單,非首次結算都叫做二次結算)
- 手工凍結
如果已經凍結的結算單,我們再次進行調賬的時候,會生成新的結算單,二次結算單一般不會直接凍結,再二次結算單凍結之前,每次進行賬單的調整直接更新資料庫資料即可,但是最好有個歷史資料表,記錄每一次資料的更改。
賬單在超過一定的時間之後不能進行調整,時間可通過配置中心控制。
最後
本設計僅供參考