惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
博客园 - 叶小钗
爱范儿
爱范儿
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
T
Tailwind CSS Blog
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
电商场景下,多种优惠叠加时的商品平摊和退款规则
我是PM · 2023-03-10 · via 人人都是产品经理

每到大促时,各种优惠叠加算到我们头疼。那么对于产品经理而言,电商场景下存在一个订单中使用了多种优惠的场景,会涉及到退款和优惠平摊的规则,这时候该怎么设计才合适?作者结合具体案例,谈谈其中的逻辑。

在电商下单时,存在一个订单中使用了多种优惠的场景,当多种优惠叠加时,涉及到商品的优惠平摊计算规则以及退款场景下的退款金额计算逻辑,本文用具体案例与大家分享多种优惠叠加时的详细计算逻辑。

一、前提

  • 价格为1分钱的商品不参与抵扣
  • 系统保留2位小数,向上取整
  • “部分退款” 时优惠券不退;“全部退款” 时优惠券可退

二、退款分摊规则

1. 优惠券 + 用户金额合并支付

A:全额退款:

订单销售价8.99 = 商品A销售价5.01 + 商品B销售价3.42 + 商品C销售价2.13 – 优惠券抵扣金额1.57

此时,用户发起全额退款,则:用户实际获得:商品原价(5.01+3.42+2.13)* 100% = 10.56元( 实付8.99元+优惠券1.57元)

B、部分退款(抵扣金额平摊法):

订单销售价8.99 = 商品A销售价5.01 + 商品B销售价3.42 + 商品C销售价2.13 – 优惠券抵扣金额1.57

备注:在优惠平摊时,需要按照商品价格进行正序排列,使得商品价格高的排到最后,避免发生最后一个商品的价格不足抵扣的情况

此时,将优惠券抵扣金额平摊到各商品上,各商品的实付价格为:

  • 商品A实付价格= 5.01 – (1.57 * (5.01/(5.01+3.42+2.13)))= 5.01 – (1.57 * 0.47) = 5.01 – 0.73 = 4.28
  • 商品B实付价格= 3.42 – (1.57 * (3.42/(5.01+3.42+2.13)))= 3.42 – (1.57 * 0.32) = 3.42 – 0.50 = 2.92
  • 商品C实付价格= 2.13 – (1.57 * (2.13/(5.01+3.42+2.13)))= 2.13 – (1.57 * 0.20) = 2.13 – 0.31 = 1.82(特别注意:这是错误计算方法)
  • 商品C实付价格= 2.13 – (1.57 – 0.73 – 0.50) = 2.13 – 0.34 = 1.79(特别注意:由于精度问题,最后一个商品要用该商品的价格减去各商品优惠的价格)

商品实付金额计算公式:

①非最后一个商品的销售价 = 该商品销售价 – (优惠券抵扣金额 * (该商品销售价/各商品销售总价的比例))

②最后一个商品销售价 = 该商品销售价 – (优惠券总金额 – 第一个商品的优惠券承担金额 – 第二个商品的优惠券承担金额)

当对商品进行退款时,会涉及到退款比例,以退款比例80%为例。

(原则:为防止被薅羊毛,商品实付金额和优惠金额同时乘以退款比例):

①用户实付:商品实付金额乘以退款比例

退商品A时,退款金额 = A商品实付金额*80% = 4.28*80% = 3.42 (故A商品退3.42元)

退商品B时,退款金额 = B商品实付金额*80% = 2.92*80% = 2.33 (故B商品退2.33元)

退商品C时,退款金额 = C商品实付金额*80% = 1.79*80% = 1.43(故C商品退1.43元)

②优惠模块:部分退款时,优惠券不退

2. 红包 + 优惠券 + 用户金额合并支付:

A:全额退款:

将红包、优惠券、用户余额原路退回

订单销售价8.00 = 商品A销售价5.01 + 商品B销售价3.42 + 商品C销售价2.13 – 优惠券抵扣金额1.57 – 红包抵扣金额0.99

此时,用户发起全额退款,则:用户实际获得:商品原价10.56 * 100% = 10.56元( 实付8元+优惠券1.57元+红包抵扣金额0.99元)

B、部分退款:

平摊顺序:优惠券 > 红包 > 用户支付金额

优先判断是否满足优惠券使用门槛

订单销售价8.00 = 商品A销售价5.01 + 商品B销售价3.42 + 商品C销售价2.13 – 优惠券抵扣金额1.57 – 红包抵扣金额0.99

此时,将优惠券抵扣金额平摊到各商品上,各商品的实付价格为:

