Amazon-API
Shop per XML

DeveloperIT-ProjekteSoftware

Amazon bietet mit seinen Webservices die Möglichkeit, Produktdaten, Suchlisten und sogar ganze Warenkörbe auf den eigenen Webseiten zu integrieren. Der Workshop zeigt, wie Sie dabei vorgehen.

Voraussetzungen

Amazon-API

Ziel soll es sein, einen eigenen Amazon-Shop zu errichten und damit die Produkte von Amazon auch auf der eigenen Webseite anzubieten. Amazon hilft dabei, indem es die Schnittstelle und das entsprechende Partnerprogramm zur Verfügung stellt.

Bevor es an die Programmierung des eigenen Amazon-Shops gehen kann, müssen einige Dinge erledigt werden. Als Erstes gilt es sich als Amazon-Partnerwebseite zu registrieren, schließlich soll der Shop ja etwas eintragen. Dazu besuchen Sie einfach die Amazon-Webseite und suchen nach dem entsprechenden Hinweis (Partnerprogramm). Amazon provisioniert Verkäufe derzeit je nach Modell mit 5 beziehungsweise 7,5 Prozent ? eine nette Nebeneinnahme also.

Ist die Anmeldung durchgeführt, erhalten Sie einen Zugang mit entsprechender Partner-ID ? die ist nachher noch wichtig. Nun führt Sie der Weg zu den Amazon-Webservices (www.amazon.com/webservices). Diese Seiten sind allerdings bislang leider nur in englischer Sprache verfügbar. Auch hier registrieren Sie sich und erhalten die so genannte Subscription-ID ? auch die brauchen Sie später noch. Jetzt kann es im Prinzip losgehen.

Zunächst müssen Sie die Voraussetzungen schaffen, um an die Amazon-Webservices heranzukommen und Daten herauszuholen. Als Erstes benötigen Sie dazu eine Funktion, die eine normale HTTP-GET-Anfrage an den Amazon-Server senden kann und den Inhalt des Response wiedergibt. Sie können dazu entweder vorgefertigte Funktionen (zum Beispiel aus Pear) nehmen oder selbst geschriebene verwenden. In unserem Fall nehmen wir eine eigene Funktion mit der Bezeichnung HTTPGET. Diese übergibt Hostnamen, Port und abzurufende Datei und liefert uns dafür den Response-Inhalt. Amazon liefert bei einem gültigen Request eine Reihe von XML-Daten im Soap-Format. Um diese verarbeiten zu können, benötigen Sie als zweites eine Funktion, die den Dateicode in ein verständlicheres Format bringt.

Diese Funktion im Einzelnen aufzuzeigen würde hier zu weit führen. Sie finden alle Beispiele vorgefertigt auf der Heft-CD. Die Arbeitsweise ist jedoch recht einfach: Alle Elemente durchlaufen eine Schleife und werden in ein assoziatives Array übergeben. Untergeordnete Elemente werden entsprechend in Unterarrays eingeordnet. Die Funktion erhält die Bezeichnung XML2Array und übergibt den Dateiinhalt.


Das Soap-Interface

Amazon-API

Mit den beiden zuvor definierten Funktionen können Sie nun ans Werk gehen und auf die Amazon-Webservices zugreifen. Um diesen Teil für spätere Zugriffe zu vereinfachen, definieren Sie sich hierzu eine erste Amazon-Funktion, die bei allen künftigen Anfragen an Amazon geschickt wird. Und so sieht sie aus:

function Amazon_DoRequest($parameter = ”) {
$host = “webservices.amazon.de”;
$port = 80; $soap_url = “/onca/xml?Service= AWSECommerceService”; $soap_url .= “&SubscriptionId=XXXXXXXXXX”;
$soap_url .= $parameter;
$content = HTTPGET($host,$port,$soap_url);
return XML2Array(utf8_decode($content));
}

An Stelle der vielen XXXX bei SubscriptionId= setzen Sie die bei der Registrierung erhaltene Subscription-ID für die Webservices ein. Der Funktion können Sie dann beim Aufruf weitere Parameter mitgeben. Als Rückgabewert erhalten Sie das assoziative Array mit den Elementinhalten, das Sie dann weiterverarbeiten können.


Produkte anbieten

Amazon-API

In unserem Beispielshop sollen relativ statisch einige Bücher zu einem bestimmten Thema angeboten werden. Um eine einfache Produktliste von Amazon zu bekommen, müssen Sie nichts weiter tun als die zuvor definierte Funktion Amazon_DoRequest zu bemühen und ihr einige weitere Parameter zu übergeben. Für die allgemeine Suche nach Produkten können Sie folgende Funktion verwenden:

function Amazon_Suche($index,$suche) {
$parameter = “&Operation=ItemSearch”;
$parameter .= “&SearchIndex=$index”;
$parameter .= “&Keywords=$suche”;
$parameter .= “&ResponseGroup=Medium”;
return Amazon_DoRequest($parameter);
}

