24.3. Zend_Service_Amazon
Précédent | Chapitre 24. Zend_Service | Suivant

## 24.3. Zend_Service_Amazon

### 24.3.1. Introduction

`Zend_Service_Amazon` est une API simpe pour utiliser les web services d'Amazon. `Zend_Service_Amazon` a deux APIs : une plutôt traditionnelle qui suit la propre API d'Amazon, et un "Query API" simplifiée pour construire facilement des requêtes de recherche, même compliquées.

`Zend_Service_Amazon` permet aux développeurs de récupérer des informations disponible sur le site Amazon.com directement à traver l'API Amazon Web Services. Les exemples incluent :

- Le stockage de données informatives, comme des images, des descriptions, le prix et plus

- Revues éditoriales et commerciales

- Des produits et accessoires similaires

- Les offres Amazon.com

- Les listes ListMania

Pour pouvoir utiliser `Zend_Service_Amazon`, vous devez avant tout avoir une clé 'developer API' Amazon. Pour obtenir une telle clé et pour plus d'informattions, vous pouvez visitez le site Web Amazon Web Services.

| Attention
Votre clé 'developer API' est liée à votre identité Amazon, donc faites en sorte de conserver votre clé d'API privée.

Exemple 24.4. Recherche sur Amazon en utilisant l'API traditionnelle

Dans cet exemple, nous recherchons les livres sur PHP disponibles chez Amazon et boucler sur les résultats pour les afficher.

    <?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 />';
    }
    ?>

Exemple 24.5. Recherche sur Amazon en utilisant l'API de requête

Ici nous cherchons aussi les livres sur PHP disponibles chez Amazon, mais en utilisant l'API de requête, qui ressemble au modèle de conception Interface Fluide.

    <?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 />';
    }
    ?>

### 24.3.2. Codes de pays

Par défaut, `Zend_Service_Amazon` se connecte au web service Amazon américain ("`US`"). Pour se connecter depuis un pays différent, il vous suffit simplement de définir, comme second paramètre du constructeur, la chaîne de carcatère correspondant au code du pays :

Exemple 24.6. Choisir un service Web Amazon d'un pays

    <?php
    // Connexion à  Amazon France
    require_once 'Zend/Service/Amazon.php';
    $amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'FR');
    ?>

| Country codes
Les codes de payx valides sont `CA`, `DE`, `FR`, `JP`, `UK`, et `US`.

### 24.3.3. Rechercher un produit Amazon spécifique avec son ASIN

La méthode `itemLookup()` fournit la possibilité de rechercher un produit Amazon particulier lorsque son ASIN est connu.

Exemple 24.7. Rechercher une produit Amazon spécifique avec son ASIN

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

La méthode `itemLookup()` accepte aussi un second paramètre optionnel pour gérer les options de recherche. Pour les détails complet et une liste des options disponibles, visitez la documentation Amazon correspondante. .

| Image information
Pour récupérer les informations d'images pour vos résultats de recherche, vous devez définir l'option `ResponseGroup` à `Medium` ou `Large`.

### 24.3.4. Lancer des recherches de produits sur Amazon

Rechercher des produits basés sur tous les divers critères disponible sont rendus simples grà¢ce à la méthode `itemSearch()`, comme le montre l'exemple suivant :

Exemple 24.8. Lancer des recherches de produits sur 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 />';
    }
    ?>

La méthode `itemSearch()` accepte un seul tableau en paramètre pour gérer les options de recheche. Pour plus de détails et une liste des options disponibles, visitez la documentation Amazon correspondante

| Astuce
La classe `Zend_Service_Amazon_Query` est une enveloppe simple d'utilisation de cette méthode.

### 24.3.5. Utiliser l'API alternative de requêtes

#### 24.3.5.1. Introduction

`Zend_Service_Amazon_Query` fournit une API alternative pour utiliser le service Web Amazon. L'API alternative utilise le modèle de conception 'Interface Fluide'. C'est à dire que les apells peuvent-être fait en utilisant une chaà®ne d'appels de méthodes (ie `$obj->method()->method2($arg)`)

L'API `Zend_Service_Amazon_Query` utilise la surcharge pour mettre en place facilement une recherche d'article, and ainsi vous permettre de chercher en se basant sur les critères spécifiés. Chacune de ces options est fournie en tant qu'appel de méthode, et chaque paramètre de méthode correspond à la valeur des options nommées.

Exemple 24.9. Rechercher sur Amazon en utilisant l'API alternative de requêtes

Dans cet exemple, l'API de requêtes alternative est utilisée comme une interface fluide pour spécifier les options et leurs valeurs respective :

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

Cela définit l'option `Category` à "Livres" et `Keywords` à "PHP".

