使用Amazon API获取产品详细信息

时间:2009-10-18 21:32:56

标签: php api e-commerce amazon-web-services

我有以下代码输出亚马逊的项目列表,但我不知道如何访问特定的产品(使用Summery,评论等)。任何帮助将不胜感激。

<?php



    function makeAWSUrl($parameters, $associate_tag, $access_key, $secret_key, $aws_version = '2009-06-01') {



        $host = 'ecs.amazonaws.com';

        $path = '/onca/xml';



        $query = array(        

        'Service' => 'AWSECommerceService',

        'AWSAccessKeyId' => $access_key,

        'AssociateTag' => $associate_tag,

        'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'),

        'Version' => $aws_version,

        );



        // Merge in any options that were passed in

        if (is_array($parameters)) {

            $query = array_merge($query, $parameters);

        }



        // Do a case-insensitive, natural order sort on the array keys.

        ksort($query);



        // create the signable string

        $temp = array();



        foreach ($query as $k => $v) {

            $temp[] = str_replace('%7E', '~', rawurlencode($k)) . '=' . str_replace('%7E', '~', rawurlencode($v));

        }



        $signable = implode('&', $temp);



        $stringToSign = "GET\n$host\n$path\n$signable";



        // Hash the AWS secret key and generate a signature for the request.



        $hex_str = hash_hmac('sha256', $stringToSign, $secret_key);



        $raw = '';



        for ($i = 0; $i < strlen($hex_str); $i += 2) {

            $raw .= chr(hexdec(substr($hex_str, $i, 2)));

        }



        $query['Signature'] = base64_encode($raw);

        ksort($query);



        $temp = array();



        foreach ($query as $k => $v) {

            $temp[] = rawurlencode($k) . '=' . rawurlencode($v);

        }



        $final = implode('&', $temp);



        return 'http://' . $host . $path . '?' . $final;

    }



    $url = makeAWSUrl(array('Keywords' => 'ipod',                           

    'Operation' => 'ItemSearch',                          

    'SearchIndex' => 'Electronics'),  

    'ResponseGroup' => 'Medium',                           

    'someid', 'aaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaa');





    $response = simplexml_load_file($url);



    foreach ($response->Items->Item as $item)

    {

        $Title [] = $item->ItemAttributes->Title;

    }





    foreach($Title as $CurrentTitle)

    {

        echo "<h2>".$CurrentTitle."</h2>";

    }







?>

1 个答案:

答案 0 :(得分:6)

$response->Items->Item列表包含与您的查询匹配的所有项目/文章。这是对象的列表。每个对象都获得了ItemAtributes等属性,这些属性也可以具有属性。

查看documentation以查看哪些属性可用。例如,ItemAttributes->ListPrice->Amount包含商品的价格。

例如,为每个结果输出价格和标题会将代码更改为

$response = simplexml_load_file($url);
foreach ($response->Items->Item as $item) {
    echo "<h2>".$item->ItemAttributes->Title."</h2>";
    echo "Price: ".$item->ItemAttributes->ListPrice->Amount;
}