สวัสดี เพื่อนๆ ในบอร์ดนี้ครับ หลังจากได้รับความรู้จากบอร์ดนี้ ซึ่งเป็นประโยชน์กับผมมาก และเป็นหนทางการทำเงิน online ซึ่งผมสนใจมานาน (แต่ถึงวันนี้ยังไมประสบผลสำเร็จก็ตาม)
หลังวันที่ 15 สิงหาคม 2552 ทางอเมซอนก็จะมีการเปลี่ยนแปลงเกี่ยวกับ AWS ซึ่งใครที่ใช้ Code เดิมอยู่ก็จะใช้ไม่ได้ เพราะอเมซอนได้เพิ่มเติมการ Request API ด้วย AWS Publickey และ Secretkey ซึ่งต้องมีการเข้ารหัส ก่อนการส่ง Request ไป
วันนี้ผมได้ลองค้นหาวิธีการควบคู่กับการอ่าน Doc ของ Amazon ทำให้ได้ผลเป็นดังนี้ครับ
<?php
function awsrequest($region, $params, $public_key, $private_key)
{
$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");
// 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));
// create request
$request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature;
// 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;
}
}
}
?>
<?php
include("awsrequest.php");
$public_key = "Your Access Key";
$private_key ="Your Secret Key";
//$country = $_GET['country'];
//$itempage = $_GET['itempage'];
//$keywords = trim($_GET['keyword']);
$country = "com";
$itempage = 1;
$keywords = "harry potter";
//if (!in_array($country, array('com','co.uk','ca','fr','de','co.jp')))
// $country = "com";
$pxml = awsrequest($country, array("ItemPage"=>$itempage,"Keywords"=>$keywords,"Operation"=>"ItemSearch","ResponseGroup"=>"Medium","SearchIndex"=>"Books"), $public_key,$private_key);
header("Content-type: text/xml");
echo @file_get_contents($pxml);
?>
ผลที่ไดจะเป็น XML จากนั้นเพื่อนๆ ก็ใช้ XML paser จัดการได้เลยครับ