Pour plus d'information sur les options disponibles, vous pouvez vous référer à la documentation spécifique.

### 24.3.6. Classes Zend_Service_Amazon

Les classes suivantes sont toutes retournées par `Zend_Service_Amazon::itemLookup()` et `Zend_Service_Amazon::itemSearch()`:

- `Zend_Service_Amazon_Item`

- `Zend_Service_Amazon_Image`

- `Zend_Service_Amazon_ResultSet`

- `Zend_Service_Amazon_OfferSet`

- `Zend_Service_Amazon_Offer`

- `Zend_Service_Amazon_SimilarProduct`

- `Zend_Service_Amazon_Accessories`

- `Zend_Service_Amazon_CustomerReview`

- `Zend_Service_Amazon_EditorialReview`

- `Zend_Service_Amazon_ListMania`

#### 24.3.6.1. Zend_Service_Amazon_Item

`Zend_Service_Amazon_Item` est le type de classe utilisé pour représenter un produit Amazon retourné par le service web. Elle récupère tous les attributs des articles, incluant le titre, la description, les revues, etc.

##### 24.3.6.1.1. Zend_Service_Amazon_Item::asXML()

`string asXML();`

Retourne le XML original de l'article

##### 24.3.6.1.2. Propriétés

`Zend_Service_Amazon_Item` a un nombre de propriétés directement relié à leur contre-parties de l'API standard Amazon.

Tableau 24.1. Propriétés de Zend_Service_Amazon_Item

Nom | Type | Description
--- | --- | ---
ASIN | string | Amazon Item ID
DetailPageURL | string | URL pour la page de détail des articles
SalesRank | string | Niveau de vente pour cet article
SmallImage | Zend_Service_Amazon_Image | Petite image de l'article
MediumImage | Zend_Service_Amazon_Image | Image moyenne de l'article
LargeImage | Zend_Service_Amazon_Image | Grande image de l'article
Subjects | array | Sujets de l'article
Les offres | `Zend_Service_Amazon_OfferSet` | Sommaire des offres, et offres pour l'article
CustomerReviews | array | Les revues clients sont représentée comme un tableau d'objets `Zend_Service_Amazon_CustomerReview`
EditorialReviews | array | Les revues éditoriales sont représentées comme un tableau d'objets `Zend_Service_Amazon_EditorialReview`
SimilarProducts | array | Les produits similaires sont représentés comme un tableau d'objets `Zend_Service_Amazon_SimilarProduct`
Accessories | array | Les accessoires pour l'article sont représentés comme un tableau d'objets `Zend_Service_Amazon_Accessories`
Tracks | array | Un tableau contenant le nombre de pistes ainsi que les noms pour les CDs ou DVDs musicaux
ListmaniaLists | array | Les listes Listmania reliées à un article, comme un tableau d'objets `Zend_Service_Amazon_ListmainList`
PromotionalTag | string | Balise promotionnelle de l'article

Retour à la liste des classes

#### 24.3.6.2. Zend_Service_Amazon_Image

`Zend_Service_Amazon_Image` représente une image distante pour un produit.

##### 24.3.6.2.1. Propriétés

Tableau 24.2. Propriétés de Zend_Service_Amazon_Image

Name | Type | Description
--- | --- | ---
Url | Zend Uri | Url distante de l'image
Height | int | La hauteur (en pixels) de l'image
Width | int | La largeur (en pixels) de l'image

Retour à la liste des classes

#### 24.3.6.3. Zend_Service_Amazon_ResultSet

Des objets `Zend_Service_Amazon_ResultSet` sont retournés par Zend_Service_Amazon::itemSearch() et vous permettent de gérer facilement les plusieurs résultats retournés.

| SeekableIterator
Implémente l'itérateur `SeekableIterator` pour une itération simple (en utilisant `foreach`), aussi bien que l'accès direct à une URL spécifique en utilisant `seek()`.

##### 24.3.6.3.1. Zend_Service_Amazon_ResultSet::totalResults()

`int totalResults();`

Retourne le nombre total des résultats de la recherche

Retour à la liste des classes

#### 24.3.6.4. Zend_Service_Amazon_OfferSet

Chaque résultat retourné pas Each result returned by Zend_Service_Amazon::itemSearch() et Zend_Service_Amazon::itemLookup() contient un objet `Zend_Service_Amazon_OfferSet` au travers duquel il est possible de récupérer les information de prix de l'article.

##### 24.3.6.4.1. Propriétés

Tableau 24.3. Propriétés de Zend_Service_Amazon_OfferSet

