Mai 19, 2012 registrieren anmelden
 
Blogs durchsuchen
 
 SupportEntwickler-Blogs   
Nov 1

Erstellt von: Torsten Weggen
01.11.2006 01:00 

In der heutigen Warenwirtschaft ist eine Kommunikation mit Online-Diensten unerlässlich. Ein Großteil des Verkaufs von Waren geschieht über Webshops und Online-Portale. Die größte Plattform ist hier sicherlich eBay. eBay bietet mit ihrer API einen Zugriff auf (fast) alle relevanten Daten, die für den Verkauf von Waren nötig sind. Angefangen vom Einstellen der Artikel bei eBay über die Abwicklung nach dem Kauf gibt es eine Menge API-Calls, die wir uns im Einzelnen ansehen wollen. Außerdem sprechen wir über die möglichen Lizensierungsmodelle, um überhaupt auf die API zugreifen zu können sowie natürlich die technische Realisierung mit VFP.

Anmeldung bei eBay

Um auf die eBay-API überhaupt zugreifen zu können, bedarf es zunächst einmal der Registrierung beim Entwicklerprogramm von eBay unter http://developer.ebay.com. Unter dieser URL findet man auch die jeweils aktuellen Dokumentationen und Test-Tools. Und so ist der komplette Ablauf der Registrierung:

1.) Anmelden beim Entwicklerprogramm

Auf der Seite http://developer.ebay.com/join anmelden. Man wird dann aufgefordert, einen Benutzernamen und ein Passwort anzugeben. Dieser Benutzernamen ist unterschiedlich zum normalen eBay-Account und bietet den Zugriff auf alle Resourcen der Entwicklerseiten. Nach dem Anlegen des Accounts erhält man eine E-Mail von developer-relations@ebay.com, in der man noch einmal die Registrierung bestätigen muss. Weiterhin enthält die E-Mail einen Code zum Erzeugen der Developer-Keys für die Sandbox (eBay-Testumgebung). Die Developer-Keys werden bei jedem API-Call mitgesendet; ohne diese Keys ist kein Zugriff auf die API möglich! Nach dem Erzeugen der Keys können diese im Developer-Bereich jederzeit wieder abgefragt werden. Es ist aber trotzdem eine gute Idee, sich die Keys irgendwo zu notieren ;-)

Account information 


2.) Produktionsumgebung

Um auf die eBay-Produktionsumgebung per API zugreifen zu können, braucht es einen anderen Satz von Developer-keys. Um diese zu erhalten, muß das „Self-Certification-Formular“ unter http://developer.ebay.com/DevZone/launch/SelfCertify.asp ausgefüllt werden. dazu loggt man sich mit den unter 1. erzeugten Acoountdaten ein und füllt dann das Formular entsprechend aus. Man erhält dann eine E-Mail mit der Beschreibung, wie man an die Production-Keys gelangt (siehe 1.). Mit den Production-Keys hat man nun die Möglichkeit, bis zu 10.000 API-Calls im Monat kostenfrei zu senden.

3.) eBay-Token

Die Verifizierung eines Benutzers via API erfolgt nicht über eBay-Benutzername + Passwort, sondern über ein sogenanntes Token. Um dieses zu bekommen, benötigt man zunächst einen gültigen eBay-Account. Wenn dieser vorhanden ist, lädt man die URL http://developer.ebay.com/tokentool/ ,wählt dort die gewünschte Umgebung (Sandbox oder Production) und trägt die dazu passenden Developer-Keys ein:

clip_image004_0007
Klickt man auf „Continue“, wird man anschließend aufgefordert sich bei eBay anzumelden. Nach Eingabe von Benutzername + Passwort wird man auf eine Seite weitergeleitet, die das Token enthält. Dieses bitte als Textdatei abspeichern! Ein Token ist (üblicherweise) 18 Monate gültig und muss dann neu angefordert werden.

Nun haben wir erst einmal alles zusammen, um mit der API arbeiten zu können. Diese Prozedur wird im übrigen auf der Seite http://developer.ebay.com/quickstartguide noch etwas ausführlicher (aber in englisch!) beschrieben.

Die API aus VFP heraus ansprechen


Kommen wir nun zu den technischen Details. Es gibt mehrere Möglichkeiten, mit der eBay-API zu kommunizieren. eBay bietet einen Zugriff über ein SDK für .NET, über Webservices oder über XML. Das SDK hat den Nachteil, das es nie auf dem aktuellen Stand der API ist und das Ansprechen der Webservices scheiterte (zumindest bei mir ;-) am fehlenden Know-How bezüglich sehr komplexer Webservice-Techniken. Also fiel die Wahl auf XML, welches auf jeden Fall ein immer aktuelles, sehr einfach zu benutzendes und in der Praxis wenig störanfälliges Verfahren ist.

