Как изменить это PHP-соединение Amazon Product Advertising API для поиска ISBN

Я использую класс 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);
}

}

?>

1

Решение

Поиск по 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);
}
0

Другие решения

Других решений пока нет …