29.3. Zend_Service_Amazon

29.3.1. Введение

Zend_Service_Amazon является простым API для использования веб-сервиса Amazon. Zend_Service_Amazon имеет два API: традиционный, который похож на собственный интерфейс Amazon, и более простой "API запросов", который позволяет легко строить даже сложные поисковые запросы.

Zend_Service_Amazon дает возможность получать информацию, предоставляемую на сайтах Amazon.com, через API веб-сервисов Amazon. Эта информация включает в себя:

  • Информацию о товарной позиции, такую, как изображения, описания, цены и т.д.

  • Рецензии и покупательские отзывы

  • Аксессуары и похожие товары

  • Предложения Amazon.com

  • Списки ListMania

Для того, чтобы использовать Zend_Service_Amazon, необходимо иметь ключ разработчика к API Amazon. Чтобы получить ключ и более подробную информацию, обратитесь к сайту веб-сервисы Amazon.

[Замечание] Внимание

Ваш ключ разработчика к API Amazon связан с вашим аккаунтом в Amazon, поэтому позаботьтесь о том, чтобы хранить ваш ключ в безопасности.

Пример 29.4. Поиск с использованием традиционного API

В данном примере мы ищем книги по PHP на 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 />';
}
?>       

Пример 29.5. Поиск с использованием API запросов

Здесь мы также ищем книги по PHP на Amazon, но используя 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 />';
}
?>       

29.3.2. Коды стран

По умолчанию Zend_Service_Amazon устанавливает соединение с веб-сервисом Amazon для Соединенных Штатов ("US"). Для установки соединения из другой страны просто укажите соответствующий код страны в качестве второго параметра при вызове конструктора:

Пример 29.6. Выбор страны для веб-сервиса Amazon

<?php
// Установка соединения с Amazon в Японии
require_once 'Zend/Service/Amazon.php';
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP');
?>       
[Замечание] Коды стран

Возможные коды стран: CA, DE, FR, JP, UK и US.

29.3.3. Поиск товара по его коду ASIN

Метод itemLookup() дает возможность извлекать определенный товар Amazon, если известен его код ASIN.

Пример 29.7. Поиск товара по его коду ASIN

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

Метод itemLookup() также принимает второй необязательный параметр для управления опциями поиска. За более подробной информацией, включающей список доступных опций, см. соответствующую документацию Amazon.

[Замечание] Информация о изображениях

Для того, чтобы получать информацию о изображениях для результатов поиска, необходимо установить опцию ResponseGroup равной Medium или Large.

29.3.4. Поиск товара Amazon

Поиск товара, основанный на различных возможных критериях, упрощается при использовании метода itemSearch(), как это показано в следующем примере:

Пример 29.8. Поиск товара 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 />';
}
?>       

Метод itemSearch() принимает массива для управлениями опциями поиска в качестве единственного параметра. За более подробной информацией, включающей список доступных опций, см. соответствующую документацию Amazon.

[Подсказка] Подсказка

Класс Zend_Service_Amazon_Query "оберткой" для этого метода, более удобной в использовании.

29.3.5. Использование альтернативного API запросов

29.3.5.1. Введение

Zend_Service_Amazon_Query предоставляет альтернативный API для использования веб-сервиса Amazon. Альтернативный API использует паттерн проектирования Fluent Interface. Это означает, что все вызовы могут производиться по "цепочке" (т.е. $obj->method()->method2($arg)).

API Zend_Service_Amazon_Query использует перегрузку для легкой настройки поиска и дает возможность поиска по определенным критериям. Каждая из опций доступна через вызов метода и каждый аргумент метода соответствует значению опции:

Пример 29.9. Поиск через Amazon с использованием альтернативного API запросов

В данном примере используется альтернативный API запросов для указания опций и их значений:

<?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".

За более подробной информацией про доступные опции обратитесь к соответствующей документации Amazon.

29.3.6. Классы Zend_Service_Amazon

Все следующие классы возвращаются методами Zend_Service_Amazon::itemLookup() и Zend_Service_Amazon::itemSearch():

29.3.6.1. Zend_Service_Amazon_Item

Zend_Service_Amazon_Item является классом, используемым для представления товарных позиций, возвращенных веб-сервисом Amazon.

29.3.6.1.1. Zend_Service_Amazon_Item::asXML()

string asXML();

Возвращает исходный XML-код для товарной позиции

29.3.6.1.2. Свойства класса

Zend_Service_Amazon_Item имеет несколько свойств, напрямую связанных с их аналогами в стандартном API.

Таблица 29.1. Свойства класса Zend_Service_Amazon_Item

Имя Тип Описание
ASIN string ID товарной позиции Amazon
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 Промоушн-тег

Назад к списку классов

29.3.6.2. Zend_Service_Amazon_Image

Класс Zend_Service_Amazon_Image представляет удаленное изображение для продукта.

29.3.6.2.1. Свойства класса

Таблица 29.2. Свойства класса Zend_Service_Amazon_Image

