在Shopify中更改购物车上的订单项属性

时间:2012-09-25 10:01:53

标签: shopify cart

是否可以在将订单项属性添加到购物车后更改? (通过正常的表单提交,还是通过AJAX?)

我尝试使用“属性[MyProperty]”键对/ cart / change进行POST,但到目前为止还没有运气。这与line参数结合使用,表示唯一的订单项。

有什么想法吗?或者它只是一个'不'?

1 个答案:

答案 0 :(得分:6)

使用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有一些技巧,但事实并非如此。

注意,当我尝试通过对cart / change.js发布POST并指定quantity=0来删除订单项时,如下所示:

quantity=0&id=278440178&properties%5Bmy-property%5D=property%20FOO

如果属性property FOO是不属于任何项目的属性(我的购物车现在只有property BAR的商品),则该商品不会从购物车中移除。另一方面,如果我这样做:

POST:quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR

正常删除该项目。

结论:在cart / change.js中,shopify使用行项目属性的方式与使用“id”的方式相同,即查找要更改其数量的行项目。就像您无法使用cart / change.js更改订单项的ID一样,您无法使用它来更改订单项的属性。