1


我正在使用 PHP 类与亚马逊产品广告 API 进行交互。我需要能够查找书籍(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);
        }

    }

    ?>
4

1 回答 1

0

按 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);
    }
于 2016-01-28T23:09:05.910 回答