29.3. Zend_Service_Amazon

29.3.1. Wprowadzenie

Zend_Service_Amazon jest prostym API do użycia z web serwisami Amazon. Zend_Service_Amazon ma dwa API: bardziej tradycyjne, które jest oparte na własnym API serwisu Amazon, oraz prostsze API zapytań do łatwego tworzenia nawet skomplikowanych zapytań wyszukiwania.

Zend_Service_Amazon pozwala programistom odbierać informacje dostępne na stronach Amazon.com bezpośrednio za pomocą API web serwisów Amazon. Przykłady zawierają:

  • Informacje o przedmiotach, takie jak obrazki, opisy, cenniki i inne

  • Recenzje klientów i redaktorów

  • Podobne produkty i akcesoria

  • Oferty Amazon.com

  • Listy ListMania

Aby użyć Zend_Service_Amazon, musisz posiadać klucz API programisty Amazon. Aby otrzymać klucz i zdobyć więcej informacji odwiedź stronę Amazon Web Services.

[Notatka] Uwaga

Twój klucz do API serwisu Amazon jest połączony z twoją tożsamością w Amazon, więc staraj się przechowywać twój klucz API bezpiecznie.

Przykład 29.4. Przeszukiwanie Amazon używając tradycyjnego API

W tym przykładzie, szukamy książek o PHP w Amazon i przechodzimy przez nie w pętli, wyświetlając je.

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

Przykład 29.5. Przeszukiwanie Amazon używając API zapytań

Tutaj także szukamy książek o PHP w Amazon, ale zamiast tradycyjnego API używamy API zapytań, które jest stworzone w oparciu o projektowy wzorzec płynnych interfejsów.

<?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. Kody państw

Domyślnie, Zend_Service_Amazon łączy się z web serwisem Amazon w Stanach Zjednoczonych ("US"). Aby połączyć się z innym krajem, w prosty sposób podaj kod odpowiedniego państwa jako drugi parametr konstruktora:

Przykład 29.6. Wybierania państwa web serwisu Amazon

<?php
// Łączenie się z Amazon w Japonii
require_once 'Zend/Service/Amazon.php';
$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP');
?>       
[Notatka] Kody państw

Poprawne kody państw: CA, DE, FR, JP, UK, oraz US.

29.3.3. Szukanie specyficznego przedmiotu w Amazon na podstawie ASIN

Metoda itemLookup() zapewnia możliwość pobrania informacji o konkretnym przedmiocie, którego ASIN jest znany.

Przykład 29.7. Szukanie specyficznego przedmiotu w Amazon na podstawie ASIN

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

Metoda itemLookup() także akceptuje opcjonalny drugi parametr do obsługi opcji wyszukiwania. Aby poznać pełne informacje, włączając w to listę dostępnych opcji odwiedź dokumentację Amazon.

[Notatka] Informacje o zdjęciach

Aby odebrać informacje o zdjęciach dla twoich wyników wyszukiwania, musisz ustawić opcję ResponseGroup na Medium lub Large.

29.3.4. Wykonywanie wyszukiwań przedmiotów Amazon

Wyszukiwanie przedmiotów oparte na różnych dostępnych kryteriach jest przeprowadzane za pomocą metody itemSearch(), tak jak w poniższym przykładzie:

Przykład 29.8. Wykonywanie wyszukiwań przedmiotów 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 />';
}
?>       

Metoda itemSearch() akceptuje jeden parametr w postaci tablicy do obsługi opcji wyszukiwania. Aby poznać wszystkie szczegóły włączając w to listę dostępnych opcji, proszę zobacz dokumentację Amazon

[Podpowiedź] Podpowiedź

Klasa Zend_Service_Amazon_Query jest nakładką na tę metodę ułatwiającą tworzenie zapytań wyszukiwania.

29.3.5. Użycie alternatywnego API zapytań

29.3.5.1. Wprowadzenie

Zend_Service_Amazon_Query zapewnia alternatywne API do użycia z web serwisami Amazon. Alternatywne API używa wzorca projektowego płynnych interfejsów. Oznacza to, że wszystkie wywołania mogą być przeprowadzone przez łańcuchowe wywołania metod. (np. $obj->method()->method2($arg))

