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

如何通过Shopify Admin API查询deliveryOptions.handle搭建运费折扣应用UI

获取Shopify配送方式Handle用于Shipping Discount Function

你遇到的核心问题是Admin API没有直接暴露和Shipping Discount Function输入中一致的deliveryOptions.handle字段,但可以通过以下两种方式解决:

方法1:通过Shipping Zone + Shipping Method生成匹配的Handle

deliveryOptions.handle的格式是[shipping_zone_hash]-[shipping_method_hash],其中两个哈希值分别对应配送区域(Shipping Zone)和配送方式(Shipping Method)ID的SHA-256哈希前缀(取前32位)。

步骤:

  • 用Admin API(REST或GraphQL)获取店铺所有配送区域及对应配送方式:
    • REST示例:调用GET /admin/api/2024-07/shipping_zones.json,返回的每个shipping_zone下包含shipping_methods数组,每个方法带id字段
    • GraphQL示例:
      query {
        shippingZones(first: 20) {
          edges {
            node {
              id
              name
              shippingMethods(first: 20) {
                edges {
                  node {
                    id
                    name
                    code
                  }
                }
              }
            }
          }
        }
      }
      
  • 对每个配送区域ID(去掉gid://shopify/ShippingZone/前缀的数字部分)和配送方式ID(去掉gid://shopify/ShippingMethod/前缀的数字部分)分别生成SHA-256哈希,取前32位后用-连接,得到的就是deliveryOptions.handle

方法2:绕过Handle,直接匹配配送方式的Title/Code

如果生成Handle太繁琐,可在后台UI让用户选择配送方式的名称(Title)或编码(Code),然后在Shipping Discount Function中直接匹配deliveryOptions.title或deliveryOptions.code,这种方式更直观,且无需依赖Handle的生成规则。

示例Function逻辑(伪代码):

// 从后台配置获取用户选择的目标配送方式编码
const targetDeliveryCode = "Standard";

// 检查购物车是否包含符合条件的商品
function hasEligibleItems(cart) {
  return cart.items.some(item => item.product.tags.includes("免运费资格标签"));
}

// 遍历配送选项并应用折扣
cart.deliveryGroups.forEach(group => {
  group.deliveryOptions.forEach(option => {
    if (option.code === targetDeliveryCode && hasEligibleItems(cart)) {
      option.discount = { amount: option.price, title: "指定商品免运费" };
    }
  });
});

注意事项

  • 配送方式的Handle可能会随配送区域或方式的配置变更而变化,因此用Title/Code匹配更稳定
  • 若必须使用Handle,建议定期同步店铺的配送区域和方式数据,更新后台UI的选项列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:18:16