TigerZF
🌐Español

64.3. Zend_Service_Amazon

64.3.1. Introducción

Zend_Service_Amazon es una API sencilla para usar los servicios web de Amazon. Zend_Service_Amazon tiene dos APIs: una más tradicional que sigue la propia API de Amazon, y una "Query API" más sencilla para construir fácilmente consultas de búsqueda incluso complejas.

Zend_Service_Amazon permite a los desarrolladores recuperar información que aparece en los sitios web de Amazon.com directamente a través de la API de Amazon Web Services. Algunos ejemplos incluyen:

  • Información de artículos de la tienda, como imágenes, descripciones, precios y más

  • Reseñas de clientes y editoriales

  • Productos similares y accesorios

  • Ofertas de Amazon.com

  • Listas ListMania

Para usar Zend_Service_Amazon, debería tener ya una clave de API de desarrollador de Amazon, así como una clave secreta. Para obtener una clave y más información, visite el sitio web de Amazon Web Services. A partir del 15 de agosto de 2009 solo puede usar la API de Amazon Product Advertising a través de Zend_Service_Amazon, especificando la clave secreta adicional.

[Note] Atención

Sus claves de API de desarrollador y secreta de Amazon están vinculadas a su identidad de Amazon, así que tome las medidas apropiadas para mantenerlas privadas.

Ejemplo 64.4. Buscar en Amazon usando la API tradicional

En este ejemplo, buscamos libros de PHP en Amazon y recorremos los resultados, imprimiéndolos.

$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'US', 'AMAZON_SECRET_KEY');
$results = $amazon->itemSearch(array('SearchIndex' => 'Books',
                                     'Keywords' => 'php'));
foreach ($results as $result) {
    echo $result->Title . '<br />';
}

Ejemplo 64.5. Buscar en Amazon usando la Query API

Aquí, también buscamos libros de PHP en Amazon, pero en su lugar usamos la Query API, que se asemeja al patrón de diseño de Interfaz Fluida (Fluent Interface).

$query = new Zend_Service_Amazon_Query('AMAZON_API_KEY',
                                       'US',
                                       'AMAZON_SECRET_KEY');
$query->category('Books')->Keywords('PHP');
$results = $query->search();
foreach ($results as $result) {
    echo $result->Title . '<br />';
}

64.3.2. Códigos de país

Por defecto, Zend_Service_Amazon se conecta al servicio web de Amazon de Estados Unidos ("US"). Para conectarse desde otro país, simplemente especifique la cadena del código de país apropiado como segundo parámetro del constructor:

Ejemplo 64.6. Elegir un país de Amazon Web Service

// Connect to Amazon in Japan
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP', 'AMAZON_SECRET_KEY');

[Note] Códigos de país

Los códigos de país válidos son: CA, DE, FR, JP, UK, y US.

64.3.3. Buscar un artículo específico de Amazon por ASIN

El método itemLookup() proporciona la capacidad de obtener un artículo concreto de Amazon cuando se conoce el ASIN.

Ejemplo 64.7. Buscar un artículo específico de Amazon por ASIN

$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'US', 'AMAZON_SECRET_KEY');
$item = $amazon->itemLookup('B0000A432X');

El método itemLookup() también acepta un segundo parámetro opcional para gestionar las opciones de búsqueda. Para más detalles, incluyendo una lista de opciones disponibles, consulte la documentación de Amazon correspondiente.

[Note] Información de imágenes

Para recuperar información de imágenes de sus resultados de búsqueda, debe establecer la opción ResponseGroup en Medium o Large.

64.3.4. Realizar búsquedas de artículos en Amazon

Buscar artículos en función de diversos criterios disponibles se simplifica usando el método itemSearch(), como en el siguiente ejemplo:

Ejemplo 64.8. Realizar búsquedas de artículos en Amazon

$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'US', 'AMAZON_SECRET_KEY');
$results = $amazon->itemSearch(array('SearchIndex' => 'Books',
                                     'Keywords' => 'php'));
foreach ($results as $result) {
    echo $result->Title . '<br />';
}

Ejemplo 64.9. Usar la opción ResponseGroup

La opción ResponseGroup se usa para controlar la información específica que se devolverá en la respuesta.

$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'US', 'AMAZON_SECRET_KEY');
$results = $amazon->itemSearch(array(
    'SearchIndex'   => 'Books',
    'Keywords'      => 'php',
    'ResponseGroup' => 'Small,ItemAttributes,Images,SalesRank,Reviews,' .
                       'EditorialReview,Similarities,ListmaniaLists'
    ));
foreach ($results as $result) {
    echo $result->Title . '<br />';
}

