# Zend_Service_Amazon

## Inleiding

`Zend_Service_Amazon` is een eenvoudige API om Amazon webservices te gebruiken. `Zend_Service_Amazon` heeft twee APIs: een meer traditionele die Amazons eigen API volgt, en een eenvoudigere "Query API" om nog meer complexe zoekqueries gemakkelijk op te bouwen.

`Zend_Service_Amazon` staat ontwikkelaars toe om informatie die door Amazon.com web sites worden verstrekt direct op te vragen via de Amazon Web Services API. Voorbeelden:

- Item informatie opvragen, zoals beelden, beschrijvingen, prijzen, en meer

- Klant- en uitgeversrecensies

- Gelijksoortige producten en accessoires

- Amazon.com aanbiedingen

- ListMania lijsten

Om `Zend_Service_Amazon` te gebruiken dien je een Amazon developer API key moeten hebben. Om die te verkrijgen, en voor meer informatie, kan je terecht op de Amazon Web Services website.

Je Amazon developer API key is aan je Amazon identiteit verbonden, neem dus de nodige maatregelen om je key te beveiligen en privé te houden.

### Amazon doorzoeken met de traditionele API

In dit voorbeeld zoeken we naar PHP boeken op Amazon en doorlopen we de resultaten door ze uit te printen.

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

### Amazon doorzoeken met de Query API

Hier zoeken we ook naar PHP boeken op Amazon, maar we gebruiken de Query API, die lijkt op het Fluent Interface ontwerp patroon.

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

## Landcodes

Standaard maakt `Zend_Service_Amazon` een verbinding met de Amazon web service in de Verenigde Staten ("`US`"). Om verbinding te maken met een ander land geef je eenvoudigweg de landcode van dit land op als de tweede parameter van de constructor:

### Een Amazon Web Service land kiezen

    <?php
    // Verbind met Amazon in Frankrijk
    require_once 'Zend/Service/Amazon.php';
    $amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'FR');
    ?>

Geldige landcodes zijn: `CA`, `DE`, `FR`, `JP`, `UK`, en `US`.

## Een specifiek item opzoeken met ASIN code

De `itemLookup()` methode biedt de mogelijkheid om een specifiek Amazon item op te halen als de ASIN bekend is.

### Een specifiek Amazon item ophalen per ASIN

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

De `itemLookup()` methode aanvaardt ook een optionele tweede parameter om zoekopties af te handelen. Voor alle details, inclusief een lijst van beschikbare opties, zie de relevante Amazon documentatie.

Om informatie over de beelden te verkrijgen voor je zoekresultaten, moet je de optie `ResponseGroup` tot `Medium` of `Large` zetten.

## Amazon Item zoekopdrachten uitvoeren

Het zoeken naar items gebaseerd op een van de verschillende voorhande criteria wordt eenvoudig gemaakt door de `itemSearch()` methode, zoals in het volgende voorbeeld:

### Uitvoeren van Amazon Item Zoekopdrachten

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

De `itemSearch()` methode aanvaardt een enkele array array parameter om zoekopties af te handelen. Voor alle details, inclusief een lijst van beschikbare opties, zie de relevante Amazon documentatie

De `Zend_Service_Amazon_Query` klasse is een gemakkelijk te gebruiken "wrapper" van deze methode.

## De Alternatieve Query API gebruiken

### Inleiding

`Zend_Service_Amazon_Query` bied een alternatieve API om de Amazon Web Service te gebruiken. De alternatieve API gebruikt het Fluent Interface ontwerppatroon. Dus, alle oproepen kunnen gemaakt worden door aaneengeregen methode-oproepen te maken. (bv: `$obj->method()->method2($arg)`)

De `Zend_Service_Amazon_Query` API gebruikt overloading om gemakkelijk een item zoekopdracht op te zetten en laat je dan toe te zoeken op de gespecifieerde criteria. Elk van de opties is als een methode-oproep aangeboden, en elk argument van een methode komt overeen met de benoemde waarde van de optie:

#### Doorzoek Amazon met gebruik van de Alternatieve Query API

In dit voorbeeld wordt de alternatieve query API gebruikt als een Fluent Interface om opties en hun respectievelijke waarden te specificeren:

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

Dit zet de optie `Category` tot "Books" en `Keywords` tot "PHP".

Voor meer informatie over de beschikbare opties verwijzen we je graag door naar de relevante Amazon documentatie.

## Zend_Service_Amazon Klassen

De volgende klassen worden allemaal teruggegeven door `Zend_Service_Amazon::itemLookup()` en `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` is de typeklasse die gebruikt wordt om een Amazon item voor te stellen dat werd teruggestuurd door de web service. Het omvat alle item eigenschappen, inclusief de titel, beschrijving, recensies enz...

#### Zend_Service_Amazon_Item::asXML()

string `asXML`

Geeft de oorspronkelijke XML van het item terug

#### Eigenschappen

`Zend_Service_Amazon_Item` heeft een aantal eigenschappen die onmiddellijk verwant zijn aan hun Amazon API tegenhangers.

##### Zend_Service_Amazon_Item Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
ASIN | string | Amazon Item ID
DetailPageURL | string | URL naar de pagina met de details voor het item
SalesRank | string | Verkoopsrang van het item
SmallImage | Zend_Service_Amazon_Image | Klein beeld van het item
MediumImage | Zend_Service_Amazon_Image | Medium beeld van het item
LargeImage | Zend_Service_Amazon_Image | Groot beeld van het item
Subjects | array | Item onderwerpen
Offers | `Zend_Service_Amazon_OfferSet` | Samenvatting van en aanbiedingen voor het item
CustomerReviews | array | Klantrecensies voorgesteld als een array van `Zend_Service_Amazon_CustomerReview` objecten
EditorialReviews | array | Uitgeversrecensies voorgesteld als een array van `Zend_Service_Amazon_EditorialReview` objecten
SimilarProducts | array | Gelijksoortige producten voorgesteld als een array van `Zend_Service_Amazon_SimilarProduct` objecten
Accessories | array | Accessoires voor het item voorgesteld als een array van `Zend_Service_Amazon_Accessories` objecten
Tracks | array | Een array van liedjes, nummers en namen voor muziek CDs en DVDs
ListmaniaLists | array | ListMania lijsten verwant met het item als een array van `Zend_Service_Amazon_ListmainList` objecten
PromotionalTag | string | Item promotievlag

Terug naar de klasselijst

### Zend_Service_Amazon_Image

`Zend_Service_Amazon_Image` vetegenwoordigt een (remote) beeld voor een product.

#### Eigenschappen

##### Zend_Service_Amazon_Image Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
Url | Zend_Uri | Remote URL voor het beeld
Height | int | De hoogte van het beeld in pixels
Width | int | De breedte van het beeld in pixels

Terug naar de klasselijst

### Zend_Service_Amazon_ResultSet

`Zend_Service_Amazon_ResultSet` objecten worden teruggestuurd door Zend_Service_Amazon::itemSearch() en laten je toe gemakkelijk meervoudige resultaten verwerken.

Implementeert de `SeekableIterator` voor gemakkelijke iteratie (bijvoorbeeld door `foreach` te gebruiken) evenals onmiddellijke toegang tot een specifiek resultaat door `seek()` te gebruiken.

#### Zend_Service_Amazon_ResultSet::totalResults()

int `totalResults`

Geeft het totaal aantal resultaten verkregen door de zoekopdracht

Terug naar de klasselijst

### Zend_Service_Amazon_OfferSet

Elk resultaat teruggegeven door Zend_Service_Amazon::itemSearch() en Zend_Service_Amazon::itemLookup() bevat een `Zend_Service_Amazon_OfferSet` object via welke prijsinformatie voor het item kan worden opgevraagd.

