Bestellungen aktualisieren

Felddefinition

Pflichtfelder sind mit einem Stift markiert. Die Felddefinitionen beziehen sich auf die MySQL Syntax.

Alle Felder werden gemäß Ihres Typs vor dem Import geparsed. Geben Sie in orders_id einen leeren String mit, wird der leere String in einer 0 per INT-Cast umgewandelt.

Es erfolgt automatisch beim Import der Aufruf der jeweiligen backend_update_order-Funktion der hinterlegten Zahlungsart der Bestellung, um z.B. einen Versendet-Status via API zurückzuübermitteln.

orders_id
int(11)
Die eindeutige ID der Bestellung.
Die Aktualisierung der Bestellung folgt immer anhand der ID.
orders_status_name
varchar(50)
Name des Bestellstatus in Shop-Standardsprache. Existiert der Status nicht, wird dieser automatisch angelegt.
rg
varchar(32)
Individuelle Rechnungsdatei. Die gleichnamige Datei muss unter 'files/rg/' abgelegt werden.
ls
varchar(32)
Individuelle Lieferscheindatei. Die gleichnamige Datei muss unter 'files/ls/' abgelegt werden.
orders_comment
mediumtext
Kommentar zum Update. Sichtbarkeit gegenüber Kunden richten sich nach den Shopeinstellungen und nach dem 'customer-notified'-Knoten.
po_number
varchar(50)
Bestell-/Belegreferenz (z.B. AB-Beleg-ID aus der Warenwirtschaft). Wird in orders.po_number geschrieben und erscheint auf PDF-Belegen als ZUGFeRD BuyerReference sowie im Kundenbestellverlauf. Leere oder fehlende Werte überschreiben den Bestand nicht.
links
link
Jeder links-Knoten enthält [1..n] link-Knoten. Wird der links-Knoten mit wenigstens einem Element mitgegeben, werden alte Trackingeinträge der Bestellung immer gelöscht und durch die neue Liste ersetzt.
link
text oder Knoten
Drei Eingabevarianten werden akzeptiert:

(A) Legacy: reiner Text-Knoten, z.B. <link>https://nolp.dhl.de/nextt-online-public/de/search?piececode=00340434123456</link>. Tracking-Code und Versanddienstleister werden automatisch aus der URL erkannt (DHL, DHL Express, GLS, DPD, UPS, Hermes, FedEx, TNT, Schweizer Post, Österreichische Post, Planzer, Deutsche Post).

(B) Voll verschachtelt: <link><url>…</url><service_provider>…</service_provider><code>…</code></link> — maximale Kontrolle, keine Heuristik nötig.

(C) Nur Carrier + Code: ohne <url>, z.B. <link><service_provider>DHL</service_provider><code>00340434123456</code></link>. Der Shop baut die kundensichtbare Tracking-URL automatisch aus dem im Shop hinterlegten Carrier-Template (shipping_provider.provider_tracking_link) + Code zusammen.
link/url
text
Vollständige Tracking-URL für den Kunden, z.B. https://nolp.dhl.de/nextt-online-public/de/search?piececode=00340434123456. Optional: bleibt das Feld leer und sind service_provider + code gesetzt, wird die URL aus dem Carrier-Template + Code automatisch zusammengebaut.
link/service_provider
varchar(16)
Versanddienstleister-Code: DHL, DHLEXPRESS, GLS, DPD, UPS, HLG (Hermes), FEDEX, TNT, POSTCH, POSTAT, PLANZER, DP (Deutsche Post) oder OTHER. Bleibt das Feld leer, wird der Provider automatisch aus URL und/oder Tracking-Code erkannt.

Marktplätze (eBay, Amazon, Otto, Kaufland, Idealo) erhalten diesen Code als ShippingCarrierUsed / carrier / carrier_code übertragen.
link/code
text
Reine Tracking-Nummer ohne URL-Drumherum. Bleibt das Feld leer, wird der Code automatisch aus der URL extrahiert (letzter Query-Parameter oder Pfadsegment).
customer_notified
tinyint(1)
Kunden per E-Mail über Statusupdate informieren und Kommentar übersenden
  • 1: Kunden informieren
  • 0: Kunden nicht informieren (das Update ist je nach Shopeinstellungen trotzdem in Bestellübersicht sichtbar)
customer_notified_template_id
int(11)
ID des Bestellstatus-Textbausteins. Hier können Sie einfach eine ID des Textbaustein mitgebens dessen Text automatisch passend in Kundensprache genutzt. Außerdem erfolgt eine automatische Platzhalterersetzung.

Beispiel-XML

Die XML-Datei muss folgender Namenskonvention entsprechen:
Orders(.)*.xml

Inline-Beispiel mit allen drei Tracking-Varianten mischbar in einer Datei:

<?xml version="1.0" encoding="UTF-8"?>
<orders>
  <order>
    <id>441535</id>
    <status>Versendet</status>
    <comment>Ihre Bestellung wurde versendet.</comment>
    <po_number>AB-2026-0042</po_number>
    <rg>RG-2026-0042.pdf</rg>
    <ls>LS-2026-0042.pdf</ls>
    <links>
      <!-- (A) Legacy: nur URL als Text-Knoten -->
      <link>https://gls-group.eu/DE/de/paketverfolgung?match=987654321012</link>
      <!-- (B) Voll verschachtelt: URL + Carrier + Code -->
      <link>
        <url>https://nolp.dhl.de/nextt-online-public/de/search?piececode=00340434123456</url>
        <service_provider>DHL</service_provider>
        <code>00340434123456</code>
      </link>
      <!-- (C) Nur Carrier + Code: Shop baut die URL selbst -->
      <link>
        <service_provider>DHL</service_provider>
        <code>00340434123457</code>
      </link>
    </links>
    <customer_notified>1</customer_notified>
    <customer_notified_template_id>0</customer_notified_template_id>
  </order>
</orders>

Beispieldateien herunterladen:

Komplett-Beispiel (alle Varianten) (A) Legacy (B) Verschachtelt (C) Carrier + Code

Hinweise zur Verarbeitung

  • Idempotenz-Schutz: Identische Statusänderungen (gleiche orders_id + orders_status_name + comment) werden beim erneuten Import nicht doppelt verarbeitet. Kundenmails, Marktplatz-API-Calls und Download-Verlängerungen werden bei einem Re-Import übersprungen, das Status-Update auf der Bestellung und die Trackingdaten werden jedoch aktualisiert. So lassen sich Archiv-XMLs gefahrlos erneut einspielen, um z.B. fehlende Versanddienstleister-Codes nachzuziehen.
  • Marktplatz-Sync-Tracing: Bei Marktplatz-Bestellungen (Amazon, eBay, Otto, Kaufland, Idealo, Mirakl, Galaxus, Shöpping.at) erzeugt jeder Versand- bzw. Storno-Import zusätzlich einen internen Eintrag im Bestellverlauf (customer_notified=0) mit dem Sync-Ergebnis: [xoPort] Marktplatz-Sync (amazon, ship): erfolgreich übertragen bzw. FEHLER — <Detail>. So ist im Backend pro Bestellung direkt nachvollziehbar, ob die Übertragung an den Marktplatz geklappt hat.

Letzte Aktualisierung: 9. Oktober 2026