El método itemSearch() acepta un único parámetro de tipo array para gestionar las opciones de búsqueda. Para más detalles, incluyendo una lista de las opciones disponibles, consulte la documentación de Amazon correspondiente

[Tip] Consejo

La clase Zend_Service_Amazon_Query es un envoltorio fácil de usar en torno a este método.

64.3.5. Usar la API de consulta alternativa

64.3.5.1. Introducción

Zend_Service_Amazon_Query proporciona una API alternativa para usar Amazon Web Service. La API alternativa usa el patrón de Interfaz Fluida. Es decir, todas las llamadas pueden hacerse encadenando llamadas a métodos. (por ejemplo, $obj->method()->method2($arg))

La API de Zend_Service_Amazon_Query usa sobrecarga para configurar fácilmente una búsqueda de artículos y luego le permite buscar según el criterio especificado. Cada una de las opciones se proporciona como una llamada a método, y el argumento de cada método corresponde al valor de la opción con dicho nombre:

Ejemplo 64.10. Buscar en Amazon usando la API de consulta alternativa

En este ejemplo, se usa la API de consulta alternativa como una interfaz fluida para especificar opciones y sus respectivos valores:

$query = new Zend_Service_Amazon_Query('MY_API_KEY', 'US', 'AMAZON_SECRET_KEY');
$query->Category('Books')->Keywords('PHP');
$results = $query->search();
foreach ($results as $result) {
    echo $result->Title . '<br />';
}

Esto establece la opción Category en "Books" y Keywords en "PHP".

Para más información sobre las opciones disponibles, consulte la documentación de Amazon correspondiente.


64.3.6. Clases de Zend_Service_Amazon

Las siguientes clases son devueltas todas por Zend_Service_Amazon::itemLookup() y Zend_Service_Amazon::itemSearch():

64.3.6.1. Zend_Service_Amazon_Item

Zend_Service_Amazon_Item es el tipo de clase usado para representar un artículo de Amazon devuelto por el servicio web. Engloba todos los atributos del artículo, incluyendo título, descripción, reseñas, etc.

64.3.6.1.1. Zend_Service_Amazon_Item::asXML()

string asXML();

Devuelve el XML original del artículo

64.3.6.1.2. Propiedades

Zend_Service_Amazon_Item tiene varias propiedades directamente relacionadas con sus contrapartes estándar de la API de Amazon.

Tabla 64.1. Propiedades de Zend_Service_Amazon_Item

Nombre Tipo Descripción
ASIN string ID de artículo de Amazon
DetailPageURL string URL a la página de detalles del artículo
SalesRank int Ranking de ventas del artículo
SmallImage Zend_Service_Amazon_Image Imagen pequeña del artículo
MediumImage Zend_Service_Amazon_Image Imagen mediana del artículo
LargeImage Zend_Service_Amazon_Image Imagen grande del artículo
Subjects array Temas del artículo
Offers Zend_Service_Amazon_OfferSet Resumen de ofertas y ofertas del artículo
CustomerReviews array Reseñas de clientes representadas como un array de objetos Zend_Service_Amazon_CustomerReview
EditorialReviews array Reseñas editoriales representadas como un array de objetos Zend_Service_Amazon_EditorialReview
SimilarProducts array Productos similares representados como un array de objetos Zend_Service_Amazon_SimilarProduct
Accessories array Accesorios del artículo representados como un array de objetos Zend_Service_Amazon_Accessories
Tracks array Un array con los números y nombres de las pistas para CDs de música y DVDs
ListmaniaLists array Listas Listmania relacionadas con el artículo como un array de objetos Zend_Service_Amazon_ListmainList
PromotionalTag string Etiqueta promocional del artículo

Volver a la lista de clases

64.3.6.2. Zend_Service_Amazon_Image

Zend_Service_Amazon_Image representa una imagen remota de un producto.

64.3.6.2.1. Propiedades

Tabla 64.2. Propiedades de Zend_Service_Amazon_Image

Nombre Tipo Descripción
Url Zend_Uri URL remota de la imagen
Height int La altura de la imagen en píxeles
Width int El ancho de la imagen en píxeles

Volver a la lista de clases

64.3.6.3. Zend_Service_Amazon_ResultSet

Los objetos Zend_Service_Amazon_ResultSet son devueltos por Zend_Service_Amazon::itemSearch() y le permiten gestionar fácilmente los múltiples resultados devueltos.

[Note] SeekableIterator

Implementa SeekableIterator para facilitar la iteración (por ejemplo, usando foreach), así como el acceso directo a un resultado específico usando seek().

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

Devuelve el número total de resultados devueltos por la búsqueda

