"ItemLookup", "ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small") $public_key - your "Access Key ID" $private_key - your "Secret Access Key" */ $regions = array('ca' => array( 'host' => 'ecs.amazonaws.ca', 'uri' => '/onca/xml'), 'cn' => array( 'host' => 'webservices.amazon.cn', 'uri' => '/onca/xml'), 'com' => array( 'host' => 'ecs.amazonaws.com', 'uri' => '/onca/xml'), 'co.uk' => array( 'host' => 'ecs.amazonaws.co.uk', 'uri' => '/onca/xml'), 'de' => array( 'host' => 'ecs.amazonaws.de', 'uri' => '/onca/xml'), 'es' => array( 'host' => 'webservices.amazon.es', 'uri' => '/onca/xml'), 'fr' => array( 'host' => 'ecs.amazonaws.fr', 'uri' => '/onca/xml'), 'it' => array( 'host' => 'webservices.amazon.it', 'uri' => '/onca/xml'), 'jp' => array( 'host' => 'ecs.amazonaws.jp', 'uri' => '/onca/xml')); if (!array_key_exists($region, $regions)) $region = "com"; // some paramters $method = "GET"; $host = $regions[$region]['host']; $uri = $regions[$region]['uri']; // additional parameters $params["Service"] = "AWSECommerceService"; $params["AWSAccessKeyId"] = $public_key; // GMT timestamp $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); // API version $params["Version"] = "2011-08-01"; // sort the parameters ksort($params); // create the canonicalized query $canonicalized_query = array(); foreach ($params as $param=>$value) { $param = str_replace("%7E", "~", rawurlencode($param)); $value = str_replace("%7E", "~", rawurlencode($value)); $canonicalized_query[] = $param."=".$value; } $canonicalized_query = implode("&", $canonicalized_query); // create the string to sign $string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query; // calculate HMAC with SHA256 and base64-encoding $signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, True)); // encode the signature for the request $signature = str_replace("%7E", "~", rawurlencode($signature)); // create request $request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature; //echo ""; // do request $response = @file_get_contents($request); //echo ""; if ($response === False) { return False; } else { // parse XML $pxml = unserialize_xml($response); if ($pxml === False) { return False; // no xml } else { return $pxml; } } } ?>