2011-11-29 17 views
8

मैं अमेज़न उत्पाद विज्ञापन एपीआई के साथ एक एएसआईएन संख्या की कीमतों प्राप्त करने की कोशिश के साथ कीमतों नहीं मिलता है।मैं अमेज़न उत्पाद विज्ञापन एपीआई

कोड:

$artNr = "B003TKSD8E"; 
    $base_url = "http://ecs.amazonaws.de/onca/xml"; 
    $params = array(
     'AWSAccessKeyId' => self::API_KEY, 
     'AssociateTag' => self::API_ASSOCIATE_TAG, 
     'Version' => "2010-11-01", 
     'Operation' => "ItemLookup", 
     'Service' => "AWSECommerceService", 
     'Condition' => "All", 
     'IdType' => 'ASIN', 
     'ItemId' => $artNr); 


    $params['Timestamp'] = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time()); 

    $url_parts = array(); 
    foreach(array_keys($params) as $key) 
     $url_parts[] = $key . "=" . str_replace('%7E', '~', rawurlencode($params[$key])); 
    sort($url_parts); 

    $url_string = implode("&", $url_parts); 
    $string_to_sign = "GET\necs.amazonaws.de\n/onca/xml\n" . $url_string; 

    $signature = hash_hmac("sha256", $string_to_sign, self::API_SECRET, TRUE); 

    $signature = urlencode(base64_encode($signature)); 

    $url = $base_url . '?' . $url_string . "&Signature=" . $signature; 

    $response = file_get_contents($url); 
    $parsed_xml = simplexml_load_string($response); 

मुझे लगता है कि यह सही होना चाहिए - लेकिन मैं जवाब में प्रदान करता है नहीं मिलता है:

<?xml version="1.0" ?> 
    <ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2010-11-01"> 
    <OperationRequest> 
     <RequestId>*********************</RequestId> 
     <Arguments> 
     <Argument Name="Condition" Value="All"> 
     </Argument> 
     <Argument Name="Operation" Value="ItemLookup"> 
     </Argument> 
     <Argument Name="Service" Value="AWSECommerceService"> 
     </Argument> 
     <Argument Name="ItemId" Value="B003TKSD8E"> 
     </Argument> 
     <Argument Name="IdType" Value="ASIN"> 
     </Argument> 
     <Argument Name="AWSAccessKeyId" Value="*********************"> 
     </Argument> 
     <Argument Name="Timestamp" Value="2011-11-29T01:49:01.000Z"> 
     </Argument> 
     <Argument Name="Signature" Value="*********************"> 
     </Argument> 
     <Argument Name="AssociateTag" Value="*********************"> 
     </Argument> 
     <Argument Name="Version" Value="2010-11-01"> 
     </Argument> 
    </Arguments> 
     <RequestProcessingTime>0.0083130000000000</RequestProcessingTime> 
    </OperationRequest> 
    <Items> 
     <Request> 
     <IsValid>True</IsValid> 
     <ItemLookupRequest> 
      <Condition>All</Condition> 
      <IdType>ASIN</IdType> 
      <ItemId>B003TKSD8E</ItemId> 
      <ResponseGroup>Small</ResponseGroup> 
      <VariationPage>All</VariationPage> 
     </ItemLookupRequest> 
     </Request> 
     <Item> 
     <ASIN>B003TKSD8E</ASIN> 
     <DetailPageURL>http://www.amazon.de/Apple-iPhone-4-32GB-schwarz/dp/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003TKSD8E</DetailPageURL> 
     <ItemLinks> 
      <ItemLink> 
      <Description>Add To Wishlist</Description> 
      <URL>http://www.amazon.de/gp/registry/wishlist/add-item.html%3Fasin.0%3DB003TKSD8E%26SubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL> 
      </ItemLink> 
      <ItemLink> 
      <Description>Tell A Friend</Description> 
      <URL>http://www.amazon.de/gp/pdp/taf/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL> 
      </ItemLink> 
      <ItemLink> 
      <Description>All Customer Reviews</Description> 
      <URL>http://www.amazon.de/review/product/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL> 
      </ItemLink> 
      <ItemLink> 
      <Description>All Offers</Description> 
      <URL>http://www.amazon.de/gp/offer-listing/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL> 
      </ItemLink> 
     </ItemLinks> 
     <ItemAttributes> 
      <Manufacturer>Apple Computer</Manufacturer> 
      <ProductGroup>CE</ProductGroup> 
      <Title>Apple iPhone 4 32GB schwarz</Title>/ItemAttributes> 
     </Item> 
     </Items> 
    </ItemLookupResponse> 

