cXML wird oft nur mit dem Sprung in einen Lieferantenkatalog verbunden. Der Standard kann aber auch die nachgelagerten Geschäftsdokumente transportieren. In einem vollständigen Magento-2-Prozess folgen auf Anmeldung und Warenkorbrückgabe eine genehmigte Bestellung, Bestätigung, Versandmeldung und Rechnung.
Kurzantwort: PunchOutSetupRequest, PunchOutSetupResponse und PunchOutOrderMessage bilden die interaktive Einkaufsphase. Ein späterer OrderRequest kann den freigegebenen Auftrag an Magento übermitteln. Confirmation, ShipNotice und InvoiceDetail schließen den Belegzyklus an. Welche Nachrichten tatsächlich eingesetzt werden, wird pro Käufer vereinbart.
1. PunchOut-Setup und Anmeldung
Das Beschaffungssystem sendet einen PunchOutSetupRequest. Darin stehen die Identitäten von Käufer und Lieferant, Sender-Zugangsdaten, Operation, Browser-Rückgabeziel und häufig zusätzliche Extrinsics.
Magento authentifiziert den Sender, löst das Käuferprofil auf und antwortet mit einem PunchOutSetupResponse. Dessen Start-URL enthält eine kurzlebige Sitzung. Der Käufer benötigt deshalb kein zusätzliches Shop-Passwort.
Die Anfrage muss zum richtigen Magento-Kontext führen: Store View, Kunde, Währung, Katalog und Preise. Shared Secret und Identity-Domain sichern die Verbindung, ersetzen aber nicht diese fachliche Zuordnung.
2. Katalog und Warenkorbrückgabe
Im Shop verwendet der Käufer die normalen Magento-Funktionen für Suche, Produktoptionen und Warenkorb. Beim Rücksprung erzeugt Magento ein PunchOutOrderMessage mit den ausgewählten Positionen und übermittelt es an das vom Käufer vorgegebene Browser-Formularziel.
Typische Zeilendaten sind Lieferantenartikelnummer, Menge, Einheit, Preis, Währung, Beschreibung und Klassifikation. Extrinsics ergänzen kundenspezifische Werte. Die Rückgabe erstellt zunächst eine Bestellanforderung im Beschaffungssystem, keinen Auftrag in Magento.
3. Freigabe und cXML OrderRequest
Nach der internen Freigabe kann die Käuferplattform einen authentifizierten OrderRequest direkt an Magento senden. Dieser Server-zu-Server-Aufruf ist unabhängig von der inzwischen abgelaufenen Browser-Sitzung.
Magento muss dabei Käufer, Währung, Produkte, Mengen, Adressen, Versandart, Preise und externe Bestellreferenz prüfen. Besonders wichtig ist die Preisregel: Eine unveränderte Zeile kann gegen den zurückgegebenen Warenkorb validiert werden. Geänderte Mengen oder neue Produkte sollten durch die aktuelle Magento-Preislogik laufen. Abweichungen dürfen nicht stillschweigend akzeptiert werden.
Erst wenn der konfigurierte Verarbeitungsmodus die Auftragserstellung erlaubt und alle Regeln erfüllt sind, entsteht ein Magento-Auftrag. Alternativ kann ein Projekt Bestellungen nur bestätigen und zur manuellen Prüfung speichern.
4. Bestätigung, Versand und Rechnung
Nachgelagerte cXML-Dokumente werden an eigene Endpunkte des Käufers gesendet:
| Geschäftsschritt | cXML-Nachricht | Typischer Auslöser in Magento |
|---|---|---|
| Auftragsbestätigung | ConfirmationRequest |
Auftrag angenommen oder Status geändert |
| Versandmeldung | ShipNoticeRequest |
Sendung mit Positionen und Tracking erstellt |
| Rechnung | InvoiceDetailRequest |
Rechnung in Magento gebucht |
Diese Endpunkte sind nicht mit der Browser-Rückgabe-URL identisch. Nachrichten sollten in einer Queue dauerhaft gespeichert, nachvollziehbar zugestellt und kontrolliert erneut versendet werden können.
Zustellung und Wiederholungen
Ein eindeutiger HTTP-Fehler kann nach einer vereinbarten Strategie erneut versucht werden. Bei einem Verbindungsabbruch nach dem Senden ist das Ergebnis dagegen unbekannt: Der Empfänger könnte die Nachricht bereits verarbeitet haben. Automatisches Wiederholen kann dann doppelte Belege erzeugen. Solche Fälle gehören in eine manuell prüfbare Zustandsklasse.
Trace-Daten helfen bei der Diagnose, dürfen aber keine Shared Secrets, Sitzungstoken oder vollständigen vertraulichen Nutzdaten offenlegen.
Plattformen und Projektrahmen
SAP Ariba, Coupa und Oracle Procurement nutzen cXML in unterschiedlichen Ausprägungen. Auch Jaggaer, Tungsten und Basware können in Beschaffungsprojekten mit cXML-Bezug auftreten. Daraus folgt keine pauschale Plug-and-play-Zusage. Identitäten, DTD-Versionen, Pflichtfelder, Extrinsics und Folgebelege müssen mit dem jeweiligen Käufer-Tenant getestet werden.
Abnahme des vollständigen Zyklus
- gültige und ungültige Setup-Anfragen
- korrekte Kundenpreise und Produktoptionen
- Rückgabe einzelner und mehrerer Positionen
- genehmigte Bestellung mit unveränderten Zeilen
- geänderte Menge, neue und entfernte Position
- Preisabweichung und abgelaufener Warenkorb-Snapshot
- Teilversand und mehrere Rechnungen
- eindeutiger Zustellfehler und unbekannter Zustellstatus
- doppelte externe Bestellnummer und wiederholte Nachricht
Häufig gestellte Fragen
Muss jedes cXML-Projekt alle Dokumente verwenden?
Nein. Viele Projekte beginnen mit PunchOut und Warenkorbrückgabe. Bestellung und Folgebelege werden nur aktiviert, wenn der Käufer sie verlangt und beide Seiten den Nachrichtenvertrag abgenommen haben.
Ist ein PunchOutOrderMessage schon die Bestellung?
Nein. Es beschreibt den zurückgegebenen Warenkorb. Die genehmigte Bestellung kommt später als OrderRequest.
Können Folgebelege nach Ablauf der Sitzung gesendet werden?
Ja. Sie verwenden dauerhaft hinterlegte Käufer- und Auftragsdaten, nicht den kurzlebigen Browser-Token.
Weiterlesen
- Magento 2 PunchOut verständlich erklärt
- PunchOut für SAP Ariba, Coupa und Oracle
- Checkliste für die PunchOut-Implementierung
- SoftwareSilo PunchOut für Magento 2
