"ItemLookup", "ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small") $public_key - your "Access Key ID" $private_key - your "Secret Access Key" */ if ($jaap) print_array($params); // some parameters $method = "GET"; $host = "ecs.amazonaws.".$region; $uri = "/onca/xml"; // additional parameters $params["Service"] = "AWSECommerceService"; $params["AWSAccessKeyId"] = $public_key; // GMT timestamp $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z",time()); //may not be more than 15 minutes out of date! // API version $params["Version"] = "2009-03-31"; // 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)); $signature = rawurlencode($signature); if ($jaap) { echo "signature=$signature
\n"; } // create request $request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature; //20090627 and 20090804/Jaap van Ganswijk: I added the next lines //and commented out the others to prevent getting the file and //interpreting the XML because my script likes to do that itself. return $request; // // do request // $response = @file_get_contents($request); // // if ($response === False) // { // return False; // } // else // { // // parse XML // $pxml = simplexml_load_string($response); // if ($pxml === False) // { // return False; // no xml // } // else // { // return $pxml; // } // } }