產品設計:BBC商城中的交易系統
在電商平臺中交易系統是最核心、最復雜的系統之一,涉及商品、訂單、支付、營銷、庫存等不同領域的業務邏輯,本文對自己在負責中臺的交易中心的過程中對業務思考的一些記錄。
交易的本質是一個信息流、物流和資金流的轉換過程,商家通過平臺展示商品信息,用戶獲取商品信息后做出購買決策,用戶付錢交換商家提供的商品和服務,商家通過物流或快遞把貨權轉移給用戶,如果用戶對商家交付的商品或服務不滿意可以根據平臺運營規則進行退換貨處理。
具體業務過程如下圖:
而我們的交易系統就是要把整個交易過程中涉及的業務完整的記錄下來,以備買賣雙方隨時進行跟蹤、查看。
為了讓我們記錄的信息成結構性,我們把承載不同階段的業務信息的對象劃分成如下幾類:
- 訂單——記錄交易雙方的主體信息、交易品信息、交易的關鍵節點信息以及訂單本身特有的信息;
- 發貨單——記錄賣家對訂單履約過程的信息;
- 退款單——記錄退換貨信息處理過程的完整的信息;
- 資金流水——記錄用戶付款、商家收款、商家退款、用戶收款以及與訂單的關系的信息。
整體業務流程圖如下:
下面以以上三個單據為核心,對相關業務進行分解。
一、訂單業務分析
首先,我們看下訂單的基本信息結構,如下圖:
在訂單的基本信息中我們會包涵訂單號、訂單創建時間、訂單狀態等關鍵信息。
其中訂單一般會有主子訂單號之分,這是訂單拆單業務的產物(拆單在訂單中是一個關鍵業務,后面單獨進行說明);
訂單狀態一般用于表達訂單的整個生命周期,一般如下圖:
其中待審核狀態在有些業務中存在,有些業務又不存在,我們在做中臺時該狀態是一個可選擇的節點。
買家和賣家信息一般記錄其相關的ID、名稱或等級等信息,賣家還需要記錄其店鋪的信息。
開票信息指的是用戶在下單是選擇的開票類型以及提交的開票資料,普票和增值稅、個人和企業其所需的開票資料不同。
支付信息只記錄支付時間以及支付流水號,該流水號是能夠貫穿交易、支付以及第三方的一個表示。
訂單結算信息一般的結構如下圖:
每一項優惠或者折扣都需要分開記錄,而優惠、折扣和抵扣都是由對應的業務系統進行業務處理后的返回值。
收貨人則指的是收貨人的名稱、手機號以及地址信息。物流信息明細一般都是通過第三方接口獲取,再記錄到系統中。
最后還有一部分則是交易品明細,需要注意,訂單中記錄的交易品明細一定是下單那一刻確認的交易品信息,包括交易品的基本信息、價格信息、數量等。
這就要求我們在系統中需要有交易品版本的管理,能夠準確的記錄在某一個時間段內,任何一個交易品的準確信息。
訂單中的交易品明細一般的信息結構如下:
在整個信息結構中最難的時如何獲取優惠、折扣和抵扣,而在一般的系統設計的邏輯步驟如下(以優惠券優惠為例):
- 在提交訂單時,需要把訂單中的商品及商品相關的信息和用戶選擇的優惠券信息提交給營銷系統;
- 營銷系統校驗優惠券的合法性并校驗能夠使用商品
- 根據可使用的商品按“(商品金額/Σ能使用的商品金額)*優惠券優惠金額”進行分攤
- 若有除不盡的情況,則使用最后一個商品補全的方法進行處理
- 系統需要校驗訂單商品的優惠金額不能超過商品的售價
- 返回分攤結果給訂單
- 訂單根據商品分攤數據,合計到訂單維度的金額
在這個分攤的業務過程中,需要注意的有兩步:第3步和第5步。
第3步,一般各個結算位對應的分攤獨立進行計算,以商品售價位基準進行分攤,獨立計算的好處是各個結算位互不影響,優惠金額是可預估的;
第5步主要是考慮多種優惠疊加使用,可能會導致訂單商品優惠超額的問題;
例如:平臺優惠券規則:滿1000減900,店鋪優惠券規則:滿1000減700,此時疊加使用就會出現超額問題,在一般規模不大的電商平臺中直接限制優惠不能疊加使用規避這種問題,但我們在設計中臺時,是需要充分考慮各種業務方的需求。
最后,在訂單這部分的業務中還有一個十分重要的業務邏輯需要進行說明,那就是訂單拆單。
拆單主要為了滿足在財務結算以及物流發貨上的相關需求,也能夠讓每個商家更好的完成履約。在電商的交易、物流流程中有可能需要拆單的環節有:購物車、訂單提交、發貨/配送、發包裹。
前兩個環節屬于交易業務內,后兩個環節屬于物流配送環節,在此我們僅對前兩個環節的拆單進行說明。
在交易環節拆單主要有這幾個常見的因素:交易模式(海外購)、品類(藥物、生鮮或一些特殊品類)、店鋪。交易模式拆單是因為其在訂單確認時需要進行操作和展示的信息完全與普通交易不一樣;
例如:海外購需要進行一些必要的資質認證、關稅以及對金額的一些限制等等,會員店需要進行資質認證或有特殊的結算方式等;而品類主要會影響下單的環節,例如:藥物需要先有處方,在審核通過后才能下單等;而店鋪則是因為要分成不同的商家進行履約、結算而需要拆分訂單。
在拆單時我們需要考慮一些幾個業務:
- 主子訂單的數據結構,以及狀態對應關系;
- 拆單后訂單與支付單的對應關系;
- 拆單后用戶支付的操作處理,一般如果一次下單過程中有使用優惠券、活動等則需要進行合并支付。
關于訂單相關的業務處理到這里算是告一段落,其核心是訂單狀態以及訂單金額相關的數據結構和分攤邏輯設計,下面我們進入履約交付環節。
二、訂單發貨履約
訂單履約業務從商家進行發貨操作開始,一直到用戶簽收并完成訂單為止。
嚴格意義上的履約應該包涵如下步驟:發貨-揀貨-出庫-配送-簽收這幾個環節,但揀貨-出庫-配送這三個環節是屬于物流管理系統(WMS)所負責的業務,我們在此不做過多的闡述。
在發貨時,我們需要注意的是這是從信息流轉換到物流的過程,在當前大家都追求線上線下融合的大趨勢下,我們需要提供一個靈活的發貨業務處理邏輯。
首先我們能夠滿足一個訂單多次發貨、多個訂單合并發貨這些場景;
其次在電商系統對接了物流系統后,我們需要能夠做到發貨單具備路由的功能,即系統能夠根據客戶的地址和倉庫的地址、貨物在倉庫的庫存情況以及倉庫業務處理的能力等因素進行自動選擇,以達到庫存效益和用戶體驗之間的最大收益。
有發貨路由的整體業務流程:
發貨單需要記錄:發貨單基本信息、訂單基本信息、收貨人信息、貨品信息、發貨倉信息以及最終的物流配送信息。
用戶即能在訂單中查看商品的物流情況,而一般的訂單中的物流信息都是通過在發貨單上面記錄的快遞單號/運單號在通過第三方物流信息對接平臺獲取的。
在商家進行發貨操作后,用戶能夠對商品進行簽收,簽收操作的目的是確定貨物物權的轉移,很對企業會以該節點作為財務中收入確認的觸發節點。
三、退款相關的業務
1. 退款的整體介紹
退款業務可分為三個大的類型:僅退款、退貨退款、換貨,本期不實現換貨業務。
僅退款指的是指對資金流進行處理,不產生物流;退貨退款指的是需要處理物流及資金流。
那再什么情況下會產生退款業務呢?首先我們回顧下整個交易流程是怎么樣的,如圖:
這是業務簡化后的狀態圖,在業務中訂單支付后只要進入待發貨(如果有待審核,也可)狀態以后,在訂單狀態為已完成之前,都能發生退款業務。
具體場景如下:
- 商家還未發貨,用戶發現購買的商品不是自己需要的,申請退款,可對已提交的訂單中的部分商品進行退款,也可整單進行退款;
- 商家已發貨,但用戶還未簽收時用戶進行退款申請,可對訂單中的部分商品進行退款或整單進行退款;
- 用戶已經簽收,但訂單還未進入已完成狀態時用戶進行退款申請,可對訂單中的部分商品或整單進行退款;
2. 具體場景的業務分析
對于場景一,商家還未發貨,故無物流過程的處理,我們只需要處理退款商品的庫存及資金即可,邏輯如下:
- 用戶申請退款,選擇需要選擇進行退款的商品(有狀態限制:待審核、待發貨、待收貨、待簽收、已簽收),并填寫相關信息(退款金額、原因、憑證等),提交退款申請,此時需要在訂單中的商品維度標識改商品狀態為“退款中”
- 商家對退款申請進行審核,審核不通過則打回給用戶,改變訂單中的商品狀態為“待發貨”;商家審核通過退款申請后,可進行確認退款操作,確認退款后系統按支付渠道原路退回,并產生退款資金流水記錄,確認退款成功后聯動訂單,處理商品狀態(修改為:“已退款”)及訂單狀態(見訂單與退款申請單聯動說明)
- 退款成功時還需要對商品庫存進行處理,自動返還退款商品數量到庫存
- 若訂單下的所有商品均為“已退款”,則需要進行優惠券、積分等資產的返還,若活動有資格限制,也在整單都退完是才返還資格
對于場景二與場景三可使用同樣的邏輯進行處理
- 用戶申請退款,可選擇退款類型:僅退款、退貨退款;僅退款的流程與場景一 一樣,唯一不同是不需要進行庫存返還。選擇退貨退款時需要選擇進行退款的商品(有狀態限制:待審核、待發貨、待收貨、待簽收、已簽收),并填寫寫相關信息(退款金額、原因、憑證等)提交退款申請,此時需要在訂單中的商品維度標識改商品狀態為“退款中”
- 商家對退款申請進行審核,審核不通過則打回給用戶,改變訂單中的商品狀態為“待發貨”;商家審核通過退款申請后,用戶進行確認退貨操作,填寫快遞相關信息,確認后申請單狀態為“待收貨”
- 商家在收到用戶寄送的快遞后,可進行確認收貨操作,申請單狀態為“待退款”
- 商家可在退款申請單商家進行確認退款操作,退款統一為原路退回(使用第三方支付平臺的退款接口進行退款)
- 退款成功時還需要對商品庫存進行處理,自動返還退款商品數量到庫存
- 若訂單下的所有商品均為“已退款”,則需要進行優惠券、積分等資產的返還,若活動有資格限制,也在整單都退完是才返還資格
四、關于訂單與發貨單、退款申請單聯動的說明
申請退款在售后周期結束之前,但審核在售后周期結束之后。
訂單簽收時的處理邏輯:訂單到已簽收狀態時,需要判斷訂單中是否有商品是否有狀態為“退款中”,若有,則不啟動售后結束時間;若沒有,則啟動售后周期。
售后申請單結束時的處理邏輯:在每一次申請售后單確認退款后,需要通知訂單,改變商品狀態,對訂單中的商品進行掃描看是否所有商品狀態都為“已退款”或“已簽收”,若是,則啟動售后結束時間;若不是,則不啟動售后結束時間。
五、總結
交易系統勿用質疑是電商中最核心的模塊,它是信息流、物流、資金流三流合一的關鍵,一個靈活且設計合理的交易系統是企業業務運行和用戶獲得良好購物體驗的基礎。
在做交易系統的設計的過程中深刻的認識到業務的復雜性是客觀存在的,作為產品我們要做的就是管理這種復雜,如何管理呢?
把業務需求結構化,產品信息結構化以及讓所有的功能都符合業務人員實操邏輯是關鍵,而這種結構化的思維方式就需要我們產品能夠在設計之初并對業務進行抽象劃分好階段、類別,輸出的產品說明文檔要保持邏輯和表述一致,使用通用的產品語言。
而關于資金相關的業務在交易系統中未進行詳細闡述,后期在總結支付結算相關業務時再行說明。
本文由 @keeliu 原創發布于人人都是產品經理 ,未經許可,禁止轉載。
題圖來自 unsplash,基于 CC0 協議
期待更新
訂單拆單后,子訂單存什么信息呢
說的真好。
干貨多多,多謝分享
深度好文 考慮很周到 已跪已關注
支付結算的文章什么時候出,期待中。。。 ??