Name | Type | Description
--- | --- | ---
LowestNewPrice | int | Le plus bas prix pour l'article en condition "New" (ie les articles neufs)
LowestNewPriceCurrency | string | La devise pour le `LowestNewPrice`
LowestOldPrice | int | Le plus bas prix pour l'article en codition "Used" (ie les articles d'occasion)
LowestOldPriceCurrency | string | La devise pour le `LowestOldPrice`
TotalNew | int | Le nombre total de contions "new" disponibles pour cet article (ie le nombre de modèles neufs en stock)
TotalUsed | int | Le nombre total de conditions "used" disponible pour cet article (ie le nombre de modèles d'occasion en stock)
TotalCollectible | int | ??? Total number of "collectible" condition available for the item ???
TotalRefurbished | int | ??? Total number of "refurbished" condition available for the item ???
Offers | array | Un tableau d'objets `Zend_Service_Amazon_Offer`

Retour à la liste des classes

#### 24.3.6.5. Zend_Service_Amazon_Offer

Chaque offre pour un article est retourné sous la forme d'un objet `Zend_Service_Amazon_Offer`.

##### 24.3.6.5.1. Zend_Service_Amazon_Offer Properties

Tableau 24.4. Propriétés de Zend_Service_Amazon_Offer

Name | Type | Description
--- | --- | ---
MerchantId | string | ID Amazon du fournisseur
GlancePage | string | URL de la page avec un résumé du fournisseur
Condition | string | Condition de cet article
OfferListingId | string | ID de la liste d'offre
Price | int | Prix de l'article
CurrencyCode | string | Code de la devise pour le prix de l'article
Availability | string | Disponibilité de l'article
IsEligibleForSuperSaverShipping | boolean | Est-ce que l'article est éligible ou pas pour un "Super Saver Shipping"

Retour à la liste des classes

#### 24.3.6.6. Zend_Service_Amazon_SimilarProduct

Lors de la recherche d'articles, Amazon retourne aussi une liste de produits similaires qui pourraient intéresser le visiteur. Chacun d'entre eux est retourné dans un objet `Zend_Service_Amazon_SimilarProduct`.

Chaque objet contient l'information qui vous permet de faire les requàªtes suivantes pour obtenir les informations complète sur un article.

##### 24.3.6.6.1. Propriétés

Tableau 24.5. Propriétés de Zend_Service_Amazon_SimilarProduct

Name | Type | Description
--- | --- | ---
ASIN | string | Identifiant unique d'un produit Amazon (ASIN)
Title | string | Intitulé du produit

Retour à la liste des classes

#### 24.3.6.7. Zend_Service_Amazon_Accessories

Les accessoires pour un article retournés sont représentés comme un objet `Zend_Service_Amazon_Accessories`.

##### 24.3.6.7.1. Propriétés

Tableau 24.6. Propriétés de Zend_Service_Amazon_Accessories

Name | Type | Description
--- | --- | ---
ASIN | string | Identifiant unique d'un produit Amazon (ASIN)
Title | string | Intitulé du produit

Retour à la liste des classes

#### 24.3.6.8. Zend_Service_Amazon_CustomerReview

Chaque revue de client est retournée sous la forme d'un objet `Zend_Service_Amazon_CustomerReview`.

##### 24.3.6.8.1. Propriétés

Tableau 24.7. Propriétés de Zend_Service_Amazon_CustomerReview

Name | Type | Description
--- | --- | ---
Rating | string | Evaluation de l'article
HelpfulVotes | string | Votes pour "Ce commentaire vous a-t'il été utile ?"
CustomerId | string | Identifiant du client
TotalVotes | string | Total des votes
Date | string | Date de la revue
Summary | string | Sommaire de la revues
Content | string | Contenu de la revue

Retour à la liste des classes

#### 24.3.6.9. Zend_Service_Amazon_EditorialReview

Chaque revue éditoriale d'un article est retournée dans un objet `Zend_Service_Amazon_EditorialReview`.

##### 24.3.6.9.1. Propriétés

Tableau 24.8. Propriétés de Zend_Service_Amazon_EditorialReview

Name | Type | Description
--- | --- | ---
Source | string | Source de la revue éditoriale
Content | string | Contenu de la revue

Retour à la liste des classes

#### 24.3.6.10. Zend_Service_Amazon_Listmania

Chaque résultat de liste ListMania est retourné dans un objet `Zend_Service_Amazon_Listmania`.

##### 24.3.6.10.1. Propriétés

Tableau 24.9. Propriétés de Zend_Service_Amazon_Listmania

Name | Type | Description
--- | --- | ---
ListId | string | Identifiant de la liste
ListName | string | Nom de la liste

Retour à la liste des classes

Précédent | Niveau supérieur | Suivant
24.2. Zend_Service_Akismet | Sommaire | 24.4. Zend_Service_Flickr