Как изменить это 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);
        }

    }

    ?>

person iamnickpitoniak    schedule 12.01.2016    source источник


Ответы (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);
    }
person Linnea Huxford    schedule 28.01.2016