Jump to content

Consolidate Amazon Api


anilm

Recommended Posts

Hello. I'm not sure if I'm in the correct forum, but here is the problem.

 

I have registered with Amazon for their API's in all European countries. On my website, I want to consolidate and output the results from these countries when a search has been performed.

 

At the moment I have this, for just 1 country (I've omitted irrelevant stuff), but would there be a php script to help accomplish what I want, and also to print out which amazon website the result came from...i.e. amazon.co.uk, amazon.es, amazon.de....?

 

Thanks

 

<?php
 $amazonAWSAccessKeyId = "aaa";
 $amazonSecretAccessKey = "bbb";
 $amazonAssociateTag = "ccc";
 
 
 function amazonSign($url,$secretAccessKey)
 {
   // 0. Append Timestamp parameter
   $url .= "&Timestamp=".gmdate("Y-m-d\TH:i:s\Z");
 
   // 1a. Sort the UTF-8 query string components by parameter name
   $urlParts = parse_url($url);
   parse_str($urlParts["query"],$queryVars);
   ksort($queryVars);
 
   // 1b. URL encode the parameter name and values
   $encodedVars = array();
   foreach($queryVars as $key => $value)
   {
     $encodedVars[amazonEncode($key)] = amazonEncode($value);
   }
 
   // 1c. 1d. Reconstruct encoded query
   $encodedQueryVars = array();
   foreach($encodedVars as $key => $value)
   {
     $encodedQueryVars[] = $key."=".$value;
   }
   $encodedQuery = implode("&",$encodedQueryVars);
 
   // 2. Create the string to sign
   $stringToSign  = "GET";
   $stringToSign .= "\n".strtolower($urlParts["host"]);
   $stringToSign .= "\n".$urlParts["path"];
   $stringToSign .= "\n".$encodedQuery;
 
   // 3. Calculate an RFC 2104-compliant HMAC with the string you just created,
   //    your Secret Access Key as the key, and SHA256 as the hash algorithm.
   if (function_exists("hash_hmac"))
   {
     $hmac = hash_hmac("sha256",$stringToSign,$secretAccessKey,TRUE);
   }
   elseif(function_exists("mhash"))
   {
     $hmac = mhash(MHASH_SHA256,$stringToSign,$secretAccessKey);
   }
   else
   {
     die("No hash function available!");
   }
 
   // 4. Convert the resulting value to base64
   $hmacBase64 = base64_encode($hmac);
 
   // 5. Use the resulting value as the value of the Signature request parameter
   // (URL encoded as per step 1b)
   $url .= "&Signature=".amazonEncode($hmacBase64);
 
   return $url;
 }
 // $q is set by both search.php and products.php
 if ($q)
 {
   // construct Amazon Web Services REST Query URL
   $url .= "&Version=2009-03-01";
   $url .= "&Operation=ItemSearch";
   $url .= "&AWSAccessKeyId=".$amazonAWSAccessKeyId;
   $url .= "&AssociateTag=".$amazonAssociateTag;
   $url .= "&ResponseGroup=Medium";
   // sign
   $url = amazonSign($url,$amazonSecretAccessKey);
   $xml = file_get_contents($url);
 
Link to comment
https://forums.phpfreaks.com/topic/284577-consolidate-amazon-api/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.