magento soap api v2 catalogProductInfo无效

时间:2013-05-25 12:55:33

标签: magento soap magento-1.7

当我按如下方式调用api函数时

<?php $result = $client->catalogProductInfo($session, $id, null, 'sku'); ?>

我收到以下错误。我肯定所有传递的变量都设置正确,因为其他magento api函数工作得很好。

产品不存在 错误:发生内部错误。

我假设这是调用语法的错误。我找不到使用sku而不是产品ID调用 catalogProductInfo 的正确示例。 文档http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.info.html向我建议我的电话是正确的。

对于我做错的任何想法都非常感谢。

3 个答案:

答案 0 :(得分:5)

尝试提交空格作为SKU的最后一个字符。 例如如果SKU "1234"提交"1234 "

如果您提交的sku只包含数字,则有时会出现此问题。

答案 1 :(得分:0)

我认为你遇到了你的电话可以接受的可选参数的问题。 catalogProductInfo()可以带五个参数,其中第一个是sessionId;所有其他参数都传递给方法Mage_Catalog_Model_Product_Api_V2::info(),方法如下:

public function info($productId, $store = null, $attributes = null, $identifierType = null)

如您所见,只有$productId是强制性的,其他参数是可选的。但是,如果要将$identifierType参数传递给方法,则必须传递所有其他参数。因此,在您的情况下,您省略了$store$attributes个参数之一,该方法将sku作为$attributes参数。这会产生你的错误。

所以你应该传递缺少的参数,或者你可以省略$identifierType参数。 Magento可以从$productId的输入中猜出您传递的标识符类型(产品ID或sku)。 info()方法调用_getProduct()方法,后者又调用Mage::helper('catalog/product')->getProduct($productId, $this->_getStoreId($store), $identifierType)。在这种方法中,Magento会猜测你的$productId参数:

if ($identifierType === null) {
        if (is_string($productId) && !preg_match("/^[+-]?[1-9][0-9]*$|^0$/", $productId)) {
            $expectedIdType = 'sku';
        }
    }

答案 2 :(得分:0)

你遗漏了4. param。

功能是smth。像这样:

public catalogProductReturnEntity catalogProductInfo(
string sessionId,
string product,
string storeView,
**catalogProductRequestAttributes attributes,**
string productIdentifierType)

作为“属性”,你通过了“sku”。