使用PHP jlevers/selling-partner-api通过EAN获取ASIN遇参数错误
问题:通过EAN码获取ASIN时出现类型错误
我正在使用PHP和jlevers/selling-partner-api构建小型Web应用,需要通过EAN码获取ASIN。尝试了以下代码:
$catalogApi = $connector->catalogItems(); try { // EAN code of a product $ean = '3578830113254'; $marketplaceId = 'APJ6JRA9NG5V4'; $includedData = ["summaries", "images", "salesRanks", "productTypes", "identifiers", "variations"]; //search EAN $response = $catalogApi->searchCatalogItems([ 'marketplaceIds' => [$marketplaceId], 'identifiersType' => 'EAN', 'identifiers' => [$ean], 'includedData' => $includedData ]); // Visualizza la risposta echo "<pre>"; print_r($response); echo "</pre>"; } catch (\Exception $e) { // Gestisci gli errori echo "Errore: "; var_dump($e->getMessage()); }
运行时出现如下错误:
SellingPartnerApi\Seller\CatalogItemsV20220401\Api::getCatalogItem():
Argument #1 ($asin) must be of type string, array given
解决方法
错误原因是你用关联数组传递参数的方式不符合该SDK的searchCatalogItems方法规范,导致底层误调用了需要字符串ASIN参数的getCatalogItem方法。
修改代码,将参数按方法定义的顺序逐个传入,而非打包成关联数组:
$catalogApi = $connector->catalogItems(); try { // EAN code of a product $ean = '3578830113254'; $marketplaceId = 'APJ6JRA9NG5V4'; $includedData = ["summaries", "images", "salesRanks", "productTypes", "identifiers", "variations"]; // 按方法参数顺序传入,不需要的可选参数传null $response = $catalogApi->searchCatalogItems( [$marketplaceId], 'EAN', [$ean], null, null, $includedData ); // 打印响应 echo "<pre>"; print_r($response); echo "</pre>"; } catch (\Exception $e) { // 错误处理 echo "Errore: "; var_dump($e->getMessage()); }
如果上述修改后仍有问题,可检查SDK版本是否为最新,或确认searchCatalogItems的方法签名是否与参数传递匹配。
内容的提问来源于stack exchange,提问作者MarcoZ
相关产品推荐
相关产品推荐

