表格运费适合这种场景:不同国家或省份价格不同,订单越重运费越高,或者订单金额达到某个档位后运费下降。它看起来只是一个CSV,但Magento会根据网站作用域和规则顺序匹配,所以最稳妥的做法不是自己新建空表,而是先从后台导出模板。
先确定你到底按什么计算
后台进入 Stores > Configuration > Sales > Delivery Methods > Table Rates。Table Rates只允许同时使用一种Condition:
- Weight v. Destination:按订单重量和目的地计费。
- Price v. Destination:按订单小计和目的地计费。
- Number of Items v. Destination:按商品件数和目的地计费。
先选好Condition,再导出CSV。因为三种条件的第四列不同,拿“按金额”的模板导入“按重量”配置,表头对不上就会失败。
为什么必须切到Website作用域
Table Rates的规则是Website级别。页面左上角Store View如果停在Default Config,通常看不到正确的导入和导出操作。请切换到实际网站,例如Main Website,必要时取消“Use system value”,再保存一次Condition。
然后点击 Export CSV。导出的表头可能随后台语言显示,但不要手动翻译或改名,直接在原模板中追加规则。
一个按重量收费的例子
假设中国大陆订单按省份区分运费:上海0到5公斤12元,5公斤以上18元;其他地区0到5公斤15元,5公斤以上25元。示意数据可以写成:
| Country | Region/State | Zip/Postal Code | Weight (and above) | Shipping Price |
|---|---|---|---|---|
| CHN | SH | * | 5 | 18 |
| CHN | SH | * | 0 | 12 |
| CHN | * | * | 5 | 25 |
| CHN | * | * | 0 | 15 |
这里最容易误解的是“and above”。5这一行表示重量达到5及以上时使用该价格,0这一行兜底较轻的订单。具体规则应按阈值从高到低排列;地区也要把具体值放在通配符之前,让Magento先匹配更精确的行。
国家、地区和邮编怎么写
Country使用三位国家代码,例如中国是 CHN、美国是 USA、澳大利亚是 AUS。Region/State要使用系统能识别的地区代码或名称。最保险的方法是从当前网站导出模板,并对照后台地区数据。
星号 * 是通配符。邮编列可以填一个明确邮编,也可以用星号匹配全部邮编。默认表格运费不适合表达复杂的连续邮编区间;若业务依赖邮编段,先确认规则数量是否可维护,必要时使用专门的运费模块或定制逻辑。
导入步骤并不复杂,作用域别选错
- 回到同一个Table Rates配置页面。
- 左上角再次确认是目标Website,而不是Default Config或某个Store View。
- 检查Condition与CSV模板一致。
- 在Import处选择整理好的CSV。
- 点击Save Config。
- 清理配置缓存,重新进入页面可再次导出,检查规则是否已写入。
不要只测一个地址
导入成功后至少测试四组购物车:精确地区的低重量、精确地区的高重量、通配地区的低重量、通配地区的高重量。还要测试重量刚好等于阈值时的结果,例如4.99、5.00和5.01公斤。
如果结账不显示Table Rates,按这个顺序排查:方法是否启用、国家是否在允许范围、Show Method if Not Applicable设置、商品是否有重量、虚拟商品是否参与金额计算、Website作用域是否正确,以及购物车地址是否已经触发重新估算。
一个实用建议:每次调整先导出当前规则留档。新CSV上线后保留旧版本和测试地址,运费争议发生时才能还原当时使用的规则。
如果您的运费涉及多仓、偏远地区、免费运费门槛或多个Website,规则很容易互相覆盖。需要协助梳理表格运费和结账验证,可以联系我们。

