优惠券设计需要考虑的细节及边界问题

前段时间写了几篇关于优惠券模块的文章,写的过程中遗漏了当时没注意到的细节及问题,本篇做一个查缺补漏。感兴趣的同学可以查阅之前的文章,希望对大家有所启发。

优惠券设计需要考虑的细节及边界问题

01、优惠券分摊计算小数点问题

商品被下单结算时,使用优惠券抵扣部分金额,就会涉及到优惠分摊问题,优惠分摊不但应该按比例分摊,还应在满足优惠条件的商品上,按照商品金额的比列分摊,而不是盲分摊。

订单实付金额公式如下:

订单总金额 = 商品总金额 + 运费 - 总优惠金额

其中:

总优惠券金额 = 促销活动优惠金额 + 优惠券优惠金额 + 虚拟资产(红包或积分)抵扣金额

单个商品优惠后的价格公式,如下:

单个商品优惠后的价格 = 商品价格 - 总优惠金额 * ( 商品金额 / 订单总金额 )

大多数情况下,规规矩矩的使用如上公式,如果出现除不尽的小数时,那么保留两位小数,再四舍五入,问题都会迎刃而解;但是出现以下例子就会有分摊金额偏差问题:

一个订单中包含A、B、C 3件商品,分别是商品价格分别是10元,那么商品总价30元,可以使用满30减10元的优惠券,那么A、B、C 3件商品分摊的优惠均为10/3,约等于3.33,因为存在除不尽的情况,导致单个商品的优惠累加后,无法和总优惠金额相等,总优惠金额是10,9.99≠10。

解决方法:前N-1个还是照常分摊就可以了,这N-1个,要先进行舍位(一般是保留两位小数,四舍五入),第N个=总额-sum(N-1个)。

这样的话A商品是3.33,B商品是3.33,C商品是3.34。

02、如何退还优惠券问题

通常优惠券都是一次性使用的,不可进行退回操作。但是为了偏向用户,使得优惠券充分被最大利益化,不可一刀切。

结算下单过程中,订单没有进行支付,取消订单的行为,需要给用户退回优惠券,当然也有不退的处理方式。我们一起来看看:

1. 订单未支付,不拆分成多个子订单

1) 订单取消后,不退还优惠券,就当做已使用状态;不过此方式对于用户来说肯定不友好;

2) 订单取消后,退还优惠券,但要根据优惠券有效期判断退换的券是属于未使用或者已过期状态;

优惠券设计需要考虑的细节及边界问题

2.订单未支付,拆分成多个待支付子订单

这种情况每个子订单的实付价格都是优惠后价格,任意点击某一个子订单付款按钮,都是以总订单金额付款的。当然取消某一子订单时,也会同时取消其余子订单,那么退还优惠券方式可以是1)或者2)方案。

优惠券设计需要考虑的细节及边界问题

ps:拆不拆分对优惠退还规则无影响,只是想把这两种未支付展示形式做个记录。

3. 仅退款售后

订单中包含商品全部退款时,优惠券全部退还;订单中部分商品退款时,优惠券暂不退还。

4. 发货后售后

当然我们不会在部分售后的时候,去考虑现在商品总价符不符合促销优惠,否则系统复杂程度将会成倍的增加。一般做法都是平台退还用户该商品的实付金额,最后优惠券也不会退还的。

ps:以上方法仅供参考

03、优惠券核销条件

优惠券核销分为有效核销和无效核销;

无效核销指的是各种情况下导致券未被正常使用,比如:券超时未使用、订单发生退款/退货售后等。

有效核销指的是优惠券被正常使用,未发生各种售后问题。当统计优惠总金额的时候,有效核销优惠金额之和基本不会存在什么误差。

不过优惠券退还问题或者下面即将要讲的平行式门槛计算规则问题,都会导致有效核销优惠金额出现一定偏差。

在统计优惠券数据的时候,区分有效或者无效核销是非常重要的条件,准确的知道每一张优惠券流向,有利于成本核算。

问题4:多张优惠券叠加,导致优惠总金额超出订单实付金额

例如商品A售价10元,可使用满10减5的商品券、满10减6的店铺券、满10减3的平台券,三者类型券均可叠加使用;

