如何使用 Shopify API 将商品添加到购物车

Posted

技术标签:

【中文标题】如何使用 Shopify API 将商品添加到购物车【英文标题】:How to add items to the cart using the Shopify API 【发布时间】:2013-05-16 18:31:12 【问题描述】:

我正在使用 Shopify API 开发自定义 Web 应用程序。这里的想法是将该应用程序用作独家店面,并仅向 Shopify API 发出请求。我已经在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作。

我从 api 中提取产品没有问题(使用 /admin/products.json API 端点)。但是我有一段时间尝试使用Ajax API 尤其是 /cart/add.js API 端点将产品从我的域添加到购物车。使用我的 REST 客户端时,我得到了正确的 JSON 响应(我正在使用 Google Chrome 扩展 Postman),但我一辈子都无法在我自己的应用程序中使用它。

在我的应用程序中,我正在向我自己的服务器发送 AJAX 请求,该服务器又使用 curl 调用 API 端点并返回 JSON 响应(以避免跨域问题/必须使用 JSONP)。即使两个 JSON 响应相同,该商品也不会添加到我的 Web 应用程序的购物车中。

示例代码:

javascript

$(".add-to-cart").on('click', function() 
     // sample initialization code here
     // ...
        $.post("/url-to-server", 
            id: id, // this is the variant ID
            quantity: 1
        , function(response) 
                    // more checking to make sure we have proper response
        );

        return false;
    );

服务器端代码 (php):

protected function _ajax_add_item_to_cart()

    $args = $this->input->post();

    // custom app method that makes curl request
    $result = $this->_shopify_request('post', 'cart/add.js', $args);

    // custom app method that returns valid JSON
    return $this->json_response(true, 'Item Added!', [
        'item' => $result
    ]);

示例 JSON 响应(使用 Postman REST 客户端时结果相同):


  "id": 313743963,
  "title": "All Natural GumBits 16oz",
  "price": 3800,
  "line_price": 3800,
  "quantity": 1,
  "sku": "",
  "grams": 0,
  "vendor": "horseshow",
  "properties": null,
  "variant_id": 313743963,
  "url": "/products/all-natural-gumbits-16oz",
  "image": "http://cdn.shopify.com/s/files/1/0235/4155/products/gumbits.png?43",
  "handle": "all-natural-gumbits-16oz",
  "requires_shipping": true

这是我使用 Shopify API 构建的第一个应用程序,因此如果我能获得任何指导,我将不胜感激。我考虑使用合作伙伴应用程序注册并使用 OAuth 身份验证,但这对于我需要做的事情来说似乎有点过头了,因为我不想使用 Shopify 店面而且我不打算在 Shopify 中提供我的应用程序应用商店。

【问题讨论】:

【参考方案1】:

似乎有一个 undocumented 功能(已记录 here)将客户直接转发到结帐页面(带有预装购物车)。你只需要构造一个特殊的URL,例如:

# order 1 item of product with variant_id 300823433
http://murray-inc9186.myshopify.com/cart/300823433:1

# order 1 item  of product with variant_id 300823433
# order 2 items of product with variant_id 261826220
http://murray-inc9186.myshopify.com/cart/300823433:1,261826220:2

也许您可以使用这个特殊的 URL 而不是 AJAX POST 到购物车。

【讨论】:

@hjbolk:如果在任何地方都没有记录,您是如何找到此功能的?虽然这确实将我的商品添加到购物车中,但它并不能解决我在原始帖子中指出的确切问题。附带说明一下,即使使用有效的订单 ID,我似乎也无法使用 API 获取订单详细信息,此时我应该能够做到这一点...... 我在this post 找到了它。 Shopify Widgets App 也使用这个。 直到客户在“付款”页面上确认订单后才会创建订单。在客户提交其地址详细信息后,将创建一个Checkout。在创建 Checkout 之前,Shopify 将购物车存储在 Cart 对象中。但是所有这些对象都不能使用 AJAX API 访问。您只能使用 Shopify API(作为应用程序)访问它们。 感谢您提供链接以及有关 API 的其他信息。这将帮助我和其他将来有问题的人有一个参考点。在我发表评论时没有意识到有单独的结帐和订单 API。 @hjblok 文档链接转到 404。更新版本可以在help.shopify.com/themes/customization/cart/…找到。

以上是关于如何使用 Shopify API 将商品添加到购物车的主要内容,如果未能解决你的问题,请参考以下文章

Shopify 切换购物车按钮位置

在Shopify中按集合排序购物车

如何将项目添加到 PayPal API 中的项目列表

电商网站中添加商品到购物车功能模块2017.12.8

将商品添加到购物车,该商品已经添加了另一个计数

Shopify API开发的几件事情