商品A实付价格= 5.01 – (1.57 * (5.01/(5.01+3.42+2.13)))= 5.01 – (1.57 * 0.47) = 5.01 – 0.73 = 4.28

商品B实付价格= 3.42 – (1.57 * (3.42/(5.01+3.42+2.13)))= 3.42 – (1.57 * 0.32) = 3.42 – 0.50 = 2.92

商品C实付价格= 2.13 – (1.57 * (2.13/(5.01+3.42+2.13)))= 2.13 – (1.57 * 0.20) = 2.13 – 0.31 = 1.82(错误算法)

商品C实付价格= 2.13 – (1.57 – 0.73 – 0.50) = 2.13 – 0.34 = 1.79(正确算法)

使用优惠券的商品实付金额计算公式:

①非最后一个商品的销售价 = 该商品销售价 – (优惠券抵扣金额 * (该商品销售价/各商品销售总价的比例))

②最后一个商品销售价 = 该商品销售价 – (优惠券总金额 – 第一个商品的优惠券承担金额 – 第二个商品的优惠券承担金额)

最后,再将红包抵扣金额平摊到各商品上,各商品的实付价格为:

商品A实付价格= 4.28 – (0.99 * (5.01/(5.01+3.42+2.13)))= 4.28 – (0.99 * 0.47) = 4.28 – 0.46 = 3.82

商品B实付价格= 2.92 – (0.99 * (3.42/(5.01+3.42+2.13)))= 2.92 – (0.99 * 0.32) = 2.92 – 0.31 = 2.61

商品C实付价格= 1.79 – (0.99 – 0.46 – 0.31) = 1.79 – 0.22 = 1.57

使用红包的商品实付金额计算公式:

①非最后一个商品的销售价 = 该商品用完优惠券的销售价 – (红包抵扣金额 * (该商品销售价/各商品销售总价的比例))

②最后一个商品销售价 = 该商品用完优惠券的销售价 – (红包总金额 – 第一个商品的红包承担金额 – 第二个商品的红包承担金额)

a、当对商品进行退款时,需要判断退款比例,以退款比例50%为例:

暂不考虑部分退款后,付款金额不满足优惠券使用门槛的场景

①用户实付:商品实付金额乘以退款比例

退商品A时,退款金额 = A商品实付金额*50% = 3.82*50% = 1.91(故A商品退1.91元)

退商品B时,退款金额 = B商品实付金额*50% = 2.61*50% = 1.30(故B商品退1.30元)

退商品C时,退款金额 = C商品实付金额*50% = 1.57*50% = 0.78(故C商品退0.78元)

②红包模块:优惠金额乘以退款比例

退商品A时,红包金额 = A商品红包抵扣金额*50% = 0.46*50% = 0.23(故A商品退0.23元红包)

退商品B时,红包金额 = B商品红包抵扣金额*50% = 0.31*50% = 0.15(故B商品退0.15元红包)

退商品C时,红包金额 = C商品红包抵扣金额*50% = 0.22*50% = 0.11(故C商品退0.11元红包)

③优惠券模块:部分退款时,优惠券不退

A商品实退金额:可退红包0.23 + 可退金额1.91 = 2.14

B商品实退金额:可退红包0.15 + 可退金额1.30 = 1.45

C商品实退金额:可退红包0.11 + 可退金额0.78 = 0.89

b、用户再次申请部分退款(再退50%,产生全部退款的效果):

当判断退款比例达到100%时(也就是最后一次退款),用各支付方式的实付金额减去上一次的退款金额(防止精度丢失问题造成的金额错误)

故:

A商品再退金额:红包0.23 + 退金额1.91 = 2.14

B商品再退金额:红包0.16 + 退金额1.31 = 1.47

C商品再退金额:红包0.11 + 退金额0.79 = 0.90

以及退出一张:0.73 + 0.5 + 0.34 = 1.57的一张优惠券

三、总结

1、价格为1分钱的商品不参与抵扣

2、在优惠平摊时,需要按照商品价格进行正序排列,将商品价格高的排到最后,避免发生最后一个商品的价格不足抵扣的情况

3、最后一个商品的实付价 = 该商品销售价 – (优惠券总金额 – 第一个商品的优惠券承担金额 – 第二个商品的优惠券承担金额)

4、在退款时,商品实付金额和优惠金额同时乘以退款比例(不可先退实付金额后退券,否则在部分退款场景下会被用户薅羊毛)

本文由 @我是PM 原创发布于人人都是产品经理 ,未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。