Der Parameter $index steht dabei für die Produktkategorie (bei Büchern Books, bei DVDs DVD, für Music-CDs Music et cetera). Dem zweite Parameter $suche wird jeweils der Suchbegriff übergeben. Um zum Beispiel eine Liste mit zehn HTML-Büchern anbieten zu können, nutzen Sie das Beispielprogramm amazon.php auf der Heft-CD.

In $itm sind an dieser Stelle Ihre Daten enthalten, sie brauchen nur noch ausgelesen und dargestellt zu werden. Der Code dafür ist recht umfangreich und eigentlich wenig interessant und soll hier deshalb ungenannt bleiben. Inhaltlich werden einfach die jeweils interessanten Elemente (Author, Title und andere) ausgelesen und zur Darstellung in eine HTML-Tabelle ausgegeben.


Produkt-Detailansicht

Amazon-API

Da natürlich niemand etwas kauft, ohne noch einmal genau nachzulesen, um was es sich handelt, benötigen Sie für Ihren Shop noch eine Detailansicht. Für diese erstellen Sie ein zweites Dokument amazon_detail.php. Um die Produktdetails abfragen zu können, benötigen Sie eine weitere Funktion, welche die Produktdaten anhand der ASIN-Nummer (Produkt-ID bei Amazon) ermittelt:

function Amazon_Item($asin) {
$parameter = “&Operation=ItemLookup”;
$parameter .= “&ItemId=$asin”;
$parameter .= “&ResponseGroup=Large”;
return Amazon_DoRequest ($parameter);
}

Die ASIN haben Sie vorsorglich bei der Produktliste schon mit ausgefragt und entsprechend auf Ihre Detailseite verlinkt.

Ebenso wie bei der Produktübersicht fragen Sie auch in diesem Skript wieder nur die Daten von Amazon ab und werten sie entsprechend aus, so dass sie dargestellt werden können. Zusätzlich zu den Produktdaten wird nun noch ein Bestellen-Link gesetzt, mit dem der Artikel zum Warenkorb hinzugefügt werden kann.


Der Warenkorb

Amazon-API

Auch der Warenkorb ist dank der zuvor definierten Hilfsfunktionen recht einfach geschrieben. Als einziges neues Element kommt hierbei jedoch hinzu, dass Sie sich für den Benutzer die Cart ID (Warenkorbnummer) und die HMAC (ebenfalls eine ID) merken müssen, damit dieser auch mehrere Produkte in seinen Warenkorb lagern kann. Zum Tragen kommen hier die Funktionen Amazon_CreateCart, Amazon_AddCart und Amazon_GetCart in der Funktionssammlung soap.php. Mit Amazon_CreateCart erzeugen Sie bei Amazon einen neuen Warenkorb und legen zugleich das in $asin angegeben Produkt hinein. Wichtig: Die XXXXX nach AssociateTag= müssen Sie durch die beim Amazon-Partnerprogramm erhaltene Partner-ID ersetzen. Mit deren Hilfe ist es Amazon möglich, bei Bestellungen diese dem jeweiligen Partner zuzuordnen und entsprechend zu provisionieren.

Mit Hilfe der Funktionen Amazon_AddCart und Amazon_GetCart wird ein weiteres Produkt dem Warenkorb hinzugefügt beziehungsweise der Inhalt des Warenkorbs zur Anzeige ausgelesen. Das Warenkorb-Skript finden Sie ebenfalls auf der Heft-CD. Es hat die Bezeichnung amazon_cart.php. Hier wird zuerst eine PHP-Session gestartet und anschließend die Warenkorbnummer ausgelesen und der Warenkorb angezeigt.

Auch hier ist der Programmcode wieder sehr ähnlich dem im Skript für die Produktübersicht: Der Amazon_GetCart-Funktion übergeben Sie die Warenkorbnummer und die HMAC-ID. Im Gegenzug erhalten Sie dafür die Daten des Warenkorbs in einem assoziativen Array. Die Daten werden dann mit einer einfachen Tabelle ausgegeben und angezeigt.


Zur Kasse gehen

Amazon-API

Das Zur Kasse gehen funktioniert bei Amazon leider noch nicht so vollautomatisch wie die Schritte davor: Be
im Bestellvorgang ist es leider noch notwendig, den Besucher auf die Seiten von Amazon zu schicken. Für Sie reicht in diesem Fall eine kleine Weiterleitung zur entsprechenden Amazon-Webseite. Ein Beispiel finden Sie auf der Heft-CD im Skript amazon_go.php.

Damit ist Ihr kleiner Amazon-Shop eigentlich schon fast fertig. Als Letztes können Sie ihn nun an die grafischen Bedürfnisse Ihrer Webseite anpassen. Wer seinen Besucher darüber hinaus entgegenkommen möchte, kann den Shop dann zum Beispiel noch durch die Anzeige verwandter Produkte aufwerten.