कोई मुझे कृपया समझा सकते हैं कारण है कि मैं किसी भी नहीं मिलता है मूल्य-जानकारी?

आपको बहुत बहुत धन्यवाद

+2

fyi: यह एएसआईएन - अमेज़ॅन मानक पहचान संख्या है। एएनएसआई अमेरिकी राष्ट्रीय मानक संस्थान है। –

+0

'echo $ parsed_xml-> asXML(); 'print_r' की बजाय' echo 'की कोशिश करें क्योंकि' print_r' पूरी तस्वीर' SimpleXML' के साथ नहीं दिखाती है। – hakre

+0

@MarcB Typo, क्षमा करें। – Ueli

उत्तर

22

एक आइटम आप Offers या OfferFull के ResponseGroup पैरामीटर और All के MerchantId पैरामीटर शामिल करने की ज़रूरत के लिए मूल्य प्राप्त करने के लिए:

$params = array(
    'AWSAccessKeyId' => self::API_KEY, 
    'AssociateTag' => self::API_ASSOCIATE_TAG, 
    'Version' => "2010-11-01", 
    'Operation' => "ItemLookup", 
    'Service' => "AWSECommerceService", 
    'Condition' => "All", 
    'IdType' => 'ASIN', 
    'ResponseGroup' => 'Offers',    <- important 
    'MerchantId' => 'All',      <- important 
    'ItemId' => $artNr); 

आप नहीं लगाते हैं तो All की MerchantId आप केवल प्रस्ताव मिल जाएगा अमेज़ॅन के लिए लिस्टिंग (डिफ़ॉल्ट MerchantId)। यह ऑफ़र प्रविष्टि वापस आ जाएगी और आपकी प्रतिक्रिया के बाद की तरह कुछ में शामिल होंगे:

<Items> 
    ... 
    <Item> 
     ... 
     <Offers> 
      ... 
      <Offer> 
       ... 
       <OfferListing> 
        <Price> 
         <Amount>1350</Amount> 
         <CurrencyCode>USD</CurrencyCode> 
         <FormattedPrice>$13.50</FormattedPrice> 
        </Price> 
        ... 
       </OfferListing> 
       ... 
      </Offer> 
     ... 

अधिक जानकारी के लिए Offers Response Group के दस्तावेज़ देखें। अधिक वैध प्रतिक्रिया समूह के लिए ItemLookup operation के लिए प्रतिक्रिया समूह अनुरोध पैरामीटर विवरण भी देखें।

+0

बहुत बहुत धन्यवाद, वह समाधान था! – Ueli

+0

आपका स्वागत है और शुभकामनाएं –

+0

मुझे भी एक ही समस्या का सामना करना पड़ रहा है और ResponseGroup और MarchentId समाधान मेरे लिए काम नहीं कर रहा है। मतभेद हैं, 1) मेरा संस्करण "2011-08-01" 2 है) मैं इसे लागू करने के लिए जावा का उपयोग कर रहा हूं। मैंने देखा एक और मुद्दा है, भले ही मैं ResponseGroup = Medium पास करता हूं, यह प्रतिक्रिया में छोटा दिखाता है। क्या इसके लिए कोई अन्य विकल्प है? – San

2

Xarem, कृपया, Product Advertising API (एपीआई संदर्भ/प्रचालन) पर एक नज़र डालें। आपने आइटम लुकअप ऑपरेशन का अनुरोध किया है और कीमत आपके लिए प्रोमिस नहीं की गई थी। उपलब्ध कीमतें प्राप्त करने के लिए विक्रेता लिस्टिंग लुकअप (या कुछ अन्य) ऑपरेशन का उपयोग करें। यह समझ में नहीं आता है, क्योंकि अमेज़ॅन के विक्रेताओं का एक बड़ा पूल है और कीमतें एक से दूसरे में भिन्न होती हैं, इसलिए वे वस्तुओं के लिए कीमतें नहीं दे सकते हैं, लेकिन आइटम-विक्रेता जोड़े के लिए।

