15.3. Zend_Service_Amazon

15.3.1. Introduction

Zend_Service_Amazon 是一个简单的用来操作Amazon web services的API. Zend_Service_Amazon 含两组不同的API, 一组是传统的遵循 Amazon's自身标准的API; 另一个是一组相对简单的API,通过它我们可以非常容易的构建哪怕是很复杂的搜索请求。

Zend_Service_Amazon 允许开发者通过Amazon的Web Services的API来直接得到Amazon.com网站中的信息 . 例子包括:

  • 保存出版物的信息, 如 图片, 描述, 价格, 等
  • 顾客和编辑的评
  • 类似的产品或附属产品
  • Amazon.com 报价
  • ListMania 列表

为了使用 Zend_Service_Amazon, 你应当已经拥有了Amazon开发者API key , 如果你要了解更多信息,请访问 Amazon Web Services .

[注意] 注意
你的Amazon开发者API key是和你的Amazon Id相联系的, 所以请小心使用,不要随便泄漏啦 .

例 15.2. 用传统的API搜索Amazon

在这个例子中, 我们在Amazon中搜索PHP图书,然后遍历结果并打印出它们.

<?php
require_once 'Zend/Service/Amazon.php';
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY&');
$response = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'php'));
foreach ($response as $r) {
    echo $r->Title .'<br />';
}
?>       

例 15.3.  使用Query API搜索来Amazon

这里, 我们同样在Amazon中搜索PHP图书, 但是我们将使用Query API来代替上面的方式, 类似 Fluent Interface 设计模式.

<?php
require_once 'Zend/Service/Amazon/Query.php';
$query = new Zend_Service_Amazon_Query('AMAZON_API_KEY');
$query->category('Books')->Keywords('PHP');
$results = $query->search();
foreach ($results as $result) {
    echo $result->Title .'<br />';
}
?>       

15.3.2. 国家代码

默认情况下, Zend_Service_Amazon 会选择连接到 Amazon 美国("US") 的web service. 如果你希望它连接到其他的国家, 可以简单的指定一个适当的国家代码作为构造函数的第二的参数来实现:

例 15.4. 选择一个 Amazon Web Service 国家

<?php
// Connect to Amazon in Japan
require_once 'Zend/Service/Amazon.php';
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP');
?>       
[注意] 注意
有效的国家代码: CA, DE, FR, JP, UK, 和 US.

15.3.3. 用ASIN来搜索指定的Amazon出版物

如果你知道一个出版物的ASIN,你可以通过itemLookup() 方法来获得这个出版物.

例 15.5. 用ASIN来搜索指定的Amazon出版物

<?php
require_once 'Zend/Service/Amazon.php';
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY');
$item = $amazon->itemLookup('B0000A432X');
?>       

itemLookup() 方法还可以接受第二个参数(可选)来传递搜索选项 . 更多细节, 包括现有的选项列表, 请参考 relevant Amazon documentation.

15.3.4. 对Amazon出版物的搜索

基于现有的各种条件来查询一个出版物可以简单的通过 itemSearch() 方法来实现.如下面的例子:

例 15.6. 对Amazon出版物的搜索

<?php
require_once 'Zend/Service/Amazon.php';
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY');
$response = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'php'));
foreach($response as $r) {
    echo $r->Title .'<br />';
}
?>       

The itemSearch() 方法接受一个数组作为参数来处理搜索请求. 更多细节, 包括现有的选项列表, 请参考 relevant Amazon documentation

[提示] 提示
The Zend_Service_Amazon_Query 类是对这个方法的简单包装.

15.3.5. 另一个可选的查询 API

15.3.5.1. 简介

Zend_Service_Amazon_Query 为Amazon Web Service 提供另一个可选的查询 API. 这个API 使用Fluent Interface 模式. 就是说, 你可以使用一个方法链表来实现所有的调用. (e.g., $obj->method()->method2($arg))

Zend_Service_Amazon_Query 用过载来简单的构建一个出版物查询,然后允许你基于指定的标准进行搜索. 用方法调用来提供每一个查询参数, 每个方法的参数对应那个查询参数的值:

例 15.7. Search Amazon Using the Alternative Query API

在这个例子中, 使用新的查询 API 作为fluent interface来指定查询参数和值:

<?php
require_once 'Zend/Service/Amazon/Query.php';
$query = new Zend_Service_Amazon_Query('MY_API_KEY');
$query->Category('Books')->Keywords('PHP');
$results = $query->search();
foreach ($results as $result) {
    echo $result->Title .'<br />';
}
?>       

它设定查询参数Category 为 "Books" , Keywords 为 "PHP".

关于查询参数的更多信息, 请参考 relevant Amazon documentation.

15.3.6. Zend_Service_Amazon 类

下面的类都是由 Zend_Service_Amazon::itemLookup()Zend_Service_Amazon::itemSearch()这两个方法返回的:

15.3.6.1. Zend_Service_Amazon_Item

Zend_Service_Amazon_Item 一个用来代表由Amazon web service返回的出版物的类. 它包含了出版物的所有属性, 包括 标题, 描述, 评论, 等.

15.3.6.1.1. Zend_Service_Amazon_Item::asXML()

string asXML();

返回出版物原始请求的xml字符串

15.3.6.1.2. 属性

Zend_Service_Amazon_Item 有一组直接与 Amazon标准的API 对应的属性.

表 15.1. Zend_Service_Amazon_Item 属性

