You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Walmart Feeds API更新SKU时的产品ID重复报错?

如何通过Walmart API更新已有商品的SKU?

问题背景

  • 使用/v3/feeds?feedType=MP_MAINTENANCE API更新Walmart商品时,部分商品可正常操作,但更换某一已有商品SKU时触发错误:

The Product ID already exists in your seller catalog with a different SKU. Select Yes from the drop-down in the SKU Update column to update the SKU value.

  • 查阅帮助文档仅找到手动更新SKU的方法,API文档未提及相关步骤
  • 尝试调用DELETE /v3/items/DEL5313221491接口下架商品,确认成功后再次更新SKU,仍报相同错误

当前请求负载代码

$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;
}

解决方案

要通过API实现已有商品的SKU更新,需调整请求参数以触发官方支持的SKU更新逻辑,具体修改如下:

  1. 修改处理模式:将MPItemFeedHeader中的processMode从REPLACE改为UPSERT。REPLACE模式会尝试完全替换商品记录,而UPSERT支持更新已有关联的商品信息。
  2. 添加SKU更新标识:在Orderable节点下新增skuUpdate字段并设置为true,明确告知API允许更新该商品的SKU(对应手动操作中“在SKU Update列选择Yes”的逻辑)。

修改后的关键代码片段:

// 更新processMode为UPSERT
$object->MPItemFeedHeader->processMode = "UPSERT";

// 在Orderable节点添加skuUpdate字段
$mpItem->Orderable->skuUpdate = true;

补充说明

  • 下架商品后仍报错,是因为Walmart后台会保留商品的Product ID与原SKU的绑定记录,仅下架无法解除该关联。
  • 使用UPSERT模式+skuUpdate=true的组合,是API层面触发SKU更新的标准方式,能覆盖手动操作的逻辑。

内容的提问来源于stack exchange,提问作者habib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 02:27:04