anilm Posted December 6, 2013 Share Posted December 6, 2013 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 = "http://webservices.amazon.co.uk/onca/xml?Service=AWSECommerceService"; $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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.