+0

दुर्भाग्यवश, विक्रेता लिस्टिंग लुकअप अब (नई) उत्पाद विज्ञापन API में उपलब्ध नहीं है। – CyberMJ

3

मैं सुझाव है कि आप OfferSummary प्रतिक्रिया समूह का उपयोग जो कुछ इस तरह वापस आ जाएगी: ...

["Items"]=> object(stdClass)#72 (2) { 
    ... 
    ["Item"]=> object(stdClass)#75 (2) { 
     ["ASIN"]=> string(10) "1405910232" 
     ["OfferSummary"]=> object(stdClass)#76 (6) { 
      ["LowestNewPrice"]=> object(stdClass)#77 (3) { 
       ["Amount"]=> int(247) 
       ["CurrencyCode"]=> string(3) "GBP" 
       ["FormattedPrice"]=> string(6) "£2.47" 
      } 
      ["LowestUsedPrice"]=> object(stdClass)#78 (3) { 
       ["Amount"]=> int(297) 
       ["CurrencyCode"]=> string(3) "GBP" 
       ["FormattedPrice"]=> string(6) "£2.97" 
      } 

...

2

था मैं काफी प्रतिनिधि मैं पहले के एक समाधान पर टिप्पणी की है चाहता हूँ लेकिन अफसोस मैं तो एक नया उत्तर प्रदान करने के लिए सीमित कर रहा हूँ ...

, अगर आप सभी का एक MERCHANTID मान पास, तो आप इस अपनी प्रतिक्रिया में देखेंगे:

<MerchantId>Deprecated</MerchantId> 

जो मुझे इंगित करता है कि शायद आपको यह पैरामीटर प्रदान नहीं करना चाहिए, चयनित उत्तर का सुझाव क्या है।

इससे भी अधिक, मुझे संदेह है कि कुछ और चल रहा है। मैं शायद यहां इस बारे में एक नया सवाल उठाउंगा, लेकिन मैं एक वैध एएसआईएन के साथ एक उत्पाद के लिए अनुरोध जमा कर रहा हूं, सच बोल रहा हूं, प्रतिक्रिया समूह ऑफ़र, ऑफरफुल और ऑफरसमरी का अनुरोध कर रहा हूं, और मुझे कोई कीमत नहीं मिल रही है जानकारी। फिर भी जब मैं amazom.com पर एक ही उत्पाद को देखता हूं, तो मुझे मूल्य की जानकारी दिखाई देती है।

तो कुछ और ही यहाँ गलत हो सकता है।

3

"प्रतिक्रिया समूह" पैरामीटर के लिए "माध्यम" का उपयोग करें, छोटे, मध्यम और बड़े मूल्यों की अनुमति दें। छोटी प्रतिक्रिया में कीमत का विवरण नहीं होगा।

http://docs.aws.amazon.com/AWSECommerceService/latest/DG/RG_Small.html

+0

प्रतिक्रिया समूह = छोटा/मध्यम/बड़ा मैंने कोशिश की लेकिन फिर भी यह <प्रतिक्रिया समूह> छोटा और कोई मूल्य विवरण नहीं देता है। क्या आपके पास इसके बारे में कोई अन्य विचार है? – San

0

आप अपने सवाल का जवाब देने associate script से पार्सर का उपयोग कर सकते हैं।

0

संपादित के रूप में नीचे की तरह आपकी प्रतिक्रिया समूह: responseGroup ('मध्यम, OfferSummary, VariationSummary')

प्रतिक्रिया समूह में आप कुंजी "VariationSummary" मिल जाएगा और इस वस्तु के अंदर आप कीमत के लिए पैरामीटर नीचे देख सकते हैं:

  • LowestPrice
  • HighestPrice
  • LowestSalePrice
  • HighestSalePrice

ध्यान दें कि आप VariationSummary ऑब्जेक्ट में सभी 4 पैराम प्राप्त नहीं कर सकते हैं।

संबंधित मुद्दे