So nutzen Sie die Features der eBay-api
Sesam öffne dich

Allgemein

Ebay ist eines der beliebtesten Reiseziele vieler Internet-Surfer, wenn
es ums Kaufen und Verkaufen geht. Internet Professionell zeigt, wie
Entwickler mit der Ebay-API eine Menge Zeit sparen.

Ebay als Lebensunterhalt

So nutzen Sie die Features der eBay-api

Mittlerweile gibt es ein kleines Grüppchen von Personen, die sich mit
Ebay durch das Verkaufen von Artikeln ihren Lebensunterhalt finanzieren.
Solange diese Personen nicht gerade Diamanten kostenlos ein- und teuer
verkaufen können, erreichen sie dies sicher nicht durch eine Hand voll
Auktionen im Monat. Zum Bestreiten des Lebensunterhalts sind weitaus
mehr Verkäufe nötig.

Genauso wenig lassen sich diese Auktionen
noch über »Mein Ebay« abwickeln, da der Aufwand enorm groß wird: Die
Auktionen müssen überwacht, Bestätigungs-E-Mails verschickt, die Preise
errechnet und letztendlich die Ware versendet werden. Viele dieser
Powerseller greifen daher auf Tools zurück, die ihnen das Leben
beziehungsweise die Arbeit erleichtern. Eines dieser Tools ist die
Ebay-API.


Aller Anfang ist schwer

So nutzen Sie die Features der eBay-api

Um die API verwenden zu können, müssen Sie zunächst einmal Mitglied im
Ebay Developers Program werden. Vorausgesetzt Sie können ein wenig
Englisch, ist das auch nicht weiter problematisch. Öffnen Sie die Seite
developer. ebay.com und wählen Sie den Link Membership, Join aus. Es
folgen nun mehrere Seiten mit Informationen über das Developers Program,
und Sie müssen Angaben zu Ihrer Person machen. Lesen Sie die Hinweise
sorgsam durch und entscheiden Sie sich erst einmal für eine »Individual
API License«. Durch diese entstehen Ihnen keine Kosten. Um die
Registrierung durchzuführen, benötigen Sie einen existierenden
Ebay-Account.

Nachdem die Registrierungsprozedur abgeschlossen
ist, erhalten Sie eine Bestätigungs-Mail von Ebay. Diese Mail ist
wichtig und Sie sollten sie unter keinen Umständen löschen. Ansonsten
müssen Sie mit mehreren Tagen Wartezeit rechnen, um die Sandbox-Keys zu
bekommen und Ihre Anwendung zu testen.

Folgen Sie den Anweisungen
in den Punkten eins bis drei der Mail und lassen Sie sich Ihre
persönlichen Sandbox-Keys erzeugen. Danach sollten Sie die Keys
ausdrucken oder abspeichern.

Nun benötigen Sie lediglich noch
einen Testuser. Für die Testzwecke existiert nämlich eine vollständige
Kopie der Ebay-Plattform unter dem Namen »Sandbox« unter
sandbox.ebay.com. Wählen Sie hier den Link Register aus und führen Sie
eine komplette Anmeldung wie im normalen Ebay durch. Achten Sie darauf,
eine echte Adresse aus den USA einzugeben. Ein besonders hilfreicher
Tipp stammt von Carsten Harnisch aus dem deutschen Developer Forum:
www.yellowpages.com. Damit ist der Anfang geschafft, und Sie können
bereits Ihre erste Anwendung entwickeln.


Funktionsweise

So nutzen Sie die Features der eBay-api

Für einige Leser gewöhnungsbedürftig ist sicherlich die Art der
Kommunikation mit der API. Diese basiert nämlich auf HTTP und XML. Jede
Anfrage wird an die API per modifiziertem HTTP-Header geschickt, gefolgt
von einigen Daten in XML-Form. Um dies in PHP umsetzen zu können,
benötigen Sie das Modul cURL. Genauere Informationen zur Installation
finden Sie in der PHP-Dokumentation unter www.php.net/manual/de/ref.
curl.php oder Sie recherchieren in einer Websuchmaschine wie Google nach
den Stichwörtern php und curl.

