29.3. Zend_Service_Amazon

29.3.1. 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.

[Opmerking] Opmerking

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.

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

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

29.3.2. 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:

Voorbeeld 29.6. 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');
?>       
[Opmerking] Opmerking

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

29.3.3. 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.

Voorbeeld 29.7. 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.

[Opmerking] Opmerking

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

29.3.4. 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:

Voorbeeld 29.8. 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

[Tip] Tip

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

29.3.5. De Alternatieve Query API gebruiken

29.3.5.1. 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:

Voorbeeld 29.9. 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.

29.3.6. Zend_Service_Amazon Klassen

De volgende klassen worden allemaal teruggegeven door Zend_Service_Amazon::itemLookup() en Zend_Service_Amazon::itemSearch():

29.3.6.1. 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...

29.3.6.1.1. Zend_Service_Amazon_Item::asXML()

string asXML();

Geeft de oorspronkelijke XML van het item terug

29.3.6.1.2. Eigenschappen

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

Tabel 29.1. 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

29.3.6.2. Zend_Service_Amazon_Image

Zend_Service_Amazon_Image vetegenwoordigt een (remote) beeld voor een product.

29.3.6.2.1. Eigenschappen

Tabel 29.2. 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

29.3.6.3. Zend_Service_Amazon_ResultSet

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

[Opmerking] Opmerking

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

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

Geeft het totaal aantal resultaten verkregen door de zoekopdracht

Terug naar de klasselijst

29.3.6.4. 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.

29.3.6.4.1. Eigenschappen

Tabel 29.3. 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

29.3.6.5. Zend_Service_Amazon_Offer

Elke aanbieding voor een item is een Zend_Service_Amazon_Offer object.

29.3.6.5.1. Zend_Service_Amazon_Offer Eigenschappen

Tabel 29.4. 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

29.3.6.6. 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.

29.3.6.6.1. Eigenschappen

Tabel 29.5. 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

29.3.6.7. Zend_Service_Amazon_Accessories

Accessoires voor het teruggegeven item worden vertegenwoordigd door Zend_Service_Amazon_Accessories objecten

29.3.6.7.1. Eigenschappen

Tabel 29.6. 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

29.3.6.8. Zend_Service_Amazon_CustomerReview

Elke klantrecensie wordt teruggegeven als een Zend_Service_Amazon_CustomerReview object.

29.3.6.8.1. Eigenschappen

Tabel 29.7. 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

29.3.6.9. Zend_Service_Amazon_EditorialReview

Elke uitgeversrecensie van een item is een Zend_Service_Amazon_EditorialReview object

29.3.6.9.1. Eigenschappen

Tabel 29.8. Zend_Service_Amazon_EditorialReview Eigenschappen

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

Terug naar de klasselijst

29.3.6.10. Zend_Service_Amazon_Listmania

Elke ListMania resultaatlijst is een Zend_Service_Amazon_Listmania object.

29.3.6.10.1. Eigenschappen

Tabel 29.9. Zend_Service_Amazon_Listmania Eigenschappen

Naam Type Beschrijving
ListId string Lijst ID
ListNaam string Lijstnaam

Terug naar de klasselijst