php Walmart Feeds API错误:产品ID已存在于您的卖家目录中,但SKU不同

bz4sfanl  于 12个月前  发布在  PHP
关注(0)|答案(1)|浏览(242)

我正在使用这个API "/v3/feeds?feedType=MP_MAINTENANCE"更新一些Walmart商品。我提供的SKU和UPC代码沿着其他细节。它对某些产品来说很好。但有一个特定的产品,这是已经存在于沃尔玛与不同的sku,但现在我想更新sku。
我提供了一个新的SKU,它引发了这个错误:

我读了这篇文章https://sellerhelp.walmart.com/s/guide?article=000007896,他们提供了一种手动更新SKU的方法,关于API,他们说**“有关如何通过API更新SKU的详细信息,请参阅API文档中维护项目下列出的步骤。”**
我查过这个文件
https://developer.walmart.com/doc/us/mp/us-mp-items/?_gl=1ewk6ta_gaOTA2OTE5MzY5LjE2ODM3NjYyNTc._ga_1LB22TM2MG*MTY4NjgzMTI2NS4xMS4xLjE2ODY4MzEyODguMC4wLjA.#1249
但未找到有关如何更新项目SKU的信息。

然后我尝试了以下操作我通过DELETE“/v3/items/DEL 5313221491”退出了该商品,现在已经过去了一天,该商品没有显示在沃尔玛卖家 Jmeter 板的商品列表中。在删除之前,它被列在那里。意味着它成功退役了。我再次尝试通过前面讨论的初始方法更新SKU,但我再次遇到了相同的问题,即该项目已经存在不同的SKU。

下面是我发送给feeds API的payload:

$object = new \stdClass();
            $object->MPItemFeedHeader = new \stdClass();
            $object->MPItemFeedHeader->sellingChannel = "mpmaintenance";
            $object->MPItemFeedHeader->processMode = "REPLACE";
            $object->MPItemFeedHeader->subset = "EXTERNAL";
            $object->MPItemFeedHeader->locale = "en";
            $object->MPItemFeedHeader->version = "1.5";
            $object->MPItemFeedHeader->mart = "WALMART_US";
            $object->MPItem = array();

            foreach ($data as $key => $value) {
                $mpItem = new \stdClass();
                $mpItem->Orderable = new \stdClass();
                $mpItem->Orderable->sku = $value['sku'];
                $mpItem->Orderable->productIdentifiers = new \stdClass();
                $mpItem->Orderable->productIdentifiers->productIdType = $value['productIdType'];
                $mpItem->Orderable->productIdentifiers->productId = $value['productId'];
                $mpItem->Orderable->productName = $value['productName'];
                $mpItem->Orderable->brand = $value['brand'];
                $mpItem->Orderable->price = $value['price'];
                if(isset($value['endDate'])) {
                    $mpItem->Orderable->endDate = $value['endDate'];
                }
                $mpItem->Orderable->pricePerUnit = new \stdClass();

                $mpItem->Visible = new \stdClass();
                $mpItem->Visible->{$value['category']} = new \stdClass();
                $mpItem->Visible->{$value['category']}->shortDescription = strip_tags($value['shortDescription']) . " "  . strip_tags($value['addInfo']);
                $mpItem->Visible->{$value['category']}->mainImageUrl = $value['mainImageUrl'];
                if(isset($value['secondaryImagesUrls'])) {
                    $mpItem->Visible->{$value['category']}->productSecondaryImageURL = $value['secondaryImagesUrls'];
                }

                $object->MPItem[] = $mpItem;

任何人谁可以帮助我,我如何更新现有产品的SKU?

2ekbmq32

2ekbmq321#

从“SKU更新”列的下拉列表中选择“是”以更新SKU值。
根据该错误消息,我猜您需要使用API发送等效的Yes值。
不确定这是否是正确的API文档链接,但在this page上,我可以找到:
SkuUpdate属性设置为Yes
所以你应该试着像这样修改你的代码:

$mpItem = new \stdClass();
$mpItem->Orderable = new \stdClass();
$mpItem->Orderable->sku = $value['sku'];
$mpItem->Orderable->SkuUpdate = 'Yes';
// ...

相关问题