【问题标题】:Amazon get item details by searching ASIN using API PHP/jQuery亚马逊通过使用 API PHP/jQuery 搜索 ASIN 获取商品详情
【发布时间】:2019-03-19 16:20:30
【问题描述】:

我需要通过搜索 ASIN 获取亚马逊产品详细信息(商品名称、品牌、价格等)。

我查看了 Amazon 的 API,但找不到执行此操作的确切代码。 https://docs.aws.amazon.com/AWSECommerceService/latest/DG/ItemLookup.html

我想与 PHP 或 Javascript 集成。有什么帮助吗?提前致谢。

【问题讨论】:

    标签: php amazon-product-api


    【解决方案1】:

    这是一个简单的例子。您必须将$public_key$private_key$associate_tag 替换为您自己的值。我尚未对此进行测试,但请通过此操作并让我们知道它是否有用。

        <?php
    
        include('aws_signed_request.php');
    
        $public_key = '********';
        $private_key = '********';
        $associate_tag = '********';
    
        // generate signed URL
        $request = aws_signed_request('com', array(
                'Operation' => 'ItemLookup',
                'ItemId' => 'B008GG93YE',
                'ResponseGroup' => 'Small'), $public_key, $private_key, $associate_tag);
    
        // do request (you could also use curl etc.)
        $response = @file_get_contents($request);
        if ($response === FALSE) {
            echo "Request failed.\n";
        } else {
            // parse XML
            $pxml = simplexml_load_string($response);
            if ($pxml === FALSE) {
                echo "Response could not be parsed.\n";
            } else {
                if (isset($pxml->Items->Item->ItemAttributes->Title)) {
                    echo $pxml->Items->Item->ItemAttributes->Title, "\n";
                }
            }
        }
    
        ?>
    

    aws_signed_request.php 代码

    <?php
    
    function aws_signed_request($region, $params, $public_key, $private_key,   $associate_tag=NULL, $version='2011-08-01')
    {
    // some paramters
    $method = 'GET';
    $host = 'webservices.amazon.'.$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'] = $version;
    if ($associate_tag !== NULL) {
        $params['AssociateTag'] = $associate_tag;
    }
    
    // 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;
    
    return $request;
    }
    ?>
    

    【讨论】:

    • 试试这个 $public_key => 'access key' , $private_key => 'secret key'; $associate_tag => 'affiliate_id'
    • sitepoint.com/… 看看这个
    • 代码运行良好,但无法检索价格和图片网址。我可以得到 Title 和 DetailPageURL。请看附图。 prnt.sc/n0h2l8prnt.sc/n0h1im
    • 请你var_dump输出数组,它包含图像和价格的子数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2011-06-12
    • 2012-07-27
    • 1970-01-01
    • 2013-08-19
    相关资源
    最近更新 更多