基於咱們產品是B2C自營電商的底層架構,因此我設計的優惠券方案至少支持如下使用場景:滿減券、打折券、包郵券、商品券、滿贈券、全場通用券等等。前端
一直以來接觸的是淘寶店鋪的產品體系,根據本身之前的電商運營經驗和對優惠券的理解,最終抽象得出一套通用性的優惠券設計方案。算法
優惠券的本質是經濟學中的價格歧視。形式上給予消費者心理必定的折扣,而後促成訂單。本質上商家向不一樣的接受者提供相同的商品或相同質量的服務,可是在接受者之間實行不一樣的銷售價格。架構
對於顧客來講,優惠券就是買東西的時候用它來省錢。優化
對於初級PM來講,優惠券可能就是滿減券、打折券、滿贈券這3種類型。那從技術層面來講,RD至少須要構建3個類,而且沒法兼顧優惠碼。而且後續很難去兼顧運營提出的新優惠券類型。spa
其次淘寶給店鋪提供了3種優惠券:訂單券、商品券、包郵券,這是平臺的策略。咱們是獨立B2C,不須要作得這樣細。京東也相似。設計
從面嚮對象的技術角度來講,優惠券能夠抽象成類,本質上是類的實例化。日誌
是優惠,不是現金。對象
請注意電商領域通俗意義上的優惠券是指下單能夠優惠金額的券,使用即做廢。不是那種能夠充值到帳戶的現金券,也不是可使用多張的折扣券。產品
簡單來講,就是拉新促活。電商
先說大概步驟:
即你想要什麼樣的優惠券,包含優惠券的面值,有效期,類型,門檻,使用限制,標籤……
新建是指新建了一批優惠券,可能限定了總張數,也可能不限定。本質上就是構建優惠券這個類的屬性,具體以下:
須要單獨說明的是:
優惠券實際上是讓利提高銷量,因此須要業務部門申請預算並提交財務審覈。不過咱們APP體量還小,這一步暫時省略。後續能夠補充。
審覈經過的優惠券須要向目標用戶進行發放。發放是個泛概念,分爲用戶主動領取&系統自動發放。
新建優惠券的時候,已經提供了一個顯示到前端的屬性,稱之爲領券。
好比給每個批次的優惠券生成連接,發給用戶讓他們去領。
另外:註冊自動返券,下單自動返券,邀請成功自動返券,屬於系統自動發放的類型。
發放這一步是很偏運營的事兒,產品配合好便可。
當用戶領取成功以後,個人優惠券列表新增一條記錄。此時這張券的狀態是未使用,下單的時候若是使用了它,則爲已使用狀態。
優惠券的使用和訂單流程強關聯,一種是先用券後生成訂單,還有一種是先生成訂單再用券。咱們APP採用的是前者,遵循用戶被淘寶京東培養出來的認知習慣。
選擇優惠券以後生成訂單,此時該張優惠券和該訂單進行綁定,同時狀態變成」已使用」。
注意每一個訂單最多使用一張優惠券,一張優惠券只能使用一次。理論上來講一個訂單可使用多張券,一張優惠券可使用屢次好比uber有那種使用x次的晚高峯券,只是這樣會讓業務變得很複雜,產品設計和技術實現都會變得很複雜。除非業務必須,不然不推薦這樣作。
過時未使用的優惠券須要進行回收和做廢。
不管是生成優惠券的記錄、仍是每一張被領取的記錄,以及每張使用的記錄,都須要記錄日誌供查詢。
理論上來講優惠券通常不退,優惠券1.0版本中不支持將未付款而取消的訂單綁定的優惠券進行返還,若是之後有時間可能會優化一下。此時會多一個使用中或者鎖定的中間狀態。
若是不處理,那用戶下單100+50-20優惠,若是所有退款則是退款150,很明顯對商家形成營收上面的損失。
若是處理則按照」哪裏優惠回哪裏」的規則來處理:
分攤金額的算法有兩種:
舉例:顧客購買了A商品1件90元,B商品1件30元,使用了一張優惠券滿100元減20元。若是顧客想退款A商品:
實際狀況中方案A和B的金額,有高有低。若是因爲特殊緣由須要給用戶多退,客服可在後臺修改。
咱們APP採用的是第一種,對用戶比較公平,體驗比較好。
營銷功能我通常分爲3大類:對商品的打折、對訂單的優惠券、對全場的活動。
當確認訂單的時候,知足打折、優惠券、活動規則。誰先誰後,最終致使的付款金額是徹底不同的。
咱們設計的整套營銷功能的計算規則以下,供你們參考。
固然說到底,優惠券和活動本質是同樣的。只是促銷的外部表現,可是內部規則是通用的。對於初級PM來講,可能不太可以理解這句話,可是必定要嘗試從產品層面理解,也可從技術層面理解。
本質上對於PM來講,新接手一個從未作過的功能,都是根據本身用其餘產品中的該功能認知以及本身的理解、以及產品經驗來作的。問題是這樣太具象了,須要抽象出核心的模塊。
不少講優惠券的文章太側重運營層面了,問題是這樣實現出來的功能其實只是徒有表象,稍微運營有點新需求就沒法擴展了。這實際上是這個PM對優惠券的技術本質理解還不夠深入。
說道最後,其實本質上就是優惠券的類如何設計,其餘的都是依附於上面的方法,以及其餘類的方法。