ThaiSEOBoard.com

ความรู้ทั่วไป => Amazon => ข้อความที่เริ่มโดย: wanlop99 ที่ 10 สิงหาคม 2009, 20:59:47



หัวข้อ: Amazon Product Avertiser API
เริ่มหัวข้อโดย: wanlop99 ที่ 10 สิงหาคม 2009, 20:59:47
สวัสดี เพื่อนๆ ในบอร์ดนี้ครับ หลังจากได้รับความรู้จากบอร์ดนี้ ซึ่งเป็นประโยชน์กับผมมาก และเป็นหนทางการทำเงิน 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_keyTrue));
    
    
// 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 จัดการได้เลยครับ



หัวข้อ: Re: Amazon Product Avertiser API
เริ่มหัวข้อโดย: Biggy ที่ 11 สิงหาคม 2009, 16:59:49
ลองแล้วไม่ขึ้นอะ ผิดตรงไหนไม่รู้ ก๊อบตามแล้วนะ


หัวข้อ: Re: Amazon Product Avertiser API
เริ่มหัวข้อโดย: Chang ที่ 11 สิงหาคม 2009, 17:38:53
ขอบคุณครับ ขอลองก่อน


หัวข้อ: Re: Amazon Product Avertiser API
เริ่มหัวข้อโดย: UnzO ที่ 13 สิงหาคม 2009, 04:25:50
เหมือนเดี๊ยะ  ;D แต่ก็ขอบคุณครับ

http://forums.thaisem.com/index.php?topic=9870.0