1. 若遵循递进式门槛计算规则

递进式门槛计算规则是以上一层优惠扣减后金额,来校验是否满足下一层级优惠券使用的条件。若符合,继续叠加;若不符合,则不能使用优惠券。

例子中商品A(10元)使用满10减5的商品券后的金额5元,此时扣减或金额已经不符合店铺券(满10减6)的使用条件了,因此不会出现优惠总金额超出订单实付金额。

结论:使用递进式门槛计算规则,是不会出现优惠总金额超出订单实付金额。

2. 若遵循平行式门槛计算规则

平行式门槛计算规则是每个层级的优惠均以单品基准价或单品基准价总和来判断是否满足优惠门槛,只要满足各层级优惠门槛,则可同时享受所有优惠;即每一层级优惠都直接根据商品的单品基准价来计算是否符合门槛。

例子中商品A(10元)都满足商品券、店铺券、平台券的使用条件,那么:

10 - 5 - 6 - 3 = -4 元

结论:使用平行式门槛计算规则,在优惠券设置不当的情况下,是会出现优惠总金额超出订单实付金额。

最终叠加优惠后的价格出现负数,这种情况肯定会影响用户体验和优惠券数据统计的,我们来看看解决方案;

1) 当出现负数情况下,最终结算金额为0或0.01

若选择显示0时,相当于免费拿,不走支付流程;

若选择显示0.01时,则要走完整的支付流程。要注意的是在支付前,要提示用户“您当前使用的优惠总金额已经大于订单金额,若继续支付所选优惠券将会被核销!”等文案,避免用户在不知情的情况下,将优惠券"莫名其妙的"使用掉,影响用户体验,增加投诉,使得优惠券不能最大利益化。

2) 当优惠后的金额小于下一张优惠券的优惠金额时,中止叠加

还是上面的例子,当商品A(10元)使用10减5的商品券,优惠券后金额为5元,这时候5元小于店铺券(满10减6)的优惠金额6元终止叠加,最后用户实付金额5元,

这种方案友好的避免了结算金额小于0的情况,当用户选择的优惠券组合后要出现小于0,就可以用toast方式提醒用户,不让他再选择。

3) 最终结算金额为0或0.01,给优惠券数据统计带来的麻烦

优惠总金额超出订单实付金额时,计算优惠分摊时,不应该算上优惠券超出部分;

在统计优惠券数据统计方面,再加一个实际优惠金额来记录每张优惠券核销时实际上优惠的金额。

补充内容1:优惠券商品指引页

用户通过各种渠道获得单品券、店铺劵、平台券等券,然后这些券被安安静静等待用户去使用它们。用户点击“立即使用”,可直达优惠券使用的商品范围。

优惠券设计需要考虑的细节及边界问题

1) 店铺优惠券:可用于店铺内所有的商品,通常会有个别特例商品除外。点击 “立即使用” 一般是跳往该店铺首页。

2) 店铺商品券:可用于所指定店铺内的多个商品,点击 “立即使用” 跳往的页面如优惠券商品指引页所示:

3) 单品优惠券:仅可用于所指定的单一商品,点击 “立即使用” 一般跳往商品详情页;这里要注意的是商品是否售罄或下架时,若是售罄一般可以跳往,若是被下架就要给予提示。

4) 跨店优惠券:可用于指定多个店铺下的多个商品,点击 “立即使用” 跳往的页面如优惠券商品指引页所示;

5) 类目优惠券:可用于指定的某个一级类目或二级类目下的多个商品,通常会有个别特例商品除外;点击 “立即使用” 跳往的页面如优惠券商品指引页所示;

注意:若是优惠券商品指引页被下架或提前结束了,点击后也需要给予提示。

优惠券设计需要考虑的细节及边界问题

优惠券商品指引页

以上就是本篇的全部内容,希望对大家有所帮助,有需要改进之处或有细节之处还没讲到的 ,可以在评论区中指出,谢谢。

本文由 新媒体之家 作者: 产品大秘籍 发布或转载,其版权均为原作者所有,如稿件涉及版权等问题,请与我们联系删除或处理。稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性,更不对您的投资构成建议。未经许可,请勿转载,题图来自Unsplash,基于CC0协议。
1

发表评论