繁体   English   中英

Shopify 获取所有运费

[英]Shopify get all shipping rates

我正在为我的产品页面创建一个进度条,显示在获得免费送货之前您必须花费多少。 一切都很好,除了我无法获得客户免费送货的运费。 目前我的请求是这样的:

if (cart.items.some(i => i.requires_shipping === true)) {
   const url = '/cart/shipping_rates.json?' + encodeURI('shipping_address[zip]={$zip}&shipping_address[country]={$country}');
   jQuery.getJSON(url, function(shipping_rates) {
     console.log(shipping_rates);
   });
 }

If 语句检查产品是否在需要运输的购物车中。 通过此设置,我将获得基于当前购物车价值的送货方式。 说明:如果购物车价值低于 25 欧元的免运费阈值,送货方式显示运费为 3.5 欧元,一旦购物车价值高于阈值,则表明免运费。

我想根据客户居住的国家/地区获得阈值。有没有一种方法可以通过请求获得阈值,而无需根据 shipping_rates 做出复杂的逻辑?

这种方法的问题是您的请求正在检索给定订单的当前可用运费,但它们没有显示下一个级别。

这种方法存在一些问题:

  1. 您不会获得下一级详细信息(例如距离下一次发货还有多少美元)。 最好将这些信息存储在某个地方,而 JS 不是一个好地方。
  2. 我不确定此时是否会计算 Script Editor / Shopify Functions 运费折扣。 它将在结帐步骤中,但我从未听说过在购物车请求级别发生过这种情况。 如果我的担忧是真的,那么这个端点就不是作为真相来源的最佳选择。
  3. 您正在发出 javascript 请求,这需要时间并假设您在某处显示该信息,您正在遇到回流和 CLS 问题 3.1 这样的请求可能会失败。

由于您需要在某处定义业务逻辑并且您无法摆脱该要求,因此我强烈建议将该逻辑保留在元字段/主题定制器(等级、折扣值)中并使用流动代码计算所有内容。 刷新时,您可以使用 Section Rendering API 重新加载页面的给定部分。 它是这样解决上述问题的:

  1. 您的层设置存储在可以使用 liquid 访问的字段/主题定制器中。
  2. 您无需担心 API 的虚假结果(管理面板中设置的运费与可能的折扣),因为这是由您定义的。 缺点是您需要在两个地方保持折扣逻辑 - 后端和前端(流动性)并保持同步。
  3. 因为您使用 liquid 计算所有内容,所以不会出现回流、加载获取数据和内容布局偏移的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM