2016-01-12 65 views
1


我正在使用PHP类与Amazon产品广告API进行交互。我需要能够查找书籍(ISBN编号),但是这个类似乎不支持它。我试图修改关键字功能以接受ISBN号码,但是我没有运气。任何人都可以将我指向资源的正确方向来学习如何做到这一点,或者如果这是一个简单的解决方案展示给我看?谢谢你在前进
如何更改此亚马逊产品广告API PHP连接以搜索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); 
     } 

    } 

    ?> 

回答

0

Lookup by ISBN需要设置这里的idtype参数书号。扩展您的代码可能如下所示:

public function getItemByISBN($isbn) 
    { 
     $parameters = array("Operation"  => "ItemLookup", 
          "ItemId"  => $isbn, 
          "IdType"  => "ISBN" 
          "ResponseGroup" => "Medium"); 

     $xml_response = $this->queryAmazon($parameters); 

     return $this->verifyXmlResponse($xml_response); 
    } 
相关问题