1

複数のバリエーションがある製品を更新すると、エラー応答が返されます。

{"errors":{"base":["Options are not unique"]}}

または時々:

{"errors":{"variants":["is invalid"], "base":["Options are not unique"]}}

次のようなデータを使用して、/admin/products/122821632.json のようなものに PUT リクエストを作成しています。

{"product":{"id":"122821632",
           "body_html":"test",
           "vendor":"Acme",
           "title":"Monkey T-Shirt",
           "variants":[{"option1":"LARGE",
                        "sku":"test-sku-2",
                        "product_id":"122821632",
                        "id":"282988194",
                        "price":"21.99",
                        "grams":"200"},
                       {"option1":"TINY",
                        "sku":"test-sku-1",
                        "product_id":"122821632",
                        "id":"282990692",
                        "price":"21.99",
                        "grams":"200"}],
           "options":[{"position":1,
                       "name":"Size",
                        "product_id":"122821632"}]}}

ただし、単一のバリアントを配置してから、複数のバリアント データ JSON を配置すると、機能することに気付きました。これは、バリアントを削除して再作成することを意味します。特に、バリアントに関するすべてのデータが保存されていないため、本番環境に展開できないため、これはプラグインにとって許容される動作ではないと思います。

これを行うには、次の PUT リクエストを作成します。

{"product":{"id":"122821632",
           "body_html":"test",
           "vendor":"Acme",
           "title":"Monkey T-Shirt",
           "variants":[{"option1":"LARGE",
                        "sku":"test-sku-2",
                        "product_id":"122821632",
                        "id":"282988194",
                        "price":"21.99",
                        "grams":"200"}],
           "options":[{"position":1,
                       "name":"Size",
                       "product_id":"122821632"}]}}

これは 200 を返します。

{"product":{"id":"122821632",
           "body_html":"test",
           "vendor":"Acme",
           "title":"Monkey T-Shirt",
           "variants":[{"option1":"LARGE",
                        "sku":"test-sku-2",
                        "product_id":"122821632",
                        "id":"282988194",
                        "price":"21.99",
                        "grams":"200"},
                       {"option1":"TINY",
                        "sku":"test-sku-1",
                        "product_id":"122821632",
                        "id":"282990692",
                        "price":"21.99",
                        "grams":"200"}],
           "options":[{"position":1,
                       "name":"Size",
                       "product_id":"122821632"}]}}

これは 200 を返します。

{"product":{"id":"122821632",
           "body_html":"test",
           "vendor":"Acme",
           "title":"Monkey T-Shirt",
           "variants":[{"option1":"LARGE",
                        "sku":"test-sku-2",
                        "product_id":"122821632",
                        "id":"282988194",
                        "price":"21.99",
                        "grams":"200"},
                       {"option1":"TINY",
                        "sku":"test-sku-1",
                        "product_id":"122821632",
                        "id":"282990692",
                        "price":"21.99",
                        "grams":"200"}],
           "options":[{"position":1,
                       "name":"Size",
                       "product_id":"122821632"}]}}

エラーが発生します。また、削除して再作成したバリアントの ID が変更されました (get リクエストで確認できます)。

{"product":{"body_html":"test",
            "handle":"69",
            "images":[],
            "template_suffix":null,
            "product_type":"Shirts",
            "updated_at":"2013-03-07T11:36:51-05:00",
            "variants":[{"position":1,
                         "option1":"LARGE",
                         "option2":null,
                         "option3":null,
                         "updated_at":"2013-03-07T07:30:15-05:00",
                         "inventory_quantity":1,
                         "title":"LARGE",
                         "product_id":122821632,
                         "created_at":"2013-03-06T11:03:36-05:00",
                         "compare_at_price":"24.99",
                         "fulfillment_service":"manual",
                         "inventory_management":"",
                         "sku":"test-sku-2",
                         "taxable":true,
                         "requires_shipping":true,
                         "price":"21.99",
                         "inventory_policy":"deny",
                         "id":282988194,
                         "grams":200},
                        {"position":2,
                         "option1":"TINY",
                         "option2":null,
                         "option3":null,
                         "updated_at":"2013-03-07T11:36:51-05:00",
                         "inventory_quantity":1,
                         "title":"TINY",
                         "product_id":122821632,
                         "created_at":"2013-03-07T11:36:51-05:00",
                         "compare_at_price":null,
                         "fulfillment_service":"manual",
                         "inventory_management":null,
                         "sku":"test-sku-1",
                         "taxable":true,
                         "requires_shipping":true,
                         "price":"21.99",
                         "inventory_policy":"deny",
                         "id":283397624,
                         "grams":200}],
            "title":"Monkey T-Shirt",
            "created_at":"2013-02-22T05:35:02-05:00",
            "options":[{"id":147204272,
                        "name":"Size",
                        "position":1,
                        "product_id":122821632}],
            "vendor":"Acme",
            "id":122821632,
            "published_at":"2013-02-22T05:35:02-05:00",
            "tags":"mens t-shirt example"}}

私は、同じ URL への同じデータの 2 回目の PUT 要求は、変更されないはずであるという印象を受けています。

私は何を間違っていますか?これは Shopify API のバグですか?

4

2 に答える 2

0

私は昨日あなたと同じ問題を抱えていました。PUT /admin/products/122821632.json を使用してバリアントを変更できないようです。

バリエーションを含む商品を作成したら、http://docs.shopify.com/api/product_variant#updateを使用して個々のバリエーションを更新する必要があります。そうしないと、商品の PUT にバリエーション データを含めるとエラーが発生します。

バリエーションが設定された後に更新する場合は、製品 PUT のすべてのバリエーション情報を見逃す必要があります。

于 2013-08-27T10:25:53.693 に答える
0

私の友人、私がそれを行うとき、オプションIDも通知していました...したがって、オプション部分は次のようになります。

"options":[{"id":147204272,"position":1,"name":"Size","product_id":"122821632"}]}}

オプションは、json に関してバリアントに似ており、id もあります。同じことがイメージンにも起こります。

それが役立つかどうか教えてください。

于 2013-04-03T01:31:53.087 に答える