调用Amazon SP-API更新包装尺寸时提示'marketplaceIds无效'的问题
解决Amazon SP-API更新SKU尺寸时的"invalid marketplaceIds provided"错误
问题原因
- 请求体非法混入marketplace参数:你在请求体中添加了
MarketplaceId、marketplaceIds等字段,但SP-API的putListingsItem接口要求这些参数作为查询参数传递,而非请求体的一部分,多余字段触发了接口的无效输入判定。 - python-sp-api库调用未显式传递marketplace_ids:虽然初始化
ListingsItems时指定了marketplace,但部分版本的库需要在调用put_listings_item时显式传入marketplace_ids参数,否则会导致参数传递异常。
解决方法
1. 清理请求体,移除所有marketplace相关字段
修改请求体结构,只保留接口要求的内容:
payload = { "productType": "PRODUCT", "requirements": "LISTING", "attributes": {} }
后续仅根据item_dimensions和package_dimensions填充attributes即可,不要添加任何marketplace相关键。
2. 调用put_listings_item时显式传递marketplace_ids参数
更新调用逻辑,添加marketplace_ids参数:
response = ListingsItems(credentials=self.credentials).put_listings_item( sellerId=seller_id, sku=sku, body=payload, marketplace_ids=[self.marketplace.marketplace_id] # 显式传入marketplace ID列表 )
也可以直接传入ID字符串:
marketplace_ids=['A1PA6795UKMFR9']
修改后的完整方法代码
def update_item_dimensions(self, seller_id: str, sku: str, item_dimensions: dict = None, package_dimensions: dict = None): """Update item dimensions.""" try: payload = { "productType": "PRODUCT", "requirements": "LISTING", "attributes": {} } if item_dimensions: payload['attributes']['item_dimensions'] = item_dimensions if package_dimensions: payload['attributes']['package_dimensions'] = package_dimensions response = ListingsItems(credentials=self.credentials).put_listings_item( sellerId=seller_id, sku=sku, body=payload, marketplace_ids=[self.marketplace.marketplace_id] ) return response.payload except SellingApiException as e: print(f"Error updating item dimensions: {e}") return None
额外验证点
- 确认SP-API授权令牌(LWA)拥有德国站(Marketplaces.DE)的操作权限。
- 检查python-sp-api库版本,建议使用最新稳定版,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者Dan Green
相关产品推荐
相关产品推荐

