🛒

Shopify Cart APIでカートページの操作(取得 / 追加 / 更新 / 一部削除)

2022/02/11に公開

概要

Shopify APIの日本語記事ってまだ少ない&見つけづらいですよね。
この記事ではCart APIでカートページ内の商品情報の取得/追加/更新/一部削除するためのコードを記載します。

カートページの情報取得

fetch('/cart.js')
.then(response => response.json())
.then(data => {
    console.log(data);
    console.log(data['items'])
})
.catch((error) => {
    console.error('Error:', error);
});

補足

  • data['items'] にカート内の各商品情報が入ってます。

カートページへの商品追加

const formData = {
    items: [
        {
            id: variantId,
            quantity: 1,
            properties: {
                'オプション1': '利用する'
            } 
        }
    ] 
};

fetch('/cart/add.js', {
    method: 'POST',
    headers: {
        'dataType': 'json',
	'Content-Type': 'application/json'
    },
    body: JSON.stringify(formData)
})
.catch((error) => {
    console.error('Error:', error);
});

補足

  • id
    • 商品の variant(商品ページでオプション変更するとURLパラメータに付与される数字) を指定する
  • quantity
    • カートに追加する商品の数量を指定する
  • properties(Line Item Property)
    • カートに追加される際、任意の情報を商品情報に付与する。カートページで表示されます。

カートページの情報更新

const formData = {
    'line': 1,
    'quantity': 1,
    'properties': {
        'オプション1': '利用する'
    }
};

fetch('/cart/change.js', {
    method: 'POST',
    headers: {
        'dataType': 'json',
	'Content-Type': 'application/json'
    },
    body: JSON.stringify(formData)
})
.catch((error) => {
    console.error('Error:', error);
});

補足

  • line
    • カートに入っている商品の上から何番目(1以上)を更新するか設定
    • idでの指定も可能だが、propertiesが異なる商品が2つ以上カートに入っていると区別できないのでline指定がオススメ
  • quantity
    • 数量変更したい数値を入れる
    • 【商品情報の一部削除】 0を指定するとその商品をカートから削除可能
  • properties(Line Item Property)
    • propertiesの中身を変更する。この時propertiesが再度作り直される。
    • 【propertiesの一部削除】 削除したいpropertyに対してnullを指定するこで削除可能
'properties': {
    'オプション1': null
}

参考

Cart API reference
https://shopify.dev/api/ajax/reference/cart#get-cart-js

Discussion