Etsy API 错误 - "sku must be consistent across linked products"



我正试图通过此方法更新列表中的变体。。。

列表/'$listing_id'/库存

然而,当我尝试添加第二个SKU时,它会给我错误消息";SKU必须在链接的产品之间保持一致">

我知道在变体中有多个SKU的列表是可能的,因为这就是我们目前的操作方式。我们只是试图将一些功能转移到我们的管理门户(即更改列表的变体(。

现在我们使用";尺寸";以及";"袖长";作为变量。

我能够创建多个";套筒长度";但当我尝试用一个SKU添加多个尺寸时,它会出错。

我还在这里链接了一段视频来解释这个问题。

https://drive.google.com/file/d/1_dywrCfv0QjNzR2VyHqh5un7TXzuV5p8/view?usp=sharing

任何人能提供的帮助,我们将不胜感激。

这是我要发送的数组。

$testarray=  array(
                  [
                    'sku' => 'sku-1',
                    'property_values' => [
                        [
                            'property_id' => '52047899318',
                            'property_name' => 'Size',
                            'scale_id' => 30,
                            'scale_name' => '',
                            'value' => '0-3M White Onesie',
                            'value_id' => '117126874336'
                        ],
                        [
                             'property_id' => '513',
                             'property_name' => 'Sleeve Length',
                             'value' => 'Short SL Onesie',
                             'value_id' => '774674484481'
                        ]
                    ],
                    'offerings' => [
                        [
                            'price' => 10,
                            'quantity' => 3
                        ]
                    ]
                 ],
                  [
                    'sku' => 'sku-2',
                    'property_values' => [
                        [
                            'property_id' => '52047899318',
                            'property_name' => 'Size',
                            'scale_id' => 30,
                            'scale_name' => '',
                            'value' => '0-3M White Onesie',
                            'value_id' => '117126874336'
                        ],
                        [
                             'property_id' => '513',
                             'property_name' => 'Sleeve Length',
                             'value' => 'Short SL Onesie',
                             'value_id' => '774674484481'
                        ]
                    ],
                    'offerings' => [
                        [
                            'price' => 10,
                            'quantity' => 3
                        ]
                    ]
                 ]);

我知道这个问题已经存在2年了,但由于我在实现Etsy api时遇到了同样的错误,我想通过发布我的发现来帮助其他人。

假设您的物品有以下变化

Size: 
    M
    L
Sleeve Length: 
    Long
    Short

您必须知道的第一件事是,当发送属性值时,必须发送所有可能的组合。这意味着:

Size M -> Sleeve Length Long
Size M -> Sleeve Length Short
Size L -> Sleeve Length Long
Size L -> Sleeve Length Short

这就是你的产品阵列中的样子,注意我现在是如何省略sku的:

[
    {
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "M"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Short"
            }
        ]
    },
    {
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "M"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Long"
            }
        ]
    },
    {
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "L"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Short"
            }
        ]
    },
    {
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "L"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Long"
            }
        ]
    }
]

现在,关于sku,假设我们有以下内容:

sku-1表示Size M Sleeve Length Short

sku-2表示Size L Sleeve Length Long

我们没有Size M Sleeve Length LongSize L Sleeve Length Short 的sku

记住这一点,我们的阵列现在看起来是这样的:

[
    {
        "sku": "sku-1",
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "M"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Short"
            }
        ]
    },
    {
        "sku": "",
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "M"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Long"
            }
        ]
    },
    {
        "sku": "",
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "L"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Short"
            }
        ]
    },
    {
        "sku": "sku-2",
        "property_values": [
            {
                "property_id": "52047899318",
                "property_name": "Size",
                "value": "L"
            },
            {
                "property_id": "513",
                "property_name": "Sleeve Length",
                "value": "Long"
            }
        ]
    }
]

我们必须做的最后一件事是,由于我们的sku会随着变化而变化,在我们的情况下,它会根据尺寸和袖子长度而变化,所以在发送数据之前,我们必须告诉etsy sku会根据属性而变化,为此,我们必须设置sku_on_property属性。

在我们的案例中,sku根据属性id 52047899318513进行更改。

基本上,我们的请求主体将如下所示:

{
    "products": [
        {
            "sku": "sku-1",
            "property_values": [
                {
                    "property_id": "52047899318",
                    "property_name": "Size",
                    "value": "M"
                },
                {
                    "property_id": "513",
                    "property_name": "Sleeve Length",
                    "value": "Short"
                }
            ]
        },
        {
            "sku": "",
            "property_values": [
                {
                    "property_id": "52047899318",
                    "property_name": "Size",
                    "value": "M"
                },
                {
                    "property_id": "513",
                    "property_name": "Sleeve Length",
                    "value": "Long"
                }
            ]
        },
        {
            "sku": "",
            "property_values": [
                {
                    "property_id": "52047899318",
                    "property_name": "Size",
                    "value": "L"
                },
                {
                    "property_id": "513",
                    "property_name": "Sleeve Length",
                    "value": "Short"
                }
            ]
        },
        {
            "sku": "sku-2",
            "property_values": [
                {
                    "property_id": "52047899318",
                    "property_name": "Size",
                    "value": "L"
                },
                {
                    "property_id": "513",
                    "property_name": "Sleeve Length",
                    "value": "Long"
                }
            ]
        }
    ],
    "sku_on_property": [
        52047899318,
        513
    ]
}

我希望,至少这条评论会对每一个看到这条线索的人有所帮助。

你必须牢记的小事:

  • 这是针对Etsy api v3的,如果您使用Etsy api v2,我认为sku_on_property应该是逗号分隔的字符串,而不是整数数组,例如:"sku_on_property":"52047899318,513"

  • 如果您的价格和/或数量根据变化而变化,那么您还必须以与sku相同的方式分别设置属性price_on_propertyquantity_on_property

最新更新