API Zend_Service_Amazon_Query używa przeładowania w celu łatwego ustawiania wyszukiwania przedmiotów i pozwala na wyszukiwanie na podstawie określonych kryteriów. Każda z opcji jest udostępniana jako wywołanie metody, a każdy argument metody odpowiada wartości opcji o tej nazwie:

Przykład 29.9. Przeszukiwanie serwisu Amazon używając alternatywnego API zapytań

W tym przykładzie alternatywne API zapytań używane jest jako płynny interfejs służący do określania opcji i odpowiadającym im wartościom:

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

To ustawia opcję Category na "Books" oraz Keywords na "PHP".

Aby uzyskać więcej informacji o dostępnych opcjach, proszę odwiedź dokumentację Amazon.

29.3.6. Klasy Zend_Service_Amazon

Poniższe klasy są zwracane przez metody Zend_Service_Amazon::itemLookup() oraz Zend_Service_Amazon::itemSearch():

29.3.6.1. Zend_Service_Amazon_Item

Zend_Service_Amazon_Item jest typem klasy używanej dp reprezentowania przedmiotu Amazon zwracanego przez web serwis. Zawiera ona wszystkie atrybuty przedmiotu, włączając w to tytuł, opis, recenzje itd.

29.3.6.1.1. Zend_Service_Amazon_Item::asXML()

string asXML();

Zwraca oryginalną treść XML dla przedmiotu

29.3.6.1.2. Właściwości

Zend_Service_Amazon_Item posiada właściwości bezpośrednio związane ze standardowymi częściami Amazon API.

Tabela 29.1. Właściwości Zend_Service_Amazon_Item

Nazwa Typ Opis
ASIN string ID przedmiotu w Amazon
DetailPageURL string Adres URL strony ze szczegółowymi informacjami o przedmiocie
SalesRank string Ranking sprzedaży dla przedmiotu
SmallImage Zend_Service_Amazon_Image Małe zdjęcie przedmiotu
MediumImage Zend_Service_Amazon_Image Średnie zdjęcie przedmiotu
LargeImage Zend_Service_Amazon_Image Duże zdjęcie przedmiotu
Subjects array Tematy przedmiotów
Offers Zend_Service_Amazon_OfferSet Podsumowanie ofert oraz oferty dla przedmiotu
CustomerReviews array Recenzje klientów reprezentowane jako tablica obiektów Zend_Service_Amazon_CustomerReview
EditorialReviews array Recenzje redaktorów reprezentowane jako tablica obiektów Zend_Service_Amazon_EditorialReview
SimilarProducts array Podobne produkty reprezentowane jako tablica obiektów Zend_Service_Amazon_SimilarProduct
Accessories array Akcesoria dla przedmiotu reprezentowane jako tablica obiektów Zend_Service_Amazon_Accessories
Tracks array Tablica numerów i nazw utworów dla muzycznych płyt CD oraz DVD
ListmaniaLists array Listy Listmania powiązane z przedmiotem jako tablica obiektó∑ Zend_Service_Amazon_ListmainList
PromotionalTag string Etykieta promocyjna przedmiotu

Powrót do listy klas

29.3.6.2. Zend_Service_Amazon_Image

Zend_Service_Amazon_Image reprezentuje zdalny obraz dla produktu.

29.3.6.2.1. Właściwości

Tabela 29.2. Właściwości Zend_Service_Amazon_Image

Nazwa Typ Opis
Url Zend_Uri Zdalny adres URL obrazka
Height int Wysokość obrazka w pikselach
Width int Szerokość obrazka w pikselach

Powrót do listy klas

29.3.6.3. Zend_Service_Amazon_ResultSet

Obiekty Zend_Service_Amazon_ResultSet są zwracane przez metodę Zend_Service_Amazon::itemSearch() i pozwalają ci na łatwą obsługę wielu zwróconych wyników wyszukiwania.

[Notatka] SeekableIterator

Implementuje interfejs SeekableIterator dla łatwej iteracji (np. używając foreach), tak samo jak i dla bezpośredniego dostępu do specyficznego wyniku używając metody seek().

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

Zwraca całkowitą ilość wyników zwróconych przez wyszukiwanie

Powrót do listy klas

29.3.6.4. Zend_Service_Amazon_OfferSet

Każdy wynik zwracany przez metody Zend_Service_Amazon::itemSearch() oraz Zend_Service_Amazon::itemLookup() zawiera obiekt Zend_Service_Amazon_OfferSet poprzez który dostępne są informacje o cenach dla przedmiotu.

