# Zend_Service_Amazon

## Einführung

`Zend_Service_Amazon` ist eine einfach API für die Benutzung des Amazon Web Services. `Zend_Service_Amazon` hat 2 APIs: eine traditionellere welche Amazon's eigener API folgt, und eine simplere "Abfrage API" um sogar komplexe Suchabfragen einfachst machen zu können.

`Zend_Service_Amazon` erlaubt es Entwicklern, Informationen von allen Amazon.com Web Seiten durch das Amazon Web Services API zu empfangen. Beispiele beinhalten:

- Informationen speichern, wie Bilder, Beschreibungen, Preise uvm.

- Kunden und Editorial Reviews

- Ähnliche Produkte und Zubehör

- Amazon.com Angebote

- ListMania Liste

Um `Zend_Service_Amazon` benutzen zu können, benötigt man einen Amazon Entwickler API Schlüssel sowie einen geheimen Schlüssel. Um den Schlüssel zu bekommen und für weiter führende Informationen besuchen Sie bitte die Amazon Web Service Web Seite. Seit dem 15. August 2009 kann man die Amazon Produkt Advertising API über `Zend_Service_Amazon` nur dann verwenden wenn man einen zusätzlichen geheimen Schlüssel spezifiziert.

### Achtung

Der eigene Amazon Entwickler API und der geheime Schlüssel sind mit der eigenen Amazon Identität verknüpft. Deswegen sollte man darauf achten das die Schlüssel privat bleibt.

### Suchen in Amazon mit der traditionellen API

In diesem Beispiel suchen wir nach PHP Büchern bei Amazon, blättern durch die Resultate und Drucken diese aus.

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

### Suchen in Amazon mit der Abfrage API

Hier suchen wir auch nach PHP Büchern bei Amazon. Aber wir verwenden stattdessen die Abfrage API, welche das Fluent Interface Design Pattern verwendet.

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

## Ländercodes

Standardmäßig verbindet sich `Zend_Service_Amazon` zum Amazon Web Service der Vereinigten Staaten ("`US`"). Um sich zu einem anderen Land zu verbinden, muß einfach der entsprechende String des Landercodes als zweiter Parameter an den Konstruktor übergeben werden:

### Auswahl eines Amazon Web Service Landes

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

### Ländercodes

Gültige Ländercodes sind: `CA`, `DE`, `FR`, `JP`, `UK`, and `US`.

## Betrachten eines speziellen Teils bei Amazon durch ASIN

Die `itemLookup()` Methode ermöglicht es ein bestimmtes Teil bei Amazon zu erhalten wenn der ASIN bekannt ist.

### Betrachten eines speziellen Teils bei Amazon durch ASIN

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

Die `itemLookup()` Methode akzeptiert auch einen optionalen zweiten Parameter für die Handhabung der Suchoptionen. Für komplette Details, inklusive einer Liste der möglichen Optionen sehen Sie bitte in die relevante Amazon Dokumentation.

### Bildinformationen

Um Bildinformationen für deine Suchergebnisse zu erhalten, musst du die `ResponseGroup` Option auf `Medium` oder `Large` setzen.

## Suchen nach Teilen bei Amazon

Das Suchen nach Teilen, basierend auf den unterschiedlichen möglichen Kriterien ist einfach gehalten durch benutzen der `itemSearch()` Methode wie im folgenden Beispiel:

### Suchen nach Teilen bei 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 />';
    }

### Verwenden der ResponseGroup Option

Die `ResponseGroup` Option wird verwendet um die spezielle Information zu kontrollieren die in der Antwort zurückgegeben wird.

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

Die `itemSearch()` Methode akzeptiert einen einzelnen Parameter als Array für die Handhabung der Suchoptionen. Für komplette Details, inklusive eine Liste der möglichen Optionen sehen Sie bitte in die relevante Amazon Dokumentation

Die `Zend_Service_Amazon_Query` Klasse ist ein einfach zu benutzender Wrapper für diese Methode.

## Benutzen der alternativen Abfrage API

### Einführung

`Zend_Service_Amazon_Query` bietet eine alternative API für die Benutzung der Amazon Web Services. Die alternative API benutzt das Fluent Interface Pattern. Das bedeutet, alle Aufrufe können durchgeführt werden durch Benutzen von verketteten Methoden Aufrufen. (z.B., `$obj->method()->method2($arg)`)