名称 类型 描述
ASIN string Amazon 出版物 ID
DetailPageURL string 到相关细节页面url
SalesRank string 出版物的销售等级
SmallImage Zend_Service_Amazon_Image 出版物的小图片
MediumImage Zend_Service_Amazon_Image 出版物的中等大小图片
LargeImage Zend_Service_Amazon_Image 出版物的大图片
Subjects array 出版物的主题
Offers Zend_Service_Amazon_OfferSet 提供出版物的小图片的简介和报价
CustomerReviews array 代表出版物的编辑评论的一组 Zend_Service_Amazon_CustomerReview 对象构成的数组
EditorialReviews array 代表出版物的编辑评论的一组 Zend_Service_Amazon_EditorialReview 对象构成的数组
SimilarProducts array 代表出版物的类似产品列表的一组 Zend_Service_Amazon_SimilarProduct 对象构成的数组
Accessories array 代表出版物的附属产品列表的一组 Zend_Service_Amazon_Accessories 对象构成的数组
Tracks array 代表CD或DVD中歌曲数量和名称的数组
ListmaniaLists array 与指定出版物相关的Listmania列表 ,用 Zend_Service_Amazon_ListmainList 对象的数组表示
PromotionalTag string 指定出版物的促销Tag

Back to Class List

15.3.6.2. Zend_Service_Amazon_Image

Zend_Service_Amazon_Image 代表产品的远程图片.

15.3.6.2.1. 属性

表 15.2. Zend_Service_Amazon_Image 属性

名称 类型 描述
Url string 图片的远程url
Height int 图片的高度(像素)
Width int 图片的宽度(像素)

Back to Class List

15.3.6.3. Zend_Service_Amazon_ResultSet

Zend_Service_Amazon_ResultSet 对象由 Zend_Service_Amazon::itemSearch() 方法返回,并且允许你更容易的处理返回的结果集.

[注意] 注意

该对象实现了 SeekableIterator 接口,我们可以很方便的进行遍历,也可以用seek()直接访问指定的结果.

15.3.6.3.1. Zend_Service_Amazon_ResultSet::totalResults()
int totalResults();

返回返回的搜索结果的总数

Back to Class List

15.3.6.4. Zend_Service_Amazon_OfferSet

每一个由 Zend_Service_Amazon::itemSearch()Zend_Service_Amazon::itemLookup() 返回的结果都包含一个 Zend_Service_Amazon_OfferSet 对象 ,通过他我们可以得到出版物价格信息.

15.3.6.4.1. 属性

表 15.3. Zend_Service_Amazon_OfferSet 属性

名称 类型 描述
LowestNewPrice int 在"New"条件下,出版物的最低价
LowestNewPriceCurrency string LowestNewPrice所使用的货币
LowestOldPrice int 在"Used"条件下,出版物的最低价
LowestOldPriceCurrency string LowestOldPrice的货币
TotalNew int Total number of "new" condition available for the item
TotalUsed int 出版物可用的所有 "used" 条件的数量
TotalCollectible int 出版物可用的所有 "collectible" 条件的数量
TotalRefurbished int 出版物可用的所有 "refurbished" 条件的数量
Offers array Zend_Service_Amazon_Offer 对象的数组

Back to Class List

15.3.6.5. Zend_Service_Amazon_Offer

出版物的价格信息都由Zend的 Zend_Service_Amazon_Offer 对象返回。

表 15.4. Zend_Service_Amazon_Offer 属性

名称 类型 描述
MerchantId string 商品的 Amazon ID
GlancePage string 商品的的摘要页的URL
Condition string 出版物的情况
OfferListingId string ID 和价格列表
Price int 出版物的报价
CurrencyCode string 出版物价格的货币代码
Availability string 出版物的有效性
IsEligibleForSuperSaverShipping boolean 判断这个出版物是否符合Super Saver Shipping的条件

Back to Class List

15.3.6.6. Zend_Service_Amazon_SimilarProduct

当我们搜索一个出版物时, Amazon 同时会返回一个相似产品的列表, 使顾客更容易找到他们喜欢的商品。这些类似产品的列表由Zend_Service_Amazon_SimilarProduct 对相返回.

每个对象包含相关的类似产品,并允许你进行进一步的请求来获得类似产品的全部信息

15.3.6.6.1. 属性

表 15.5. Zend_Service_Amazon_SimilarProduct 属性

名称 类型 描述
ASIN string 产品 Amazon ID (ASIN)
Title string 产品标题

Back to Class List

15.3.6.7. Zend_Service_Amazon_Accessories

返回出版物的附属产品由 Zend_Service_Amazon_Accessories 对象表示

15.3.6.7.1. 属性

表 15.6. Zend_Service_Amazon_Accessories 属性

名称 类型 描述
ASIN string 产品 Amazon ID (ASIN)
Title string 产品标题

Back to Class List

15.3.6.8. Zend_Service_Amazon_CustomerReview

顾客的每条评论由 Zend_Service_Amazon_CustomerReview 对相返回.

15.3.6.8.1. 属性

表 15.7. Zend_Service_Amazon_CustomerReview 属性

名称 类型 描述
Rating string 出版物的评分
HelpfulVotes string 关于对评论是否有用的投票
CustomerId string 顾客 ID
TotalVotes string 所有投票
Date string 评论的日期
Summary string 评论摘要
Content string 评论内容

Back to Class List

15.3.6.9. Zend_Service_Amazon_EditorialReview

出版物的编辑评论由 Zend_Service_Amazon_EditorialReview 对相返回

15.3.6.9.1. 属性

表 15.8. Zend_Service_Amazon_EditorialReview 属性

名称 类型 描述
Source string 编辑评论的来源
Content string 评论内容

Back to Class List

15.3.6.10. Zend_Service_Amazon_Listmania

每个相关的List Mania Zend_Service_Amazon_Listmania 对相返回.

15.3.6.10.1. 属性

表 15.9. Zend_Service_Amazon_Listmania 属性

名称 类型 描述
ListId string 列表 ID
ListName string 列表名称

Back to Class List