Я использую класс PHP для взаимодействия с рекламным API продукта Amazon. Мне нужно иметь возможность искать книги (номера ISBN), однако этот класс, кажется, не поддерживает его. Я попытался изменить функцию ключевых слов, чтобы она принимала номер ISBN, но мне не повезло. Кто-нибудь сможет указать мне правильное направление ресурса, чтобы узнать, как это сделать, или если это легко исправить, покажите мне это? заранее спасибо
amazon_api_class.php
<?php
require_once 'aws_signed_request.php';
class AmazonProductAPI
{
private $public_key = "YOUR AMAZON ACCESS KEY ID";
private $private_key = "YOUR AMAZON SECRET KEY";
/* 'Associate Tag' now required, effective from 25th Oct. 2011 */
private $associate_tag = "YOUR AMAZON ASSOCIATE TAG";
const MUSIC = "Music";
const DVD = "DVD";
const GAMES = "VideoGames";
private function verifyXmlResponse($response)
{
if ($response === False)
{
throw new Exception("Could not connect to Amazon");
}
else
{
if (isset($response->Items->Item->ItemAttributes->Title))
{
return ($response);
}
else
{
throw new Exception("Invalid xml response.");
}
}
}
private function queryAmazon($parameters)
{
return aws_signed_request("com",
$parameters,
$this->public_key,
$this->private_key,
$this->associate_tag);
}
public function searchProducts($search,$category,$searchType="UPC")
{
$allowedTypes = array("UPC", "TITLE", "ARTIST", "KEYWORD");
$allowedCategories = array("Music", "DVD", "VideoGames");
switch($searchType)
{
case "UPC" :
$parameters = array("Operation" => "ItemLookup",
"ItemId" => $search,
"SearchIndex" => $category,
"IdType" => "UPC",
"ResponseGroup" => "Medium");
break;
case "TITLE" :
$parameters = array("Operation" => "ItemSearch",
"Title" => $search,
"SearchIndex" => $category,
"ResponseGroup" => "Medium");
break;
}
$xml_response = $this->queryAmazon($parameters);
return $this->verifyXmlResponse($xml_response);
}
public function getItemByUpc($upc_code, $product_type)
{
$parameters = array("Operation" => "ItemLookup",
"ItemId" => $upc_code,
"SearchIndex" => $product_type,
"IdType" => "UPC",
"ResponseGroup" => "Medium");
$xml_response = $this->queryAmazon($parameters);
return $this->verifyXmlResponse($xml_response);
}
public function getItemByAsin($asin_code)
{
$parameters = array("Operation" => "ItemLookup",
"ItemId" => $asin_code,
"ResponseGroup" => "Medium");
$xml_response = $this->queryAmazon($parameters);
return $this->verifyXmlResponse($xml_response);
}
public function getItemByKeyword($keyword, $product_type)
{
$parameters = array("Operation" => "ItemSearch",
"Keywords" => $keyword,
"SearchIndex" => $product_type);
$xml_response = $this->queryAmazon($parameters);
return $this->verifyXmlResponse($xml_response);
}
}
?>
Поиск по ISBN требует установки параметра IdType в ISBN. Расширение вашего кода может выглядеть так:
public function getItemByISBN($isbn)
{
$parameters = array("Operation" => "ItemLookup",
"ItemId" => $isbn,
"IdType" => "ISBN""ResponseGroup" => "Medium");
$xml_response = $this->queryAmazon($parameters);
return $this->verifyXmlResponse($xml_response);
}
Других решений пока нет …