Die `Zend_Service_Amazon_Query` API benutzt Überladung um einfachst eine Teile Suche zu realisieren, und ermöglicht es, basierend auf den spezifizierten Kriterien, zu suchen. Jede der Optionen wird als Methoden Aufruf angeboten, und jedes Methoden Argument korrespondiert mit dem beschriebenen Options Wert:

#### Suchen in Amazon durch Benutzen der alternativen Abfrage API

In diesem Beispiel wird die alternative Abfrage API als Fluent Interface benutzt um Optionen und Ihre Werte festzulegen:

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

Das setzt die Option `Category` auf "Books" und `Keywords` auf "PHP".

Für weitere Informationen über die möglichen Optionen, sehen Sie bitte in die relevante Amazon Dokumentation.

## Zend_Service_Amazon Klassen

Die folgenden klassen werden alle zurückgegeben durch `Zend_Service_Amazon::itemLookup()` und `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`

### Zend_Service_Amazon_Item

`Zend_Service_Amazon_Item` ist ein Klassen Typ der benutzt wird um ein Amazon Teil darzustellen welches durch das Web Service zurück gegeben wird. Es enthält alle Attribute des Teils wie z.B. Titel, Beschreibung, Reviews, usw.

#### Zend_Service_Amazon_Item::asXML()

string `asXML`

Gibt das original XML für dieses Teil zurück

#### Eigenschaften

`Zend_Service_Amazon_Item` hat eine Anzahl an Eigenschaften welche eine direkte Beziehung zu Ihren Standard Amazon API Gegenstücken haben.

##### Zend_Service_Amazon_Item Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
ASIN | string | Amazon Teil ID
DetailPageURL | string | URL zur Detailseite des Teils
SalesRank | int | Verkaufs Rang des Teils
SmallImage | Zend_Service_Amazon_Image | Kleines Bild des Tiles
MediumImage | Zend_Service_Amazon_Image | Mittleres Bild des Teils
LargeImage | Zend_Service_Amazon_Image | Großes Bild des Teils
Subjects | array | Inhalte des Teils
Offers | `Zend_Service_Amazon_OfferSet` | Summe der Angebote und Angebote für dieses Teil
CustomerReviews | array | Kunden Reviews dargestellt als Array von `Zend_Service_Amazon_CustomerReview` Objekten
EditorialReviews | array | Editorial Reviews dargestellt als Array von `Zend_Service_Amazon_EditorialReview` Objekten
SimilarProducts | array | Ähnliche Produkte dargestellt als Array von `Zend_Service_Amazon_SimilarProduct` Objekten
Accessories | array | Zubehör für dieses Teil dargestellt als Array von `Zend_Service_Amazon_Accessories` Objekten
Tracks | array | Ein Array mit Track Nummern und Namen für Musik CDs und `DVD`s
ListmaniaLists | array | Passende Listmania Liste für diese Teil, als Array von `Zend_Service_Amazon_ListmainList` Objekten
PromotionalTag | string | Promotion Tag des Teils

Zurück zur Liste der Klassen

### Zend_Service_Amazon_Image

`Zend_Service_Amazon_Image` repräsentiert ein entferntes Bild für ein Produkt.

#### Eigenschaften

##### Zend_Service_Amazon_Image Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
Url | Zend_Uri | Entfernte URL für das Bild
Height | int | Die Höhe des Bildes als Pixel
Width | int | Die Breite des Bildes als Pixel

Zurück zur Liste der Klassen

### Zend_Service_Amazon_ResultSet

`Zend_Service_Amazon_ResultSet` Objekte werden zurückgegeben durch Zend_Service_Amazon::itemSearch() und erlauben es, die vielfach zurück gelieferten Resultate, einfachst zu Handhaben.

#### SeekableIterator

Implementiert den `SeekableIterator` für einfach Iteration (z.B. benutzen von `foreach`), sowie direkten Zugriff auf ein Spezielles Resultat mit `seek()`.

#### Zend_Service_Amazon_ResultSet::totalResults()

int `totalResults`

Liefert die Gesamtanzahl der Resultate welche die Suche zurückgegeben hat

Zurück zur Liste der Klassen

### Zend_Service_Amazon_OfferSet

Jedes Resultat welches durch Zend_Service_Amazon::itemSearch() und Zend_Service_Amazon::itemLookup() zurückgegeben wird beinhaltet ein `Zend_Service_Amazon_OfferSet` Objekt durch welches Preisinformationen für das Teil empfangen werden können.

