使用 Shopify 的 API,您不能使用 cart/change.js 更改订单项的属性。原因是 cart/change.js 使用“属性”来查找您想要的订单项。 API 文档省略了这一点。这是一个例子:
当我使用以下 url 编码参数对 cart/add.js 进行 POST 时:
quantity=9403&id=278440178&properties%5Bmy-property%5D=property%20BAR
响应将包括,
"properties":{"my-property":"property BAR"}
当我继续对 cart/change.js 进行 POST 以将属性从 BAR 更改为 FOO 时,
id=278440178&properties%5Bmy-property%5D=property%20FOO
然后响应将包括,
"properties":{"my-property":"property BAR"}
也就是说,我无法以这种方式更改订单项属性。您可能会怀疑这是因为 cart/change.js API 存在一些技巧,但事实并非如此。
请注意,当我尝试通过 POST 到 cart/change.js 并指定 quantity=0 来删除订单项时,如下所示:
quantity=0&id=278440178&properties%5Bmy-property%5D=property%20FOO
由于property FOO 属性不属于任何物品(我的购物车现在只有一个带有property BAR 的物品),因此该物品不会从购物车中删除。另一方面,如果我这样做:
发帖:quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR
项目被正常删除。
结论:在 cart/change.js 中,shopify 使用 line-item 属性的方式与使用 'id' 的方式相同,即查找要更改数量的 line item。就像您不能使用 cart/change.js 来更改订单项的 id 一样,您也不能使用它来更改订单项的属性。