详解订单多商品多运费模板的运费计算规则(多运费模板合并订单如何计算运费)

对于电商系统来说,配送方式和运费配置无疑是订单闭环中重要的模块之一。
现主流的电商平台大部分商品都是采用全国(港澳台除外)包邮,你没听错,偏远地区有些商家也采用包邮模式(里面我就看破,不说破,哈哈~)。
当然,电商系统后台肯定会支持商家自行配置运费模板,当商户在上传商品的时候,需要选择或新建运费模板;然后用户将商品加入购物车进行结算时,系统自动计算出运费多少。
这时候就会引发一个问题:当用户结算多件商品,其捆绑了不同的运费模板,比如有按件计费、按重量计费,甚至同种类型模板也有不同配置参数;此时这么运费该如何做合理的计算,肯定不能简单运费添加的,那如何做到一个商家和用户比较均衡,尽量让双方都不吃亏呢?
因此,我特意研究了淘宝的运费配置,总结其运费计算方式;本文主要针对按件计费、按重量计费方式,对运费计算进行详细说明,按体积计费大家可按照本文说明,同理可得,自行研究。
一般在电商后台设置运费模板时,会涉及到以下几个参数:配送区域、计价规则、首费标准、首费(元)、增费标准、增费(元)、免邮条件等等。
开始我咨询淘宝客户:“一个订单里包含多个商品多个运费模板,运费是怎么计算?”
客服反馈如下:
如一个订单里包含多个商品多个运费模板时,运费计算逻辑是:根据首费最高、增费最低的原则选择首费模板,其余的商品只计算增费。
举一个例子:
第一步:商品按照运费模板分组,三个商品分数不同的的运费模板,所以共三个计算分组。
第二步:计算首费,从三个分组里根据首费最高增费最低原则,选择A的运费模板作为首费,所以首费为5元。
第三步:计算增费,遍历这三个分组计算增费;A的增费——因为A满足首费,需要扣除首费资源后在计算增费,其增费为(ceil(double(3-2)/2))x1 = 1;B的增费为1×2=2元;C满足包邮条件,也需要扣除资源,其增费为(6-5)x2=2元。
总运费=首费+增费:5+1+2+2 = 10元
好了,官方例子大家可能朦朦胧胧的看明白,也有可能云里雾里的,其中还是涉及到好多细节没有讲到,接下来我们一起来深扒深扒。
运费计算步骤:
步骤一:按照运费模板不同进行分组:其中相同商品同一个模板也应归为一组,后面计算增费均以分组维度来计算的。
步骤二:计算首费:根据首费最高,增费最低的原则,选择首费模板:
首先排除运费为0,包邮的分组,其不参与被选择;若存在两组首费和增费一样的分组,按默认顺序选择其中一组作为首费模板;排除包邮的分组后,只剩下一组分组时,直接按默认运费计算规则计算,无需选择首费模板,也没有步骤三的操作。步骤三:计算增费:遍历不同分组,计算各自增费。
首费所在分组计算增费,需要考虑收费标准;增费数量(超出部分需要缴纳的邮费的件数或者重量)公式如下,且增费数量计算结果要向上取整。每一分组子订单运费公式:子订单运费 = 增费数量 * 增费(元)
计算运费的前,应考虑以下重要两点:
分组所在的运费模板是否是首费模板;分组内是否满足免邮条件;按件计费和按重量计费各有差异,请继续往下看。
按件计费:
有满n件免邮条件,购买件数大于等于n,免邮,运费为 0;有满n件免邮条件,购买件数小于n,不免邮;若分组所在运费模板是首费模板,增费数量公式如下:
公式1
注意:不免邮情况下,此时包邮数量取值为 0。
若不是首费模板的时候,购买件数无需和首费标准件数相比较,增费数量公式如下:
公式2
注意:此时首重标准、包邮数量均取值为 0。
无免邮条件,计算增费数量时,增费数量如下情况:
若分组所在运费模板是首费模板,增费数量公式如(公式1);若不是首费模板的时候,购买件数无需和首费标准件数相比较,增费数量公式如(公式2);按重量计费:
有在 n (KG)内免邮条件,购买商品重量小于等于n,免邮;有在 n (KG)内免邮条件,购买商品重量大于等于n,n 部分免邮;大于n部分按增费计算;若分组所在运费模板是首费模板,增费数量公式如下:
公式3
注意:符合免邮条件情况下,此时首费标准取值为 0。
不是首费模板的时候,增费数量公式如(公式3)
无免邮条件,购买商品重量 m。
若分组所在运费模板是首费模板,增费数量公式如下:
公式4
注意:无免邮条件情况下,此时包邮重量取值为 0。
不是首费模板的时候,增费数量公式如下:
公式5
注意:无免邮条件情况下,此时首费标准、包邮重量取值为 0。
步骤四:总运费 = 首费 + 分组子订单增费合计
举个例子
例子1:多个商品,存在相同运费模板(按件),且满足免邮条件:
按照步骤一规则运费模板分组:A、B同一组,C一组。
计算首费:
按照首费最高,增费最低的原则,有包邮分组要先剔除掉;显然A、B同一模板,合为一组,总计 5 件,满足免邮条件,因此A、B运费为 0,剔除选首费模板资格;目前只留守C组这一个分组,按照规则该订单无需选择首费模板,按照默认规则计算运费即可;计算运费:
C 购买重量 7 KG,满足免邮条件,因此 5 KG 无需手续费用,增费为:
总运费 = 4 元
例子2:多个商品,存在相同运费模板(按重量),且不满足免邮条件
按照步骤一规则运费模板分组:A、B一组,C一组;计算首费:按照步骤二规则选择A、B分组运费模板a作为首费,首费为5元;计算增费:
A、B同一模板,合为一组,总计 4 件,不满足免邮条件,且为首费模板,因此利用公式1计算A、B分组增费:
C分组购买的商品重量为3千克,符合包邮条件, 增费为0。
总运费 = 5 + 1 +0 = 6 元
例子3:多个商品,不同运费模板:
按照步骤一规则运费模板分组:A一组、B一组,C一组;计算首费:按照步骤二规则选择A分组运费模板a作为首费,首费为5元;计算增费:
A分组商品购买3件,不满足免邮条件,且为首费模板,因此利用公式1计算其增费:
B分组商品购买1件,无免邮条件,利用公式2计算其增费:
C分组商品重量为6千克,满足包邮有条件,5千克无需付邮费,超出的1千克,利用公式3:
总运费 = 5 + 1 + 2 + 2 = 10 元。
运费模板组合的方式远远不止上面3种,其他的组合大家可以按照上述运费计算步骤自己去研究技术,不过这可能也增加了技术伙伴的开发难度;但是合理、贴切真实的运费计算规则,在用户购买多件商品时,不会造成运费过高导致用户的流失,
若发现有地方写的不对,欢迎留言,互相探讨
总结:其实就是写一个计算算法来得到最终的运费
THE END