Der Header ist dabei
folgendermaßen aufgebaut:

X-EBAY-API-COMPATIBILITY-LEVEL

X-EBAY-API-SESSION-CERTIFICATE

X-EBAY-API-DEV-NAME

X-EBAY-API-APP-NAME

X-EBAY-API-CERT-NAME

X-EBAY-API-CALL-NAME

X-EBAY-API-SITEID

X-EBAY-API-DETAIL-LEVEL

Content-Type:

Content-Length:

Aktuell ist der Kompatibilitäts-Level 341
gültig. Dieser Level dient zur Kontrolle, welche Version der API vom
Programm unterstützt wird. Ein Level ist immer ein Jahr gültig und
abwärtskompatibel.

Die drei Werte für DEV-NAME, APP-NAME
und CERT-NAME sind die Sandbox-Keys, welche Sie nach der
Registrierung erzeugen lassen mussten. Diese werden Sie häufiger
benötigen. Achten Sie darauf, diese Keys nicht weiterzugeben, da dies
unter Umständen zu Kosten führen kann, falls jemand Ihren Account
verwendet und Sie nicht über einen Individual-Account verfügen. Es
empfiehlt sich, die Keys in eine Datei auszulagern.

Für
SESSION-CERTIFICATE
müssen alle drei Sandbox-Keys im Format
dev-name; app-name; cert-name
angegeben werden. Die Bezeichner
müssen Sie natürlich durch entsprechende Werte ersetzen.

Nach
CALL-NAME
muss die API-Funktion notiert werden, die Sie aufrufen
möchten. Momentan verfügt die API über 50 verschiedene Funktionen. Zum
Testen reicht jedoch erst einmal GeteBayOfficialTime. Diese
Funktion ermittelt die offizielle Ebay-Zeit.

Für Content-Type
wird text/xml verwendet, da die zu verschickenden Daten in einem
XML-Gerüst aufgebaut sein müssen. Für Content-Length wird die zu
transferierende Menge an Daten in Bytes des XML-Dokuments angegeben. Ein
kompletter Header könnte demnach folgendermaßen aussehen – die Werte für
die Sandbox-Keys sind in diesem Beispiel vereinfacht dargestellt:


X-EBAY-API-COMPATIBILITY-LEVEL: 341


X-EBAY-API-SESSION-CERTIFICATE: 1;2;3


X-EBAY-API-DEV-NAME: 1

X-EBAY-API-APP-NAME: 2

X-EBAY-API-CERT-NAME: 3

X-EBAY-API-CALL-NAME:
GeteBayOfficialTime

X-EBAY-API-SITEID: 0

X-EBAY-API-DETAIL-LEVEL: 0

Content-Type: text/xml

Content-Length: xx


Das XML-Dokument

So nutzen Sie die Features der eBay-api

Das zu versendende XML-Dokument kann verschiedene Informationen
enthalten, je nachdem, welche Funktion ausgeführt werden soll. Für die
Funktion GeteBayOfficialTime sieht es dabei typischerweise
folgendermaßen aus:




EBAY_TESTUSER_USERNAME


EBAY_TESTUSER_PASSWORD

1

0

GeteBayOfficialTime

0

Als Werte für die beiden
Elemente RequestUserId und RequestPassword müssen die
Daten des von Ihnen neu eingerichteten Testusers notiert werden. Im
Produktiveinsatz sollten Sie also zwingend darauf achten, dass diese
Daten möglichst sicher über das Internet übertragen werden, damit keine
unberechtigten Personen diese auslesen und missbrauchen können.

Generell schreibt Ebay in dieser Hinsicht auch die Verschlüsselungsgrade
vor, falls Sie die Daten speichern möchten. Genauere Angaben können Sie
der API-Dokumentation entnehmen.

