我没有通过亚马逊产品广告 API 获得价格 [英] I don't get prices with Amazon Product Advertising API

查看:35
本文介绍了我没有通过亚马逊产品广告 API 获得价格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用 Amazon Product Advertising API 获取 ASIN 编号的价格.

代码:

 $artNr = "B003TKSD8E";$base_url = "http://ecs.amazonaws.de/onca/xml";$params = 数组('AWSAccessKeyId' =>self::API_KEY,'AssociateTag' =>self::API_ASSOCIATE_TAG,'版本' =>"2010-11-01",'操作' =>"项目查找",'服务' =>"AWS电子商务服务",'条件' =>全部",'IdType' =>'ASIN','ItemId' =>$artNr);$params['Timestamp'] = gmdate("Y-m-dTH:i:s.\0\0\0\Z", time());$url_parts = array();foreach(array_keys($params) as $key)$url_parts[] = $key .=".str_replace('%7E', '~', rawurlencode($params[$key]));排序($ url_parts);$url_string = implode("&", $url_parts);$string_to_sign = "GET
ecs.amazonaws.de
/onca/xml
" .$url_string;$signature = hash_hmac("sha256", $string_to_sign, self::API_SECRET, TRUE);$signature = urlencode(base64_encode($signature));$url = $base_url .'?.$url_string .&签名=".$签名;$response = file_get_contents($url);$parsed_xml = simplexml_load_string($response);

我认为这应该是正确的 - 但我没有在回复中收到报价:

<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2010-11-01"><操作请求><RequestId>************************</RequestId><参数><参数名称=条件"值=全部"></参数><Argument Name="Operation" Value="ItemLookup"></参数><Argument Name="Service" Value="AWSECommerceService"></参数><Argument Name="ItemId" Value="B003TKSD8E"></参数><参数名称=IdType"值=ASIN"></参数><参数名称="AWSAccessKeyId" 值="************************"></参数><Argument Name="Timestamp" Value="2011-11-29T01:49:01.000Z"></参数><参数名称=签名"值=************************"></参数><Argument Name="AssociateTag" Value="*********************"></参数><参数名称=版本"值=2010-11-01"></参数></参数><RequestProcessingTime>0.0083130000000000</RequestProcessingTime></操作请求><物品><请求><IsValid>True</IsValid><ItemLookupRequest><条件>全部</条件><IdType>ASIN</IdType><ItemId>B003TKSD8E</ItemId><ResponseGroup>小</ResponseGroup><VariationPage>All</VariationPage></ItemLookupRequest></请求><物品><ASIN>B003TKSD8E</ASIN><DetailPageURL>http://www.amazon.de/Apple-iPhone-4-32GB-schwarz/dp/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3%3D205226creativeASIN%3DB003TKSD8E</DetailPageURL><项目链接><物品链接><描述>添加到愿望清单</描述><URL>http://www.amazon.de/gp/registry/wishlist/add-item.html%3Fasin.0%3DB003TKSD8E%26SubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%202026creative%3D12738%26creativeASIN%3DB003TKSD8E</URL></ItemLink><物品链接><描述>告诉朋友</描述><URL>http://www.amazon.de/gp/pdp/taf/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative3%26camp%3D2025%26creative%3<URL2<KreativeId%3DAKIAI6NFQHK2DQIPRUEQ%;</ItemLink><物品链接><描述>所有客户评论</描述><URL>http://www.amazon.de/review/product/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D236Creative%3D236Creative%3D236Creative%3DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D236Creative</ItemLink><物品链接><描述>所有优惠</描述><URL>http://www.amazon.de/gp/offer-listing/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%;</ItemLink></ItemLinks><物品属性><制造商>苹果电脑</制造商><ProductGroup>CE</ProductGroup><Title>Apple iPhone 4 32GB schwarz</Title>/ItemAttributes></项目></项目></ItemLookupResponse>

谁能解释一下为什么我没有得到任何价格信息?

非常感谢

解决方案

要获取商品的价格,您需要包含 OffersResponseGroup 参数OfferFullAllMerchantId 参数:

$params = 数组('AWSAccessKeyId' =>self::API_KEY,'AssociateTag' =>self::API_ASSOCIATE_TAG,'版本' =>"2010-11-01",'操作' =>"项目查找",'服务' =>"AWS电子商务服务",'条件' =>全部",'IdType' =>'ASIN','响应组' =>'优惠', <- 重要'MerchantId' =>'全部', <- 重要'ItemId' =>$artNr);

如果您不包括 AllMerchantId,您将只会获得亚马逊的商品列表(默认的 MerchantId).这将返回要约列表,您的回复将包含以下内容:

...<物品>...<优惠>...<优惠>...<要约列表><价格><数量>1350</数量><CurrencyCode>USD</CurrencyCode><FormattedPrice>$13.50</FormattedPrice></价格>...</OfferListing>...</优惠>...

有关详细信息,请参阅优惠响应组的文档.另请参阅ItemLookup 操作的响应组请求参数说明,了解更多有效响应组.>

I try to get prices of an ASIN number with the Amazon Product Advertising API.

Code:

    $artNr = "B003TKSD8E";
    $base_url = "http://ecs.amazonaws.de/onca/xml";
    $params = array(
        'AWSAccessKeyId' => self::API_KEY,
        'AssociateTag' => self::API_ASSOCIATE_TAG,
        'Version' => "2010-11-01",
        'Operation' => "ItemLookup",
        'Service' => "AWSECommerceService",
        'Condition' => "All",
        'IdType' => 'ASIN',
        'ItemId' => $artNr);


    $params['Timestamp'] = gmdate("Y-m-dTH:i:s.\0\0\0\Z", time());

    $url_parts = array();
    foreach(array_keys($params) as $key)
        $url_parts[] = $key . "=" . str_replace('%7E', '~', rawurlencode($params[$key]));
    sort($url_parts);

    $url_string = implode("&", $url_parts);
    $string_to_sign = "GET
ecs.amazonaws.de
/onca/xml
" . $url_string;

    $signature = hash_hmac("sha256", $string_to_sign, self::API_SECRET, TRUE);

    $signature = urlencode(base64_encode($signature));

    $url = $base_url . '?' . $url_string . "&Signature=" . $signature;

    $response = file_get_contents($url);
    $parsed_xml = simplexml_load_string($response);

I think this should be correct - but I don't get offers in the response:

<?xml version="1.0" ?>
  <ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2010-11-01">
    <OperationRequest>
      <RequestId>*********************</RequestId>
      <Arguments>
        <Argument Name="Condition" Value="All">
      </Argument>
        <Argument Name="Operation" Value="ItemLookup">
      </Argument>
        <Argument Name="Service" Value="AWSECommerceService">
      </Argument>
        <Argument Name="ItemId" Value="B003TKSD8E">
      </Argument>
        <Argument Name="IdType" Value="ASIN">
      </Argument>
        <Argument Name="AWSAccessKeyId" Value="*********************">
      </Argument>
        <Argument Name="Timestamp" Value="2011-11-29T01:49:01.000Z">
      </Argument>
        <Argument Name="Signature" Value="*********************">
      </Argument>
        <Argument Name="AssociateTag" Value="*********************">
      </Argument>
        <Argument Name="Version" Value="2010-11-01">
      </Argument>
    </Arguments>
      <RequestProcessingTime>0.0083130000000000</RequestProcessingTime>
    </OperationRequest>
    <Items>
      <Request>
        <IsValid>True</IsValid>
        <ItemLookupRequest>
          <Condition>All</Condition>
          <IdType>ASIN</IdType>
          <ItemId>B003TKSD8E</ItemId>
          <ResponseGroup>Small</ResponseGroup>
          <VariationPage>All</VariationPage>
        </ItemLookupRequest>
      </Request>
      <Item>
        <ASIN>B003TKSD8E</ASIN>
        <DetailPageURL>http://www.amazon.de/Apple-iPhone-4-32GB-schwarz/dp/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003TKSD8E</DetailPageURL>
        <ItemLinks>
          <ItemLink>
            <Description>Add To Wishlist</Description>
            <URL>http://www.amazon.de/gp/registry/wishlist/add-item.html%3Fasin.0%3DB003TKSD8E%26SubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL>
          </ItemLink>
          <ItemLink>
            <Description>Tell A Friend</Description>
            <URL>http://www.amazon.de/gp/pdp/taf/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL>
          </ItemLink>
          <ItemLink>
            <Description>All Customer Reviews</Description>
            <URL>http://www.amazon.de/review/product/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL>
          </ItemLink>
          <ItemLink>
            <Description>All Offers</Description>
            <URL>http://www.amazon.de/gp/offer-listing/B003TKSD8E%3FSubscriptionId%3DAKIAI6NFQHK2DQIPRUEQ%26tag%3Dbanholzerme-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12738%26creativeASIN%3DB003TKSD8E</URL>
          </ItemLink>
        </ItemLinks>
        <ItemAttributes>
          <Manufacturer>Apple Computer</Manufacturer>
          <ProductGroup>CE</ProductGroup>
          <Title>Apple iPhone 4 32GB schwarz</Title>/ItemAttributes>
        </Item>
      </Items>
    </ItemLookupResponse>

Can someone please explain me why I don't get any price-information?

Thank you very much

解决方案

To get prices for an item you need to include a ResponseGroup parameter of Offers or OfferFull and a MerchantId parameter of All:

$params = array(
    'AWSAccessKeyId' => self::API_KEY,
    'AssociateTag' => self::API_ASSOCIATE_TAG,
    'Version' => "2010-11-01",
    'Operation' => "ItemLookup",
    'Service' => "AWSECommerceService",
    'Condition' => "All",
    'IdType' => 'ASIN',
    'ResponseGroup' => 'Offers',                <- important
    'MerchantId' => 'All',                      <- important
    'ItemId' => $artNr);

If you don't include the MerchantId of All you will only get offer listings for Amazon (the default MerchantId). This will return the offer listings and your response will include something like the following:

<Items>
    ...
    <Item>
        ...
        <Offers>
            ...
            <Offer>
                ...
                <OfferListing>
                    <Price>
                        <Amount>1350</Amount>
                        <CurrencyCode>USD</CurrencyCode>
                        <FormattedPrice>$13.50</FormattedPrice>
                    </Price>
                    ...
                </OfferListing>
                ...
            </Offer>
       ...

See the documentation for the Offers Response Group for more information. Also see the Response Group request parameter description for the ItemLookup operation for more valid Response Groups.

这篇关于我没有通过亚马逊产品广告 API 获得价格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