当我按如下方式调用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向我建议我的电话是正确的。
对于我做错的任何想法都非常感谢。
答案 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”。