You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于white-glove产品标签隐藏运费费率时运费成本翻倍问题求助

问题原因

运费翻倍的根源

你当前使用的脚本仅实现了「无white-glove标签商品时隐藏上门配送选项」的逻辑,完全没有处理运费叠加规则,费用翻倍通常是两种后台配置冲突导致的:

  • 你给White Glove配送选项设置了固定的上门服务费
  • 同时你给带有white-glove标签的商品单独设置了商品级运费
    当购物车存在混合商品时,两种运费会叠加计算,最终显示翻倍的费用。

优化后的简洁实现

我们可以直接抛弃脚本生成器产生的冗余类,用100行以内的代码实现完整需求,逻辑如下:

  • 购物车无white-glove标签商品:隐藏上门配送选项,保留所有原有运费选项(含免运费)
  • 购物车有white-glove标签商品:保留免运费选项+上门配送选项,仅在用户选择上门配送时收取一次固定服务费,不会叠加计费
  • 完全不影响原有免运费规则的生效,只要用户符合免邮条件,不管购物车有没有带white-glove标签的商品,都可以正常选择免运费选项
# 配置项,可根据实际需求修改
WHITE_GLOVE_TAG = "white-glove"
WHITE_GLOVE_RATE_NAME = "White Glove"
WHITE_GLOVE_FEE = 2999 # 费用单位为分,例如此处代表29.99元

# 检查购物车是否包含需要上门配送的商品
has_white_glove_item = Input.cart.line_items.any? do |item|
  item.variant.product.tags.any? { |tag| tag.downcase == WHITE_GLOVE_TAG }
end

# 没有上门商品时,隐藏不需要的上门配送选项
Input.shipping_rates.delete_if do |rate|
  !has_white_glove_item && rate.name.downcase == WHITE_GLOVE_RATE_NAME.downcase
end

# 有上门商品时,统一设置上门配送的服务费,避免后台配置叠加导致费用翻倍
if has_white_glove_item
  Input.shipping_rates.each do |rate|
    if rate.name.downcase == WHITE_GLOVE_RATE_NAME.downcase
      rate.price = WHITE_GLOVE_FEE
    end
  end
end

Output.shipping_rates = Input.shipping_rates

使用注意

使用前请先删除后台给white-glove标签商品设置的单独商品级运费,所有上门服务费都在这个脚本的开头配置项里统一设置即可,从根源避免叠加计费。

内容的提问来源于stack exchange,提问作者Joanna Schweiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:21:00