24.3. Zend_Service_Amazon
Poprzedni | Rozdział 24. Zend_Service | Następny

## 24.3. Zend_Service_Amazon

### 24.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.

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

### 24.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 24.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');
    ?>

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

### 24.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 24.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.

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

### 24.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 24.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ź
Klasa `Zend_Service_Amazon_Query` jest nakładką na tę metodę ułatwiającą tworzenie zapytań wyszukiwania.

### 24.3.5. Użycie alternatywnego API zapytań

#### 24.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 24.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.

### 24.3.6. Klasy Zend_Service_Amazon

Poniższe klasy są zwracane przez metody `Zend_Service_Amazon::itemLookup()` oraz `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` 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.

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

`string asXML();`

Zwraca oryginalną treść XML dla przedmiotu

##### 24.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 24.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

#### 24.3.6.2. Zend_Service_Amazon_Image

`Zend_Service_Amazon_Image` reprezentuje zdalny obraz dla produktu.

##### 24.3.6.2.1. Właściwości

Tabela 24.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

#### 24.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.

| 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()`.

##### 24.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

#### 24.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.

##### 24.3.6.4.1. Właściwości

Tabela 24.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

#### 24.3.6.5. Zend_Service_Amazon_Offer

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

##### 24.3.6.5.1. Właściwości Zend_Service_Amazon_Offer

Tabela 24.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

#### 24.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.

##### 24.3.6.6.1. Właściwości

Tabela 24.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

#### 24.3.6.7. Zend_Service_Amazon_Accessories

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

##### 24.3.6.7.1. Właściwości

Tabela 24.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

#### 24.3.6.8. Zend_Service_Amazon_CustomerReview

Każda recenzja klienta jest zwracana jako obiekt `Zend_Service_Amazon_CustomerReview`.

##### 24.3.6.8.1. Właściwości

Tabela 24.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

#### 24.3.6.9. Zend_Service_Amazon_EditorialReview

Każda recenzja redaktora jest zwracana jako obiekt `Zend_Service_Amazon_EditorialReview`

##### 24.3.6.9.1. Właściwości

Tabela 24.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

#### 24.3.6.10. Zend_Service_Amazon_Listmania

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

##### 24.3.6.10.1. Właściwości

Tabela 24.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

Poprzedni | Początek rozdziału | Następny
24.2. Zend_Service_Akismet | Spis treści | 24.4. Zend_Service_Flickr