#### Eigenschaften

##### Zend_Service_Amazon_OfferSet Properties

Name | Typ | Beschreibung
--- | --- | ---
LowestNewPrice | int | Niedrigster Preis des Teiles als "Neuwert"
LowestNewPriceCurrency | string | Die Währung für `LowestNewPrice`
LowestOldPrice | int | Niedrigster Preis des Teiles als "Gebrauchtwert"
LowestOldPriceCurrency | string | Die Währung für `LowestOldPrice`
TotalNew | int | Erhältliche Gesamtanzahl dieses Teils mit "Neuwert"
TotalUsed | int | Erhältliche Gesamtanzahl dieses Teils mit "Gebrauchtwert"
TotalCollectible | int | Erhältliche Gesamtanzahl dieses Teils die "Sammelbar" sind
TotalRefurbished | int | Erhältliche Gesamtanzahl dieses Teils die "Wiederhergestellt" sind
Offers | array | Ein Array von `Zend_Service_Amazon_Offer` Objekten.

Zurück zur Liste der Klassen

### Zend_Service_Amazon_Offer

Jedes Angebot für ein Teil wird als `Zend_Service_Amazon_Offer` Objekt zurück gegeben.

#### Zend_Service_Amazon_Offer Eigenschaften

##### Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
MerchantId | string | Amazon ID des Anbieters
GlancePage | string | URL einer Seite mit einer Zusammenfassung des Anbieters
Condition | string | Kondition des Teils
OfferListingId | string | ID der Angebots Liste
Price | int | Preis für das Teil
CurrencyCode | string | Währungscode des Preises für das Teil
Availability | string | Erhältlichkeit des Teils
IsEligibleForSuperSaverShipping | boolean | Ob das Teil erhältlich ist für Super Sicheren Versand oder nicht

Zurück zur Liste der Klassen

### Zend_Service_Amazon_SimilarProduct

Bei der Suche nach Teilen gibt Amazon auch eine Liste an ähnlichen Produkten zurück, welche dem Suchenden empfohlen werden. Jedes dieser Produkte wird als `Zend_Service_Amazon_SimilarProduct` Objekt zurückgegeben.

Jedes Objekt enthält die Informationen welche es erlauben eine Subanfrage zu machen, um die kompletten Informationen zu diesem Teil zu bekommen.

#### Eigenschaften

##### Zend_Service_Amazon_SimilarProduct Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
ASIN | string | Eindeutige Amazon ID des Produkts (ASIN)
Title | string | Produkt Überschrift

Zurück zur Liste der Klassen

### Zend_Service_Amazon_Accessories

Zubehör für das zurückgegebene Teil werden als `Zend_Service_Amazon_Accessories` Objekte dargestellt.

#### Eigenschaften

##### Zend_Service_Amazon_Accessories Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
ASIN | string | Eindeutige Amazon ID des Produkts (ASIN)
Title | string | Produkt Überschrift

Back to Class List

### Zend_Service_Amazon_CustomerReview

Jede Kunden Review wird als `Zend_Service_Amazon_CustomerReview` Objekt zurückgegeben.

#### Eigenschaften

##### Zend_Service_Amazon_CustomerReview Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
Rating | string | Bewertung des Teils
HelpfulVotes | string | Stimmen wie hilfreich die Review ist
CustomerId | string | Kunden ID
TotalVotes | string | Gesamtzahl der Stimmen
Date | string | Datum der Review
Summary | string | Zusammenfassung der Review
Content | string | Inhalt der Review

Zurück zur Liste der Klassen

### Zend_Service_Amazon_EditorialReview

Jede Editorial review des Teils wird als `Zend_Service_Amazon_EditorialReview` Objekt zurückgegeben.

#### Eigenschaften

##### Zend_Service_Amazon_EditorialReview Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
Source | string | Quelle der Editorial Review
Content | string | Inhalt des Reviews

Zurück zur Liste der Klassen

### Zend_Service_Amazon_Listmania

Jedes List Mania List Ergebnis des Teils wird als `Zend_Service_Amazon_Listmania` Objekt zurückgegeben.

#### Eigenschaften

##### Zend_Service_Amazon_Listmania Eigenschaften

Name | Typ | Beschreibung
--- | --- | ---
ListId | string | ID der Liste
ListName | string | Name der Liste

Zurück zur Liste der Klassen