Das Element ErrorLevel
definiert, wie genau Fehlermeldungen ausgegeben werden sollen: 0 steht
dabei für kurze, 1 für lange Meldungen. Mit DetailLevel können
Sie festlegen, wie viele Informationen Sie erhalten wollen – 0
deaktiviert alle Einstellungen. Die aufzurufende Funktion wird mit dem
Element Verb angegeben.


Ein Beispiel

So nutzen Sie die Features der eBay-api

Im PHP-Skript sollten Sie das XML als Erstes aufbereiten, da Sie später
dessen Länge im Header angeben müssen. Speichern Sie es als String in
einer Variablen wie zum Beispiel $apiRequest.

Der nächste
Schritt besteht darin, den Header zu definieren. cURL verlangt für jeden
Eintrag ein eigenes Element in einem Array. Die Definition sieht dann
wie folgt aus – in diesem Beispiel auf zwei Angaben gekürzt:


$apiHeader[] = 'X-EBAY-API- COMPATIBILITY-LEVEL:'.$config
['compatibility_level'];

...

$a#piHeader[] = 'Content-Type: text/xml';

$apiHeader[] =
'Content-Length: '.strlen($apiRequest);

Mittels strlen
können Sie übrigens ganz bequem die Datenmenge des XML-Dokuments in Byte
ermitteln.

Das Senden des Headers und Übertragen des
XML-Dokuments mittels cURL gestaltet sich relativ einfach:


$chApi = curl_init('https://api.sandbox.ebay.com/ws/api.dll');


if($chApi) {

curl_setopt($chApi, CURLOPT_RETURNTRANSFER,1);

curl_setopt($chApi,CURLOPT_POST,1);


curl_setopt($chApi,CURLOPT_POSTFIELDS, $apiRequest);


curl_setopt($chApi,CURLOPT_ HTTPHEADER,$apiHeader);


$apiAnswer = curl_exec($chApi); }

else { die('Fehler'); }

Wenn Sie die Skripts lokal auf einem Ihrer Webserver testen möchten, müssen
Sie zunächst auch eine Möglichkeit schaffen, die Sicherheitszertifikate
für die sichere SSL-Verbindung zu validieren. Laden Sie sich daher
hierzu aus dem Internet die neueste Version von mod_ssl herunter
und entpacken Sie aus dem ZIP-Archiv die Datei ca-bundle.crt.

Um das Bundle zur Zertifizierung nutzen zu können, müssen Sie cURL nur noch
mitteilen, wo die entsprechende Datei zu finden ist. Hierzu verwenden
Sie folgende Zeile:

curl_setopt($chApi,CURLOPT_CAINFO,
'drive:\path-to-bundle ca-bundle.crt');

Bei der
entsprechenden Antwort, welche Sie daraufhin erhalten, handelt es sich
wiederum um ein Dokument im XML-Format. Dieses wird unter $apiAnswer
gespeichert. Entsprechend der ausgeführten API-Funktion kann das XML-Dokument
unterschiedliche Informationen enthalten.

Sollte der Aufruf von
curl_exec
aus welchem Grund auch immer fehlerhaft gewesen sein, ist der
Wert der Variablen $apiAnswer gleich false. Sie sollten
also auf jeden Fall den Wert überprüfen, um keine Probleme mit dem
XML-Parser zu bekommen, und gegebenenfalls eine mehr oder weniger
aussagekräftige Fehlermeldung ausgeben. Zumindest während des
Evaluierungsprozesses ist dies sehr zu empfehlen.

Dafür können
Sie die Funktionen curl_errno und curl_error verwenden. In
der Dokumentation zu cURL finden Sie auch einige Informationen zu den
möglichen Fehlern.

if($apiAnswer == false) {

echo

'Fehler:
'. curl_errno($chApi).' /
'.curl_error($chApi);

}
else {

echo $apiAnswer; }

Die typische Antwort der Ebay-API auf
GeteBayOfficialTime
lautet




2004-02-08 19:40:38

Denken
Sie auch daran, dass der Zeitstempel der GMT entspricht. Daher müssen
Sie den Zeitstempel noch an die lokale Zeitzone des jeweiligen Benutzers
anpassen.