Имя Тип Описание
Url Zend_Uri URL для изображения
Height int Высота изображения в пикселах
Width int Ширина изображения в пикселах

Назад к списку классов

29.3.6.3. Zend_Service_Amazon_ResultSet

Объекты Zend_Service_Amazon_ResultSet возвращаются методом Zend_Service_Amazon::itemSearch() и позволяют легко работать с результатами, возвращенными веб-сервисом.

[Замечание] SeekableIterator

Класс реализует интерфейс SeekableIterator для легкой итерации (например, с использованием foreach) и прямого доступа с использованием seek().

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

Возвращает общее количество результатов поиска

Назад к списку классов

29.3.6.4. Zend_Service_Amazon_OfferSet

Каждый результат, возвращаемый методами Zend_Service_Amazon::itemSearch() и Zend_Service_Amazon::itemLookup(), содержит объекты Zend_Service_Amazon_OfferSet, через которые может быть получена информация о ценах к товару.

29.3.6.4.1. Свойства класса

Таблица 29.3. Свойства класса Zend_Service_Amazon_OfferSet

Имя Тип Описание
LowestNewPrice int Наиболее низкая цена к новому товару
LowestNewPriceCurrency string Валюта, в которой приведена цена LowestNewPrice
LowestOldPrice int Наиболее низкая цена к товару, бывшему в употреблении
LowestOldPriceCurrency string Валюта, в которой приведена цена LowestOldPrice
TotalNew int Общее количество нового товара, доступного для данной позиции
TotalUsed int Общее количество товара, бывшего в употреблении, доступного для данной позиции
TotalCollectible int Общее количество коллекционного товара, доступного для данной позиции
TotalRefurbished int Общее количество подновленного товара, доступного для данной позиции
Offers array Массив объектов Zend_Service_Amazon_Offer

Назад к списку классов

29.3.6.5. Zend_Service_Amazon_Offer

Все предложения к товарной позиции возвращаются как объекты Zend_Service_Amazon_Offer.

29.3.6.5.1. Свойства класса

Таблица 29.4. Свойства класса Zend_Service_Amazon_Offer

Имя Тип Описание
MerchantId string ID продавца Amazon
GlancePage string URL страницы с информацией о продавце
Condition string Состояние товара
OfferListingId string ID листинга предложений
Price int Цена товара
CurrencyCode string Код валюты
Availability string Наличие товара
IsEligibleForSuperSaverShipping boolean Является ли товар подходящим для Super Saver Shipping (экономная доставка)

Назад к списку классов

29.3.6.6. Zend_Service_Amazon_SimilarProduct

Когда производится поиск товара, Amazon также возвращает список похожих продуктов, которые могут соответствовать требованиям покупателя. Все они возвращаются в виде объектов Zend_Service_Amazon_SimilarProduct.

Каждый объект содержит в себе информацию, которая позволяет делать дополнительные запросы для получения более полной информации о товаре.

29.3.6.6.1. Свойства класса

Таблица 29.5. Свойства класса Zend_Service_Amazon_SimilarProduct

Имя Тип Описание
ASIN string Уникальный ID товара Amazon (ASIN)
Title string Название товара

Назад к списку классов

29.3.6.7. Zend_Service_Amazon_Accessories

Аксессуары для возвращенных товарных позиций представляются в виде объектов Zend_Service_Amazon_Accessories.

29.3.6.7.1. Свойства класса

Таблица 29.6. Свойства класса Zend_Service_Amazon_Accessories

Имя Тип Описание
ASIN string Уникальный ID товара Amazon (ASIN)
Title string Название товара

Назад к списку классов

29.3.6.8. Zend_Service_Amazon_CustomerReview

Каждый покупательский отзыв возвращается в виде объекта Zend_Service_Amazon_CustomerReview

29.3.6.8.1. Свойства класса

Таблица 29.7. Свойства класса Zend_Service_Amazon_CustomerReview

Имя Тип Описание
Rating string Рейтинг товара
HelpfulVotes string Голоса за то, что отзыв является полезным
CustomerId string ID покупателя
TotalVotes string Всего голосов
Date string Дата размещения отзыва
Summary string Краткий отзыв
Content string Полный текст отзыва

Назад к списку классов

29.3.6.9. Zend_Service_Amazon_EditorialReview

Каждая рецензии к товару возвращается как объект Zend_Service_Amazon_EditorialReview.

29.3.6.9.1. Свойства класса

Таблица 29.8. Свойства класса Zend_Service_Amazon_EditorialReview

Имя Тип Описание
Source string Источник рецензии
Content string Текст рецензии

Назад к списку классов

29.3.6.10. Zend_Service_Amazon_Listmania

Каждый список ListMania возвращается как объект Zend_Service_Amazon_Listmania.

29.3.6.10.1. Свойства класса

Таблица 29.9. Свойства класса Zend_Service_Amazon_Listmania

Имя Тип Описание
ListId string ID списка
ListName string Имя списка

Назад к списку классов