Volver a la lista de clases

64.3.6.4. Zend_Service_Amazon_OfferSet

Cada resultado devuelto por Zend_Service_Amazon::itemSearch() y Zend_Service_Amazon::itemLookup() contiene un objeto Zend_Service_Amazon_OfferSet a través del cual se puede recuperar la información de precios del artículo.

64.3.6.4.1. Propiedades

Tabla 64.3. Propiedades de Zend_Service_Amazon_OfferSet

Nombre Tipo Descripción
LowestNewPrice int Precio más bajo del artículo en condición "New" (nuevo)
LowestNewPriceCurrency string La moneda para LowestNewPrice
LowestOldPrice int Precio más bajo del artículo en condición "Used" (usado)
LowestOldPriceCurrency string La moneda para LowestOldPrice
TotalNew int Número total disponible en condición "new" (nuevo) para el artículo
TotalUsed int Número total disponible en condición "used" (usado) para el artículo
TotalCollectible int Número total disponible en condición "collectible" (coleccionable) para el artículo
TotalRefurbished int Número total disponible en condición "refurbished" (reacondicionado) para el artículo
Offers array Un array de objetos Zend_Service_Amazon_Offer.

Volver a la lista de clases

64.3.6.5. Zend_Service_Amazon_Offer

Cada oferta para un artículo se devuelve como un objeto Zend_Service_Amazon_Offer.

64.3.6.5.1. Propiedades de Zend_Service_Amazon_Offer

Tabla 64.4. Propiedades

Nombre Tipo Descripción
MerchantId string ID de Amazon del comerciante
MerchantName string Nombre de Amazon del comerciante. Requiere establecer la opción ResponseGroup en OfferFull para recuperarlo.
GlancePage string URL de una página con un resumen del comerciante
Condition string Condición del artículo
OfferListingId string ID del listado de la oferta
Price int Precio del artículo
CurrencyCode string Código de moneda del precio del artículo
Availability string Disponibilidad del artículo
IsEligibleForSuperSaverShipping boolean Indica si el artículo es elegible o no para Super Saver Shipping

Volver a la lista de clases

64.3.6.6. Zend_Service_Amazon_SimilarProduct

Al buscar artículos, Amazon también devuelve una lista de productos similares que puedan gustarle al usuario. Cada uno de estos se devuelve como un objeto Zend_Service_Amazon_SimilarProduct.

Cada objeto contiene la información necesaria para permitirle realizar solicitudes posteriores y obtener toda la información del artículo.

64.3.6.6.1. Propiedades

Tabla 64.5. Propiedades de Zend_Service_Amazon_SimilarProduct

Nombre Tipo Descripción
ASIN string ID único de Amazon del producto (ASIN)
Title string Título del producto

Volver a la lista de clases

64.3.6.7. Zend_Service_Amazon_Accessories

Los accesorios del artículo devuelto se representan como objetos Zend_Service_Amazon_Accessories

64.3.6.7.1. Propiedades

Tabla 64.6. Propiedades de Zend_Service_Amazon_Accessories

Nombre Tipo Descripción
ASIN string ID único de Amazon del producto (ASIN)
Title string Título del producto

Volver a la lista de clases

64.3.6.8. Zend_Service_Amazon_CustomerReview

Cada reseña de cliente se devuelve como un objeto Zend_Service_Amazon_CustomerReview.

64.3.6.8.1. Propiedades

Tabla 64.7. Propiedades de Zend_Service_Amazon_CustomerReview

Nombre Tipo Descripción
Rating string Valoración del artículo
HelpfulVotes string Votos sobre lo útil que es la reseña
CustomerId string ID del cliente
TotalVotes string Total de votos
Date string Fecha de la reseña
Summary string Resumen de la reseña
Content string Contenido de la reseña

Volver a la lista de clases

64.3.6.9. Zend_Service_Amazon_EditorialReview

Las reseñas editoriales de cada artículo se devuelven como un objeto Zend_Service_Amazon_EditorialReview

64.3.6.9.1. Propiedades

Tabla 64.8. Propiedades de Zend_Service_Amazon_EditorialReview

Nombre Tipo Descripción
Source string Fuente de la reseña editorial
Content string Contenido de la reseña

Volver a la lista de clases

64.3.6.10. Zend_Service_Amazon_Listmania

Los elementos de las listas List Mania de cada resultado se devuelven como objetos Zend_Service_Amazon_Listmania.

64.3.6.10.1. Propiedades

Tabla 64.9. Propiedades de Zend_Service_Amazon_Listmania

Nombre Tipo Descripción
ListId string ID de la lista
ListName string Nombre de la lista

Volver a la lista de clases