退款邏輯,1個業務單號--關聯多個支付單號--也關聯多個退款單號?退款單號,關聯優惠券返還的,也可在退款單列表關聯嗎?返還比例多少,是在優惠券系統設置?
整個交易、支付、清結算、賬務體系雜糅,會產生很多單據、單號。再考慮正向、逆向,他們的關係更復雜。
本文就來搞定訂單、賬單、支付記錄、支付單、支付請求、卡消費記錄、券覈銷記錄等單據,他們在交易正、逆向中是如何聯繫的,又有怎麼樣的數據關係。
0 場景
在某平臺購買一次家政阿姨上門保潔服務,總價120元,分2次支付,“先預付80元,再後付40元”,預付時用一張20元優惠券,微信支付60元。
1 3個核心,6大單據及關係
以上場景發生並非依賴一個系統實現,而是通過3個核心實現:交易核心、支付核心、卡券營銷核心,每個核心內會產生相應的單據。
1.1 交易核心
交易核心安排交易流程,包含:
- 訂單子系統
- 賬單子系統
① 訂單
訂單子系統內會生成訂單,訂單記錄了平臺跟用戶的本次交易信息:
- 買了啥
- 總價多少
- 用戶用啥支付的
- ...
訂單號 | 商品 | 金額 | 優惠金額 | 預付 | 後付 | 訂單狀態 |
---|---|---|---|---|---|---|
666 | 家政阿姨 | ¥120.00 | ¥20.00 | ¥80.00 | ¥40.00 | 支付成功 |
② 賬單
賬單子系統產生賬單,賬單記錄訂單要如何結算的信息,爲後續的支付、卡券覈銷做準備,該 case產生2筆賬單:
- 預付賬單
- 後付賬單
訂單號 | 賬單ID | 金額 | 優惠金額 | 應付 | 支付狀態 | 賬單類型 |
---|---|---|---|---|---|---|
666 | 666-1 | ¥80.00 | ¥20.00 | ¥60.00 | 成功 | 預付 |
666 | 666-2 | ¥40.00 | ¥0.00 | ¥40.00 | 成功 | 後付 |
③ 賬單支付記錄
一筆賬單需要被用戶支付(結算),賬單中的支付方式是廣義支付方式,包括卡、券、滿減、積分及渠道支付,如case的預付賬單優惠20元,渠道支付60,假設用戶選擇微信支付:
賬單ID | 支付方式 | 金額 | 支付狀態 | 外部流水號 |
---|---|---|---|---|
666-1 | 優惠券 | ¥20.00 | 成功 | |
666-2 | 微信支付 | ¥60.00 | 成功 | 3435566 |
交易核心的3類單據,一對多對多關係。
1.2 卡券營銷核心
① 券覈銷記錄
券系統內記錄的用戶的券綁定信息、凍結及覈銷記錄;卡系統記錄了用戶卡餘額的消耗記錄、卡餘額退回記錄。
卡券的變動記錄依賴交易核心的推動,交易核心如何推動卡券建立聯繫?靠賬單支付記錄單據。案例中因爲用了一張20元的券,所以券系統覈銷了該券,假設有一筆覈銷記錄:
券編號 | 券類型 | 金額 | 券狀態 | 訂單號 | 賬單流水號 |
---|---|---|---|---|---|
Q001 | 代金券 | ¥20.00 | 已使用 | 666 | 666-1-1 |
這條記錄與賬單支付記錄之間建立了關聯:
1.3 支付核心
60元走微信支付,即請求外部支付渠道完成支付,這部分支付走的就是支付核心。
① 支付單
支付核心是處理走外部支付通道的支付處理業務。支付核心會產生2類單據:
- 正向支付的支付單和支付請求明細
- 退款單和退款請求明細
賬單ID | 支付單號 | 支付方式 | 金額 | 支付狀態 | 外部流水號 |
---|---|---|---|---|---|
666-1 | pay001 | 微信支付 | ¥60.00 | 成功 | 324345 |
② 支付請求
一筆支付可能請求渠道多次,因此還要建立一個支付請求的明細:
支付單號 | 支付請求號 | 支付方式 | 金額 | 支付狀態 | 外部流水號 |
---|---|---|---|---|---|
pay001 | pay001-1 | 微信支付 | ¥60.00 | 失敗 | |
pay001 | pay001-2 | 微信支付 | ¥60.00 | 成功 |
支付單和支付請求是1對多:
該case支付在3個核心內產生的全部單據形成的關係:
至此,正向形成的單據及單據之間的關係講解完畢。
2 逆向單據的產生和關係
這時再看逆向訂單退款就容易。逆向只是正向的反向,依然3個核心和單據維度,只是單據變成逆向單:
- 訂單變成退單
- 賬單變成退款賬單
- 賬單支付記錄變成賬單退款記錄
- 支付單變成退款單
- ...
2.1 逆向都是基於正向
沒有正向單據,就沒逆向單據,如用戶沒下單,就不會取消訂單、也不會操作訂單退回,支付也是如此,沒有原支付成功,就不會有退款。
2.2 支付退款基於原支付單
支付核心的退款,是支付單,不能脫離原支付單,退款可:
- 全退
- 部分退
- 多次退
但絕不會超過原支付金額。
2.3 逆向由訂單發起
訂單是逆向的起點,就是隻有業務產生逆向處理,如退了部分商品或訂單差評產生部分退回等,纔會產生支付的逆向。
因此,退款不一定有訂單逆向,也可能是訂單產生的差評罰款或其他原因,但都是基於訂單,即退款基於訂單發起。
2.4 交易需控制逆向的順序
訂單產生了逆向,因爲訂單用了卡、券、積分、微信支付等多種支付方式。逆向發生後,先處理誰,先退券還是先退積分,還是先退微信支付的金額?
若是全額退還好說,畢竟最終都會逆向處理,但部分退呢?
支付了80,用了20元券,微信支付60,現在要退40,咋退?是退20的券微信退20,還是微信退40?因此需要一個逆向順序的控制,case中設置這樣的順序及設置了券不返還的策略:
這樣的規則下,若預付單隻退50元,那麼看預付單的情況:
按“券>卡>渠道”的退款順序逆向:
- 先處理20元券,因爲券不返還,所以就只是將券變成已取消,這樣就會從營銷中臺的成本中核銷掉
- 而30元從微信支付退
- 所以,用戶部分退50元,在這樣的逆向策略下,只能拿回30元
關注我,緊跟本系列專欄文章,咱們下篇再續!
作者簡介:魔都國企技術專家兼架構,多家大廠後臺研發和架構經驗,負責複雜度極高業務系統的模塊化、服務化、平臺化研發工作。具有豐富帶團隊經驗,深厚人才識別和培養的積累。
參考:
本文由博客一文多發平臺 OpenWrite 發佈!