基于咱们产品是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对优惠券的技术本质理解还不够深入。
说道最后,其实本质上就是优惠券的类如何设计,其余的都是依附于上面的方法,以及其余类的方法。