#### Eigenschappen

##### Zend_Service_Amazon_OfferSet Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
LowestNewPrice | int | Laagste prijs voor het item in "Nieuw" conditie
LowestNewPriceCurrency | string | De munteenheid voor `LowestNewPrice`
LowestOldPrice | int | Laagste prijs voor het item in "Gebruikt" conditie
LowestOldPriceCurrency | string | De munteenheid voor `LowestOldPrice`
TotalNew | int | Totaal aantal beschikbare items in "nieuw" conditie
TotalUsed | int | Totaal aantal beschikbare items in "gebruikt" conditie
TotalCollectible | int | Totaal aantal beschikbare items in "verzamelaars" conditie
TotalRefurbished | int | Totaal aantal beschikbare items in "gerenoveerd" conditie
Offers | array | Een array van `Zend_Service_Amazon_Offer` objecten.

Terug naar de klasselijst

### Zend_Service_Amazon_Offer

Elke aanbieding voor een item is een `Zend_Service_Amazon_Offer` object.

#### Zend_Service_Amazon_Offer Eigenschappen

##### Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
MerchantId | string | Handelaars Amazon ID
GlancePage | string | URL voor een pagina met een samenvatting van de handelaar
Condition | string | conditie van het item
OfferListingId | string | ID van de aanbiedingslijst
Price | int | Prijs van het item
CurrencyCode | string | Munteenheid voor de prijs van het item
Availability | string | Beschikbaarheid van het item
IsEligibleForSuperSaverShipping | boolean | Of het item in aanmerking komt voor Super Saver Shipping of niet

Terug naar de klasselijst

### Zend_Service_Amazon_SimilarProduct

Wanneer je naar items zoekt geeft Amazon ook een lijst van gelijksoortige producten terug die de zoekende persoon zouden kunnen interesseren. Elk van deze items is een `Zend_Service_Amazon_SimilarProduct` object.

Elk object bevat de informatie die je toelaat opeenvolgende verzoeken te maken om de volledige informatie van het item te verkrijgen.

#### Eigenschappen

##### Zend_Service_Amazon_SimilarProduct Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
ASIN | string | Amazon Uniek ID voor het product (ASIN)
Title | string | Titel van het product

Terug naar de klasselijst

### Zend_Service_Amazon_Accessories

Accessoires voor het teruggegeven item worden vertegenwoordigd door `Zend_Service_Amazon_Accessories` objecten

#### Eigenschappen

##### Zend_Service_Amazon_Accessories Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
ASIN | string | Amazon Uniek ID voor het product (ASIN)
Title | string | Titel van het product

Terug naar de klasselijst

### Zend_Service_Amazon_CustomerReview

Elke klantrecensie wordt teruggegeven als een `Zend_Service_Amazon_CustomerReview` object.

#### Eigenschappen

##### Zend_Service_Amazon_CustomerReview Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
Rating | string | Item classificatie
HelpfulVotes | string | Stemmen over hoe helpvol de recensie is
CustomerId | string | Klant ID
TotalVotes | string | Totaal aantal stemmen
Date | string | Datum van de recensie
Summary | string | Recensie samenvatting
Content | string | Recensie inhoud

Terug naar de klasselijst

### Zend_Service_Amazon_EditorialReview

Elke uitgeversrecensie van een item is een `Zend_Service_Amazon_EditorialReview` object

#### Eigenschappen

##### Zend_Service_Amazon_EditorialReview Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
Source | string | Bron van de uitgeversrecensie
Content | string | Recensie inhoud

Terug naar de klasselijst

### Zend_Service_Amazon_Listmania

Elke ListMania resultaatlijst is een `Zend_Service_Amazon_Listmania` object.

#### Eigenschappen

##### Zend_Service_Amazon_Listmania Eigenschappen

Naam | Type | Beschrijving
--- | --- | ---
ListId | string | Lijst ID
ListNaam | string | Lijstnaam

Terug naar de klasselijst