FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

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
1213 485 465

全く同じ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/