29.3.6.4.1. Właściwości

Tabela 29.3. Właściwości Zend_Service_Amazon_OfferSet

Nazwa Typ Opis
LowestNewPrice int Najniższa cena dla nowego przedmiotu (stan "New")
LowestNewPriceCurrency string Waluta dla LowestNewPrice
LowestOldPrice int Najniższa cena dla używanego przedmiotu (stan "Used")
LowestOldPriceCurrency string Waluta dla LowestOldPrice
TotalNew int Całkowita ilość przedmiotów o stanie "new"
TotalUsed int Całkowita ilość przedmiotów o stanie "used"
TotalCollectible int Całkowita ilość przedmiotów o stanie "collectible"
TotalRefurbished int Całkowita ilość przedmiotów o stanie "refurbished"
Offers array Tablica obiektów Zend_Service_Amazon_Offer.

Powrót do listy klas

29.3.6.5. Zend_Service_Amazon_Offer

Każda oferta dla przedmiotu jest zwracana jako obiekt Zend_Service_Amazon_Offer.

29.3.6.5.1. Właściwości Zend_Service_Amazon_Offer

Tabela 29.4. Właściwości

Nazwa Typ Opis
MerchantId string ID handlowca Amazon
GlancePage string Adres URL strony z podsumowaniem handlowca
Condition string Stan przedmiotu
OfferListingId string ID listy ofert
Price int Cena za przedmiot
CurrencyCode string Kod waluty dla ceny przedmiotu
Availability string Dostępność przedmiotu
IsEligibleForSuperSaverShipping boolean Czy przedmiot jest dostępny w Super Saver Shipping czy nie

Powrót do listy klas

29.3.6.6. Zend_Service_Amazon_SimilarProduct

Kiedy wyszukujemy przedmiotów, Amazon także zwraca listę podobnych produktów, które także mogą odpowiadać szukającemu. Każdy z nich jest zwracany jako obiekt Zend_Service_Amazon_SimilarProduct.

Każdy obiekt zawiera informacje pozwalające ci na przeprowadzenie kolejnego żądania w celu pobrania pełnych informacji o przedmiocie.

29.3.6.6.1. Właściwości

Tabela 29.5. Właściwości Zend_Service_Amazon_SimilarProduct

Nazwa Typ Opis
ASIN string Unikalny ID produktu (ASIN)
Title string Tytuł produktu

Powrót do listy klas

29.3.6.7. Zend_Service_Amazon_Accessories

Akcesoria dla zwróconego przedmiotu są reprezentowane jako obiekty Zend_Service_Amazon_Accessories

29.3.6.7.1. Właściwości

Tabela 29.6. Właściwości Zend_Service_Amazon_Accessories

Nazwa Typ Opis
ASIN string Unikalny ID produktu Amazon (ASIN)
Title string Tytuł produktu

Powrót do listy klas

29.3.6.8. Zend_Service_Amazon_CustomerReview

Każda recenzja klienta jest zwracana jako obiekt Zend_Service_Amazon_CustomerReview.

29.3.6.8.1. Właściwości

Tabela 29.7. Właściwości Zend_Service_Amazon_CustomerReview

Nazwa Typ Opis
Rating string Ocena przedmiotu
HelpfulVotes string Głosy mówiące o tym jak pomocna jest recenzja
CustomerId string ID klienta
TotalVotes string Całkowiita ilość głosów
Date string Data oceny
Summary string Podsumowanie oceny
Content string Zawartość oceny

Powrót do listy klas

29.3.6.9. Zend_Service_Amazon_EditorialReview

Każda recenzja redaktora jest zwracana jako obiekt Zend_Service_Amazon_EditorialReview

29.3.6.9.1. Właściwości

Tabela 29.8. Właściwości Zend_Service_Amazon_EditorialReview

Nazwa Typ Opis
Source string Źródło recenzji redaktora
Content string Zawartość oceny

Powrót do listy klas

29.3.6.10. Zend_Service_Amazon_Listmania

Wyniki wyszukiwania elementów List Mania są zwracane jako obiekty Zend_Service_Amazon_Listmania.

29.3.6.10.1. Właściwości

Tabela 29.9. Właściwości Zend_Service_Amazon_Listmania

Nazwa Typ Opis
ListId string ID listy
ListName string Nazwa listy

Powrót do listy klas