Board index   FAQ   Search  
Register  Login
Board index php forum :: php coding PHP coding => General

Consolidate Amazon Api

Ask about general coding issues or problems here.

Moderators: macek, egami, gesf

Consolidate Amazon Api

Postby anilmist » Fri Dec 06, 2013 2:45 am

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.a...mmerceService";
$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);
anilmist
New php-forum User
New php-forum User
 
Posts: 2
Joined: Fri Dec 06, 2013 2:39 am

Return to PHP coding => General

Who is online

Users browsing this forum: Baidu [Spider], Bing [Bot] and 1 guest

Sponsored by Sitebuilder Web hosting and Traduzioni Italiano Rumeno and antispam for cPanel.