Magento SOAP API - catalog_product_attribute_media.list找不到SKU

时间:2014-02-19 14:26:34

标签: php api magento soap

我一直在尝试使用SOAP API将数千个产品图片导入Magento 1.8.1.0网站。

虽然有些已经导入,但有数百个没有。

要尝试查找发生的位置,我使用以下API命令:

catalog_product_attribute_media.list

这为某些SKU返回错误:“产品不存在”。这是http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_product_attribute_media#faults

中记录的真正的API错误

然而,发生这种情况的SKU肯定存在于Magento中,因为我可以在管理面板中搜索它们并查看它们。

$result = $client->call($session, 'catalog_product_attribute_media.list', '452103');

上面的代码会导致异常说“产品不存在”,这意味着它无法找到SKU 452103的任何内容。但是如果我在管理面板中搜索SKU 452103它就在那里!

奇怪的是,如果我获得该SKU的Magento 产品ID (在上面的示例中恰好是3478)并运行以下内容它可以正常工作:

$result = $client->call($session, 'catalog_product_attribute_media.list', '3478');

有谁知道我做错了什么或者为什么会这样? API文档说明了我传递的内容,因为call()的第二个参数可以 产品ID或SKU。

我只能在实践中使用SKU,因为我的源数据不知道Magento产品ID是什么,但是SKU是在没有修改的情况下导入的。我上面使用的产品ID = 3478的代码只是我测试它是否会输出任何东西,但我必须手动找到这个产品ID,这对于我需要修复的图像数量是不实际的。 / p>

1 个答案:

答案 0 :(得分:2)

请阅读API的文档:http://www.magentocommerce.com/api/soap/catalog/catalogProductAttributeMedia/catalog_product_attribute_media.list.html

您会看到第四个参数identifierType表示'定义产品ID或SKU是否在'product'参数中传递。

每当您拨打电话时,API都会假设它是产品的ID。因此,要使其仅由SKU使用,您应该使用以下内容;

$result = $client->call($session, 'catalog_product_attribute_media.list', '452103', 'sku');

有许多API调用(与产品相关)都以相同的方式工作,但默认情况下magento将始终假定您使用产品ID而不是SKU,除非您指定标识符类型。