Und so geht’s:

CLEAR
SET MEMOWIDTH TO 150

lcAction = "GeteBayOfficialTime"
lcCompatLevel = "479"
lcDevName = "xxxxxxx" && Hier die Developer-Key-Information eintragen 
lcAppName = "xxxxxxx" && Hier die Developer-Key-Information eintragen
lcCertName = "xxxxxxx" && Hier die Developer-Key-Information eintragen
lcToken = FILETOSTR(“token.txt“) && In Token.txt ist das Token gespeichert

SET TEXTMERGE TO MEMVAR lcRequest NOSHOW
SET TEXTMERGE ON
\"1.0" encoding="utf-8"?>
\"urn:ebay:apis:eBLBaseComponents">
\ \ <> \ \ SET TEXTMERGE TO loXML = CREATEOBJECT("msxml2.DomDocument")
loXml.LoadXML(lcRequest)

IF loxml.parseError.errorCode # 0
MESSAGEBOX("Parse Fehler Zeile " +;
TRANSFORM(loxml.parseError.line) + ", Zeichen " +;
TRANSFORM(loxml.parseError.linePos) + ;
CHR(13)+CHR(10)+;
LEFT(loXml.parseError.srcText,60))
RETURN
ENDIF

loXMLPost = CREATEOBJECT("msxml2.xmlhttp")
loXMLPost.open('POST',"https://api.ebay.com/ws/api.dll",.F.)
loXMLPost.setRequestHeader("X-EBAY-API-COMPATIBILITY-LEVEL",lcCompatlevel)
loXMLPost.setRequestHeader("X-EBAY-API-SESSION-CERTIFICATE",lcDevname+";"+lcAppname+";"+lcCertname)
loXMLPost.setRequestHeader("X-EBAY-API-DEV-NAME",lcDevname)
loXMLPost.setRequestHeader("X-EBAY-API-APP-NAME",lcAppname)
loXMLPost.setRequestHeader("X-EBAY-API-CERT-NAME",lcCertname)
loXMLPost.setRequestHeader("X-EBAY-API-CALL-NAME",lcAction)
loXMLPost.setRequestHeader("X-EBAY-API-SITEID","77")

*-- 77 = eBay-Deutschland
loXMLPost.setRequestHeader("Content-Type","text/xml")
loXmlPost.send(loXML)lcReturn = loXmlPost.responseText

loXml.Loadxml(lcreturn)
IF loxml.parseError.errorCode # 0
MESSAGEBOX("Parse Fehler Zeile " +;
TRANSFORM(loxml.parseError.line) + ", Zeichen " +;
TRANSFORM(loxml.parseError.linePos) + ;
CHR(13)+CHR(10)+;
LEFT(loXml.parseError.srcText,60))
RETURN
ENDIF

lcEbayTime = loXml.selectSingleNode("GeteBayOfficialTimeResponse/Timestamp").Text
ltEbayTime = CTOT(lcEbayTime)

? "XML-Antwort:" ? lcReturn ? ? "Aktuelle eBay-Uhrzeit (in GMT) ist: ",ltEbayTime
Dieses Schema ist immer gleich. Zunächst einmal wird das XML mit den Eingangsparametern zusammengebaut. Dieses XML laden wir dann in ein MS-XML-Objekt und machen eine Syntax-Prüfung. Wenn alles OK ist, erzeugen wir uns ein XML-http-Objekt, setzen die benötigten Header-Informationen und schicken dann das XML an eBay. Die Antwort erhalten wir als String im Property „ResponseText“. Diese können wir wiederum in unser XML-Objekt laden und Syntax-Checken.

Die eigentliche Arbeit ist dann das Auslesen der einzelnen Informationen aus dem XML. Sehr hilfreich hierbei sind die Funktionen:

SelectSingleNode – Auslesen der Informationen eines bestimmten Knotens (das Property Text enthält den Wert)

SelectNodes – Auswählen einer Collection von Nodes, durch die mit FOR EACH iteriert werden kann.

Als Parameter für die beiden Funktionen wird der komplette Pfad, ausgehend vom Root-Knoten, getrennt durch einen „/“ angegeben.



Ihr Name:
Gravatar Preview
Ihre E-Mail-Adresse:
(Optional) Geben Sie Ihre E-Mail-Adresse an, um ein Gravatar-Bild festzulegen.
Ihre Web-Site:
Überschrift:
Kommentar:
Sicherheitscode
CAPTCHA image
Geben Sie die angegebenen Zeichen darunter ein.
Kommentar hinzufügen   abbrechen 
 Copyright 2010 by indisoftware GmbH   Nutzungsbedingungen  Datenschutzerklärung  Impressum