FROM CACHE - jp_header

Storefront APIのcheckoutCreate mutationで "Variant 無効です" というエラーが時々返る

Storefront APIのcheckoutCreate mutationで "Variant 無効です" というエラーが時々返る

asdeva
訪問者
1 0 0

カスタムアプリでStorefront API (API ver. 2022-10) checkoutCreate mutationを叩いているのですが、同じmutationを渡しても成功する場合と以下のエラーが返る場合があります。

{
    "data": {
        "checkoutCreate": {
            "checkout": null,
            "checkoutUserErrors": [
                {
                    "field": [
                        "input",
                        "lineItems",
                        "0",
                        "variantId"
                    ],
                    "message": "Variant 無効です"
                },
                {
                    "field": [
                        "input",
                        "lineItems",
                        "1",
                        "variantId"
                    ],
                    "message": "Variant 無効です"
                },
                {
                    "field": [
                        "input",
                        "lineItems",
                        "2",
                        "variantId"
                    ],
                    "message": "Variant 無効です"
                }
            ]
        }
    }
}

 

このエラーが返った時に叩いたAPIは以下のコードによるものです。

axios.post(
  `https://****.myshopify.com/api/2022-10/graphql.json`,
  {
    query: `
      mutation {
        checkoutCreate(input: {
          lineItems: [{variantId: "gid://shopify/ProductVariant/********", quantity: 1}, {variantId: "gid://shopify/ProductVariant/********", quantity: 2}, {variantId: "gid://shopify/ProductVariant/********", quantity: 1}]
          shippingAddress: {
            zip: "*******",
            country: "Japan",
            province: "****",
            city: "****",
            address1: "****",
            firstName: "****",
            lastName: "****"
          }
        }) {
          checkout {
            id
            webUrl
            subtotalPrice {
              amount
            }
            totalTax {
                amount
            }
            taxesIncluded
            availableShippingRates {
              shippingRates {
                handle
                price {
                  amount
                }
                title
              }
            }
          }
          checkoutUserErrors {
            field
            message
          }
        }
      }
    `,
    variables: {},
  },
  {
    headers: {
      "X-Shopify-Storefront-Access-Token": "****",
      "Shopify-Storefront-Buyer-IP": "**.**.**.**",
      "Content-Type": "application/json",
    },
  },
)

 

一方で、同じinputで同じmutationを叩いていてもエラーにならず、checkoutCreate.checkout.idを取得できる場合もあります。

 

考えられる原因や解決策がありましたら教えていただけますと幸いです。

1件の返信1

Qcoltd
Shopify Partner
1059 435 427

全く同じinput(variantIdも全くの同一)であるにも関わらず、

エラーが返却される場合と、されない場合がある、

ということでしたら、

この回答は役に立ちませんので、

無視していただければ幸いです。

 

もし、万が一、

エラーが出る場合と出ない場合でvariantIdが異なる場合は、

下記の、海外のShopifyコミュニティの投稿が参考になるかもしれません。

 

https://community.shopify.com/c/shopify-apis-and-sdks/checkout-create-error/td-p/1792447

 

checkoutCreateをコールした際、

'Variant is invalid'が時々返ってくることがある。

しかし、ShopifyのWebサイト上からは通常通り購入できる。

 

という質問に対して、

 

一般的に、

商品のステータスが「公開中」になっていないときや、

販売チャンネルが設定されていないときに、

Variant is invalidになる。

 

という回答がベストアンサーとして選ばれていました。

 

このスレッドの投稿者の場合は、

別のアプリが商品の販売チャンネルを全て無効にしてしまうことがあったようなので、

@asdeva 様の状況とマッチするか分からないのですが、

Variant 無効が発生する商品の

販売チャンネルとステータスを確認されると良いかもしれません。

 

なお、

Shopify Admin API GraphiQL explorer (Storefront APIのテストもできます)

https://shopify.dev/apps/tools/graphiql-admin-api

を使い質問者様からいただいたクエリをなるべく再現して何度かAPIコールしてみたのですが、

私の環境ではエラーを再現できず、

これ以上は分からなそうでした。

 

大した情報がなく恐縮です。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/