Asynchroner Produktimport
URL des Webservice : https://sws.spartoo.ch/mp/xml_import_products_async.phpDieser Webservice sollte auf die gleiche Weise verwendet werden wie xml_import_products
Der einzige Unterschied zu diesem Webservice ist, dass er die Produkte asynchron einbindet.
Wenn Sie diesen Webservice aufrufen, gibt er Ihnen eine URL zurück.
Wenn Sie diese URL aufrufen, erhalten Sie den Status der Dateiintegration.
Funktionsweise
Der asynchrone Import erfolgt in zwei Schritten:
- Übermittlung des Feeds: Rufen Sie den Webservice mit dem Parameter xml auf. Der Feed wird in eine Warteschlange gestellt und der Webservice antwortet sofort mit einer URL (Tag url), die die Kennung Ihres Imports enthält (Parameter export).
- Nachverfolgung und Abruf des Ergebnisses: Rufen Sie den Webservice mit dem Parameter export auf, bis Sie das Verarbeitungsergebnis erhalten (siehe Liste der Status unten).
Der Feed kann als rohes XML oder komprimiert im ZIP-Format gesendet werden: das ZIP-Format wird automatisch erkannt.
Liste der Parameter
Die Parameter dieses Webservice müssen unbedingt per POST übertragen werden| Parameter | Beschreibung |
|---|---|
| partenaire | Muss Ihre Benutzeridentifizierung enthalten: |
| xml | XML-Zeichenfolge die die Produktliste enthält |
Optionale Parameter, die in POST übertragen werden kann
| Paramètre | Beschreibung |
|---|---|
| Stärke_Beschreibung | Bitte eine 1 setzen wenn Sie die Update-Produktbeschreibungen aktivieren wollen: löschen der vorhandenen Beschreibungen, bearbeiten der Beschreibung eines Produktes, das nicht mehr am Lager ist (Null-Inventar Produkt), etc. |
| force_overwrite | Bitte die Zahl 1 einsetzen wenn Sie einen Integrationsfehler korrigieren möchten. Beachten Sie dass direkt im Anschluss der Katalog ohne overwrite zu gesendet werden muss. |
| Parameter | Schritt | Beschreibung |
|---|---|---|
| xml | 1 | Inhalt des Produkt-Feeds (rohes XML oder ZIP). Siehe untenstehende Formate. |
| export | 2 | Import-ID, die in Schritt 1 in der Antwort-URL zurückgegeben wurde. |
Format des XML-Parameters
Die Textfelder müssen durch CDATA Tags geschützt sein, wenn sie Sonderzeichen enthalten, durch die das XML ungültig wird.
Die Textfelder müssen durch CDATA Tags geschützt sein wenn Sie Sonderzeichen enthalten, durch die die XML-Datei ungültig wäre.
Format für ein Land
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <product_name>string</product_name> <manufacturers_name>string</manufacturers_name> <product_sex>char</product_sex> <product_price>float</product_price> <product_quantity>int</product_quantity> <color_id>int</color_id> <product_style>int</product_style> <product_description>string</product_description> <product_color>string</product_color> <heel_height>float</heel_height> <country_origin>int</country_origin> <code_hs>int</code_hs> <size_list> <size> <size_name>string</size_name> <size_quantity>int</size_quantity> <size_reference>string</size_reference> <ean>string</ean> <code_hs>int</code_hs> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales/> </discount> </size> <!-- ... Mehrere "size" Tags möglich ... --> </size_list> <product_composition>int</product_composition> <voering_composition>int</voering_composition> <first_composition>int</first_composition> <zool_composition>int</zool_composition> <photos> <url1>url</url1> <url2>url</url2> <url3>url</url3> <url4>url</url4> <url5>url</url5> <url6>url</url6> <url7>url</url7> <url8>url</url8> </photos> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales>0/1</sales> </discount> <extra_infos> <info> <id>int</id> <value>float</value> </info> <!-- ... Mehrere "info" Tags möglich ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Mehrere "selection" Tags möglich ... --> </selections> </product> <!-- ... Mehrere "product" Tags möglich ... --> </products> </root>
Format für mehrere Länder
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <manufacturers_name>string</manufacturers_name> <product_sex>char</product_sex> <product_quantity>int</product_quantity> <color_id>int</color_id> <product_style>int</product_style> <heel_height>float</heel_height> <country_origin>int</country_origin> <code_hs>int</code_hs> <languages> <language> <code>string</code> <product_name>string</product_name> <product_description>string</product_description> <product_color>string</product_color> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales /> </discount> </language> <!-- ... Mehrere "language" Tags möglich ... --> </languages> <size_list> <size> <size_name>string</size_name> <size_quantity>int</size_quantity> <size_reference>string</size_reference> <ean>string</ean> <code_hs>int</code_hs> <languages> <language> <code>string</code> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales/> </discount> </language> <!-- ... Mehrere "language" Tags möglich ... --> </languages> </size> <!-- ... Mehrere "size" Tags möglich ... --> </size_list> <product_composition>int</product_composition> <voering_composition>int</voering_composition> <first_composition>int</first_composition> <zool_composition>int</zool_composition> <photos> <url1>url</url1> <url2>url</url2> <url3>url</url3> <url4>url</url4> <url5>url</url5> <url6>url</url6> <url7>url</url7> <url8>url</url8> </photos> <extra_infos> <info> <id>int</id> <value>float</value> </info> <!-- ... Mehrere "info" Tags möglich ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Mehrere "selection" Tags möglich ... --> </selections> </product> <!-- ... Mehrere "product" Tags möglich ... --> </products> </root>
Beschreibung der Felder der Eingangs-XML
| Etikett | Beschreibung | obligatorisch |
|---|---|---|
| reference_partenaire |
ID des Händlerproduktes Die Produkt-ID kann nur alphanumerische Zeichen und folgende Zeichen enthalten - (Bindestrich) _ (Unterstrich) und . (Punkt). |
Nein/Ja |
| product_name |
Name des Modells Darf weder die Produktkategorie, noch die Farbe oder die Marke enthalten Darf auch keine html Zeichen oder Tags enthalten. |
Nein |
| manufacturers_name | Name der Produktmarke | Ja |
| product_sex |
Geschlecht > Alle infrage kommenden Werte einsehen |
Ja |
| product_price | Produktpreis in Euro | Ja |
| color_id |
Farbe für die Menüfilter Wenn diese nicht angegeben wird, erscheint das Produkt nicht wenn der Kunde die Artikel nach Farben filtert. > Alle infrage kommenden Werte einsehen |
Nein |
| product_style |
Produktkategorie > Alle infrage kommenden Werte einsehen |
Ja |
| product_description | Produktbeschreibung. Erscheint in der Produktübersicht. | Nein |
| product_color | Freies Textfeld für die Farbe. Erscheint in der Produktübersicht. | Non |
| product_quantity |
Totaler Lagerbestand des Produktes Wir ignoriert wenn eine oder mehrer Tags von size_quantity sollten mehrere Produkt-Tags erkannt werden. Für die Unisize Artikel muss ein extra Tag eingesetzt werden mit dem Namen product_quantity sollte der Tag size_quantity nicht ausgefüllt worden sein. |
Nein |
| size |
Liste der verfügbaren Größen. Optional für die Produkte ohne Größe (Taschen/Accessoires). Ansonsten obligatorisch. |
Ja / Nein |
| size_name |
Name der Größe > Alle infrage kommenden Werte einsehen |
Ja |
| size_quantity | Lagerbestand des Produktes in dieser Größe | Ja |
| size_reference |
Referenz des Produktes in dieser Größe. Dieses Feld dient nur dazu, die Informationen bezüglich der Exporte der Bestellungen oder Retouren an Sie zurückzuschicken. Eine bewährte Verfahrensweise ist, die Felder reference_partenaire und size_name mit einem Unterstrich "_" miteinander zu verketten und so eine Referenz zu erzeugen. |
Nein |
| ean | EAN des Produktes in dieser Größe. Nur für Damenschuhe. | Nein/ Ja |
| Fotos | Liste der Fotos und deren URL. Mindestens ein Foto muss eingesetzt werden. Wir raten Ihnen mindestens 3 Fotos einzusetzen. Maximum können nur 8 Fotos eingesetzt werden. Das Foto wird nur ein Mal heruntergeladen werden, auf unserem internen Server gespeichert, nachdem die Bildgröße bei auf Spartoo abgeändert wird. Die Fotos müssen im JPG Format sein, mit Maßen von 500x500 Pixeln. Sollten diese größer als 800x800 Pixel sein, dann können wir keinen Zoom über unsere Seite einsetzen. |
Ja |
| url1, url2 ... url8 |
Link zu den Fotos Wir müssen einen Link zu jedem Foto bereitstellen. Der Dateiname darf nur alphanumerische Zeichen enthalten wie auch folgende Zeichen "-" (Minus), "_" (Underscore) und "." (Punkt). Leerzeichen wie auch Umlaute oder Les espaces, ainsi que les lettres Akzente (Beispiel. é, à, ñ, ö, ü, ä oder ß) sind nicht erlaubt. |
Ja |
| country_origin |
Herkunftsland des Produkts > Mögliche Werte anzeigen |
Nein |
| deb | Produktzollcode | Nein |
| heel_height | Höhe des Absatzes in Zentimetern (cm). Nur für Damenschuhe. Muss mit 0,5 multipliziert werden. | Nein |
| product_composition |
Zusammensetzung des Schaftes. Nur bei Schuhen > Werte ansehen |
Non |
| voering_composition |
Zusammensetzung des Innenfutters. Nur bei Schuhen > Werte ansehen |
Nein |
| first_composition |
Zusammensetzung der Innensohle. Nur bei Schuhen > Werte ansehen |
Nein |
| zool_composition |
Zusammensetzung der Laufsohle. Nur bei Schuhen >Werte ansehen |
Nein |
| discount |
Ermöglicht es, einen Rabatt einzusetzen. Das Feld rate des Feldes discount betrifft den Preisrabatt in Prozent im Verhältnis zum Feld product_price. Das Feld price_discount des Feldes discount betrifft den Rabatt als Festpreis. Der Rabatt wird in Prozent ausgerechnet und angezeigt. Wenn beide Felder vorhanden sind, hat das Feld price_discount Vorrang gegenüber dem Feld rate. Wenn der Rabatt ab sofort gilt, ist es nicht notwendig das Feld startdate auszufüllen. Wenn das Tag sales präzisiert ist, ist der Rabatt ein Rabatt im Rahmen des Schlussverkaufs. Andernfalls ist es ein klassischer Rabatt. Diesen Parameter anzugeben sorgt dafür, dass Ihre Produkte während des Schlussverkaufs in der entsprechenden Rubrik erscheinen. |
Nein |
| extra_infos |
Ermöglicht die Angabe zusätzlicher Informationen je nach Produkttyp. Jede Information besteht aus einer ID ( > Werte ansehen ) und einem digitaler Wert |
Nein |
Beispiel XML-Parameter
<root> <products> <product> <reference_partenaire>98</reference_partenaire> <product_name><![CDATA[ALL STAR HI]]></product_name> <manufacturers_name><![CDATA[Converse]]></manufacturers_name> <product_sex>M</product_sex> <product_price>64.99</product_price> <product_quantity>5</product_quantity> <color_id>8</color_id> <product_style>10010</product_style> <product_description><![CDATA[Das Modell Chuck Taylor All Star von Converse ist ein außergewöhnliches Modell: Ein absolutes Must-Have. Dieser hohe Sneaker mit einem Schaft aus Stoff und einem klassischen unifarbenen Aufdruck ist zeitlos und immer modisch! ]]></product_description> <product_color><![CDATA[rot]]></product_color> <country_origin>73</country_origin> <code_hs>64059090</code_hs> <size_list> <size> <size_name>38</size_name> <size_quantity>4</size_quantity> <size_reference>98_38</size_reference> <ean>123456789011></ean> </size> <size> <size_name>39</size_name> <size_quantity>1</size_quantity> <size_reference>98_39</size_reference> <ean>123456789012></ean> </size> </size_list> <product_composition>4</product_composition> <photos> <url1>https://imgext.spartoo.com/photos/98/98/98_350_A.jpg</url1> <url2>https://imgext.spartoo.com/photos/98/98/98_350_B.jpg</url2> <url3>https://imgext.spartoo.com/photos/98/98/98_350_C.jpg</url3> <url4>https://imgext.spartoo.com/photos/98/98/98_350_D.jpg</url4> <url5>https://imgext.spartoo.com/photos/98/98/98_350_E.jpg</url5> <url6>https://imgext.spartoo.com/photos/98/98/98_350_F.jpg</url6> <url7>https://imgext.spartoo.com/photos/98/98/98_350_G.jpg</url7> <url8>https://imgext.spartoo.com/photos/98/98/98_350_H.jpg</url8> </photos> <discount> <startdate>1199170800</startdate> <stopdate>1204354800</stopdate> <rate>20</rate> </discount> </product> </products> </root>
Übertragung des Datenstroms über Dateien
Es ist auch möglich, den Feed (XML oder ZIP) über eine Datei zu übertragen. Dazu darf der Hauptteil der Anfrage nur die Datei enthalten.
Die verschiedenen Parameter (wie „partner“, „force_description“, „force_overwrite“ usw.) müssen zwingend in GET übermittelt werden.
Preise und Rabatte nach Größe
Die Preis- und Rabatt Tags nach Größe wurden eingeführt, um eine genaue Preisdifferenzierung innerhalb eines Produkts zu ermöglichen.Sie dürfen nur verwendet werden, wenn eine Größe einen vom allgemeinen Preis des Produkts abweichenden Preis hat..
Der auf Produktebene festgelegte Preis ist die wichtigste Referenz. Größenspezifische Tags sollen diesen Preis nur dann überschreiben, wenn eine Ausnahme erforderlich ist (z. B. Sondergrößen, Materialaufschläge, Teilauslaufmodelle usw.).
Es ist strengstens untersagt, Preis- oder Rabatt-Tags nach Größe zu verwenden, wenn alle Größen denselben Preis wie das Hauptprodukt haben. In diesem Fall muss der Preis nur auf der globalen Ebene des Produkts festgelegt werden.
Länderübergreifendes Format
Im länderübergreifenden Format ist das TagSie legt fest, in welchen Ländern das Produkt zum Verkauf angeboten wird, sowie dessen Namen, Beschreibung und Referenzpreis (product_price) für jedes Land. Dieser Preis muss unbedingt positiv sein.
Die in den Größen angegebenen
Fehlt das
Antwort auf Schritt 1: Feed-Übermittlung
Format der zurückgeschickten XML-Datei
<root> <url>string</url> <errors>int</errors> </root>
Beispiel:
<root> <url><![CDATA[https://sws.spartoo.com/mp/xml_import_products_async.php?partenaire=XXXX&export=123456]]></url> <errors>1</errors> </root>
Liste der Fehlercodes des Webservice
| Code | Beschreibung |
|---|---|
| 1 | Kein Parameterfehler |
| -1 | Der Parameter partenaire fehlt oder ist leer |
| -2 | Der Partnerparameter existiert nicht |
| -11 | Der Parameter xml fehlt oder ist leer |
| -15 | XML-Sytnaxfehler, überprüfen Sie Ihre XML-Datei |
| -428 | Ihr Kundenkonto wurde nun desaktiviert. Sie können nun keine weiteren Anfragen an den Webservice stellen. |
| -429 | Sie haben innerhalb der zur Verfügung stehenden Zeit zu viele Anfragen an den Webservice gestellt. |
Beschreibung der Felder der XML-Antwort
This webservice return you the url to call to get back the webservice responses. If there was an error, it will be printed in a status markup. Otherwise, you will get an xml contening the import result.
This result will be the same format as xml_import_products. Below is the list of statuses returned by the webservice:
| Status id | Status |
|---|---|
| 1 | Fichier pas encore traité |
| 2 | Aucune difference trouvé dans le fichier transferé |
| 3 | Resultat plus disponible |
| 4 | Erreur lors du transfert de fichier |
Antwort von Schritt 2: Verarbeitungsverfolgung
Solange die Verarbeitung nicht abgeschlossen ist, sendet der Webservice einen Status zurück:
<root> <status_id>int</status_id> <status>string</status> <errors>int</errors> </root>
| status_id | status | Bedeutung |
|---|---|---|
| 1 | Not Update Yet | Der Feed befindet sich in der Warteschlange oder wird gerade verarbeitet. Bitte versuchen Sie es später erneut. |
| 2 | No change found in file transfered. | Verarbeitung abgeschlossen: Es wurden keine Änderungen im Feed erkannt. |
| 3 | Result not available anymore | Der Feed wurde verarbeitet, aber die Ergebnisdatei ist nicht mehr verfügbar. |
| 4 | Error on file transfert | Der Feed konnte nicht gelesen werden: Bitte senden Sie ihn erneut. |
| 4 | Skipped cause newer file found | Feed ignoriert, da ein neuerer Feed gesendet wurde. |
Sobald die Verarbeitung abgeschlossen ist, sendet der Webservice direkt die Ergebnisdatei zurück: Sie hat das gleiche Format wie das Ergebnis des klassischen Imports (siehe unten).
Ergebnisformat
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <status>string</status> <action>string</action> <errors> <error> <id>int</id> <description>string</description> <level>string</level> </error> <!-- ... Mehrere "error" Tags möglich ... --> </errors> </product> <!-- ... Mehrere "product" Tags möglich ... --> </products> <errors>int</errors> </root>
| Tag | Beschreibung |
|---|---|
| reference_partenaire | ID des Partnerproduktes |
| status | OK wenn das Produkt in die Datenbank eingefügt wird KO wenn das Produkt nicht eingefügt werden konnte |
Liste der möglichen Aktionen:
|
| errors |
Liste der Verarbeitungsfehler:
|
Liste der Fehlercodes
| Code | Level | Beschreibung |
|---|---|---|
| 1 | Fatal | Die Partnerreferenz ist nicht lang genug |
| 2 | Fatal | Die Partnerreferenz ist ungültig, Sie kann nur alphanumerische Zeichen enthalten |
| 3 | Warning | Produktname ist nicht angegeben |
| 4 | Fatal | Marke ist nicht angegeben |
| 5 | Fatal | Das Geschlecht ist ungültig, die einzigen gültigen Variablen sind: H , F , M, K , G , B |
| 6 | Fatal | Der Preis muss eine Zahl sein |
| 7 | Fatal | Der Preis muss positiv sein |
| 8 | Warning | Der Preis scheint sehr hoch zu sein ( > CHF 1000 ) |
| 195 | Fatal | Der neue Preis darf nicht mehr als xxx Zahlen überschreiten |
| 81 | Fatal | Der Produktpreis kann nicht höher als € 180 sein |
| 9 | Fatal | Die Anzahl muss einen ganze Zahl sein |
| 10 | Fatal | Die Anzahl muss positiv sein |
| 11 | Warning | Die Farbe xxx existiert nicht: Das Produkt wird mithilfe der Farbfilter nicht gefunden werden können |
| 13 | Fatal | Die Kategorie xxx existiert nicht |
| 14 | Warning | Die Produktbeschreibung ist leer |
| 15 | Warning | Die Farbfeld ist leer |
| 16 | Warning | Keine Größenliste: Benutzung der Einheitsgröße |
| 17 | Warning | Die Zusammensetzung ist zwar angegeben, aber ungültig |
| 18 | Fatal | Das Foto ist obligatorisch |
| 19 | Warning | Der Diskontsatz muss zwischen 0 und 100 liegen, der Rabatt wird nicht berücksichtigt |
| 20 | Warning | Die Größe xxx existiert nicht |
| 200 | Warning | Die Größe xxx existiert nicht für die Marke xxx. |
| 201 | Fatal | EAN-Code ist erforderlich |
| 202 | Fatal | Der EAN Code xxx der Referenz xxx in der Größe xxx wurde von der Referenz xxx bereits verwendet. |
| 205 | Fatal | Partnerreferenz zu lang |
| 23 | Warning | Das Foto xxx ist kleiner als 350x350: Es wird online eine schlechte Qualität aufweisen |
| 24 | Warning | Das Foto xxx ist kleiner als 350x350: Es wird online nicht angezeigt |
| 25 | Fatal | Größe xxx: Es ist nicht möglich, den Lagerbestand zu regulieren |
| 26 | Fatal | Ausverkauft: Das Produkt wird nicht kreiert werden |
| 27 | Fatal | Es ist unmöglich, Zugang zum Foto 1 zu bekommen (url xxx) |
| 28 | Warning | Es ist unmöglich, Zugang zum xxx zu bekommen (url xxx) |
| 30 | Fatal | Die Anzahl der Größe xxx ist zu hoch ( Maximale Anzahl : xxx) |
| 33 | Fatal | Ein Produkt dieser Art xxx gehört nicht zu dieser Kategorie xxx |
| 34 | Fatal | Das Wort xxx ist gesperrt und wird nicht angezeigt werden. |
| 35 | Fatal | Produktname zu lang, er darf nur den Namen des Modells enthalten. Fehler im Land/in den Ländern: xxx |
| 341 | Fatal | Das Wort xxx ist gesperrt und wird nicht in der Produktbeschreibung angezeigt werden. |
| 36 | Fatal | Das Produkt kann nicht importiert werden: Das Produkt weist eine Duplizierung der Größe/Farbe auf. |
| 37 | Fatal | Dieses Produkt enthält keine Sprachinformationen für eine aktive Website. |
| 32 | Fatal | Es wurden keine Informationen bezüglich diesem Produkt gefunden |
| 38 | Fatal | Die Größe xxx kann nur einmal verwendet werden, für die Referenz xxx |
| 39 | Warning | Die Partnerreferenz ist mehrmals im Feed vorhanden, Duplikate wurden ignoriert |
| 451 | Fatal | Kein Preis für die Größe xxx des Landes xxx. (für einen Preisnachlass erforderlich) |
| 452 | Warning | Enddatum des überschrittenen Discounts für die Größe xxx des Landes xxx. |
| 453 | Fatal | "rate" (xxx) ungültig für die Größe xxx des Landes xxx. |
| 454 | Fatal | "rate" (xxx) > 85% für die Größe xxx des Landes xxx. |
| 455 | Warning | Die Größe xxx mit einem Preis auf ein Land (xxx), das für das Produkt nicht definiert ist. |
| 456 | Warning | Die Größe xxx hat einen Preis auf xxx, der mit dem Gesamtpreis in diesem Land identisch ist. |
| 194 | Fatal | Der Nachlass bzw dem neuen Preis darf nicht die xxx% überschreiten |
Beispiele XML-Antwort
Beispielantwort auf einen KO-Aufruf eines Webdienstes :
<root> <products></products> <errors>-1</errors> </root>
Beispielantwort auf einen KO-Aufruf eines Webdienstes :
<root> <products> <product> <reference_partenaire>EEAJBCC</reference_partenaire> <status>KO</status> <action>not created</action> <errors> <error> <id>14</id> <description>Die Produktbeschreibung ist leer</description> <level>warning</level> </error> <error> <id>4</id> <description>Marke ist nicht angegeben</description> <level>fatal</level> </error> </errors> </product> <product> <reference_partenaire>KJHGFDS</reference_partenaire> <status>OK</status> <action>created</action> </product> </products> <errors>1</errors> </root>
XSD-Dateien
Mehrländer-XSD-Dateien
Saitoo Marketplace