cXML i OCI obok siebie
| cXML | OCI | |
|---|---|---|
| Pełna nazwa | Commerce eXtensible Markup Language | Open Catalog Interface |
| Utrzymywany przez | cXML.org (pierwotnie Ariba) | SAP |
| Używany przez | SAP Ariba, Coupa, Jaggaer, Ivalua, Oracle, Workday… | SAP S/4HANA, SAP SRM, SAP ECC, niektóre platformy handlowe |
| Format | Dokumenty XML przez HTTPS | Pola formularza HTML (NEW_ITEM-*) |
| Uruchomienie sesji | PunchOutSetupRequest → PunchOutSetupResponse | Wywołanie HTTP z parametrami logowania i HOOK_URL |
| Zwrot koszyka | PunchOutOrderMessage | POST formularza na HOOK_URL |
| Zamówienie zakupu | OrderRequest (ten sam protokół) | Osobny kanał uzgodniony z klientem, na przykład e-mail lub jego portal dostawców |
| Klasyfikacja | Classification domain="UNSPSC" | NEW_ITEM-MATGROUP |
| Uwierzytelnianie | Tożsamości + shared secret | Użytkownik i hasło lub token w wywołaniu |
PunchOut cXML: jak działa sesja
W cXML każdy krok jest dokumentem XML wysyłanym przez HTTPS. System klienta i Państwa system identyfikują się wzajemnie danymi w nagłówku (dla SAP Ariba — Network ID) oraz shared secret.
Żądanie konfiguracji
Klient klika katalog; jego system wysyła PunchOutSetupRequest z danymi dostępowymi, BuyerCookie i adresem zwrotnym.
Odpowiedź konfiguracji
Państwa system odpowiada adresem URL StartPage; przeglądarka klienta otwiera sklep.
Zakupy
Klient widzi ceny kontraktowe i wypełnia koszyk.
Zwrot koszyka
PunchOutOrderMessage wysyła koszyk na adres zwrotny do zatwierdzenia.
Zamówienie
Po zatwierdzeniu zamówienie zakupu dociera jako OrderRequest.
Przykład · PunchOutSetupRequest (skrócony)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="1729332000.4711@buyer.example.com" timestamp="2026-10-19T10:00:00+02:00">
<Header>
<From><Credential domain="NetworkID"><Identity>AN01000000001</Identity></Credential></From>
<To><Credential domain="NetworkID"><Identity>AN01000000002</Identity></Credential></To>
<Sender>
<Credential domain="NetworkID">
<Identity>AN01000000001</Identity>
<SharedSecret>••••••••</SharedSecret>
</Credential>
<UserAgent>Buyer procurement system</UserAgent>
</Sender>
</Header>
<Request>
<PunchOutSetupRequest operation="create">
<BuyerCookie>8f2c41d0a9</BuyerCookie>
<BrowserFormPost><URL>https://buyer.example.com/punchout/return</URL></BrowserFormPost>
<SupplierSetup><URL>https://gateway.example.com/setup</URL></SupplierSetup>
</PunchOutSetupRequest>
</Request>
</cXML>Przykład · PunchOutSetupResponse
<cXML payloadID="1729332001.88@gateway.example.com" timestamp="2026-10-19T10:00:01+02:00">
<Response>
<Status code="200" text="OK"/>
<PunchOutSetupResponse>
<StartPage><URL>https://gateway.example.com/session/7f3a…</URL></StartPage>
</PunchOutSetupResponse>
</Response>
</cXML>Przykład · PunchOutOrderMessage
<cXML payloadID="1729332555.12@gateway.example.com" timestamp="2026-10-19T10:09:15+02:00">
<Header>…</Header>
<Message>
<PunchOutOrderMessage>
<BuyerCookie>8f2c41d0a9</BuyerCookie>
<PunchOutOrderMessageHeader operationAllowed="edit">
<Total><Money currency="EUR">96.00</Money></Total>
</PunchOutOrderMessageHeader>
<ItemIn quantity="20">
<ItemID><SupplierPartID>GLV-09</SupplierPartID></ItemID>
<ItemDetail>
<UnitPrice><Money currency="EUR">4.80</Money></UnitPrice>
<Description xml:lang="en">Safety gloves, size 9</Description>
<UnitOfMeasure>PR</UnitOfMeasure>
<Classification domain="UNSPSC">46181504</Classification>
</ItemDetail>
</ItemIn>
</PunchOutOrderMessage>
</Message>
</cXML>PunchOut OCI: jak działa sesja
OCI jest prostszy i starszy w konstrukcji: nie używa XML. SAP otwiera adres katalogu z parametrami logowania i HOOK_URL; na końcu sklep wysyła koszyk na ten adres jako pola formularza HTML.
Wywołanie
SAP otwiera adres katalogu z parametrami logowania i HOOK_URL.
Zakupy
Klient kupuje z cenami kontraktowymi.
Zwrot koszyka
Sklep wysyła koszyk jako pola NEW_ITEM-* na HOOK_URL.
Zamówienie
OCI nie przenosi zamówienia zakupu: trafia ono do Państwa kanałem uzgodnionym z klientem, na przykład e-mailem lub przez jego portal dostawców.
Przykład · Wywołanie OCI z HOOK_URL
https://shop.example.com/oci?USERNAME=acme&PASSWORD=••••
&HOOK_URL=https%3A%2F%2Fsap.buyer.example.com%2Fsap%2Fbc%2Fsrm%2Foci_return
&OCI_VERSION=4.0&returntarget=_topPrzykład · Zwrot koszyka OCI na HOOK_URL
<form method="post" action="{HOOK_URL}">
<input type="hidden" name="NEW_ITEM-DESCRIPTION[1]" value="Safety gloves, size 9">
<input type="hidden" name="NEW_ITEM-QUANTITY[1]" value="20">
<input type="hidden" name="NEW_ITEM-UNIT[1]" value="PR">
<input type="hidden" name="NEW_ITEM-PRICE[1]" value="4.80">
<input type="hidden" name="NEW_ITEM-CURRENCY[1]" value="EUR">
<input type="hidden" name="NEW_ITEM-MATGROUP[1]" value="46181504">
<input type="hidden" name="NEW_ITEM-VENDORMAT[1]" value="GLV-09">
</form>Nazwy pól są indeksowane według wiersza ([1], [2]…). Dokumentacja klienta określa wymagane pola, np. numer materiału dostawcy, czas dostawy lub długi opis.
Którego używa klient?
| System klienta | Protokół | Poradnik |
|---|---|---|
| SAP Ariba | cXML | SAP Ariba PunchOut |
| Coupa | cXML | Coupa PunchOut |
| SAP S/4HANA, SRM, ECC | OCI | SAP OCI PunchOut |
| Jaggaer | cXML | Jaggaer PunchOut |
| Ivalua, Oracle, Workday | cXML | Wszystkie systemy |
| Meplato, Simeno | OCI (i cXML) | Wszystkie systemy |
W razie wątpliwości dokumentacja klienta dla dostawców podaje protokół na pierwszych stronach. Niektórzy klienci SAP używają SAP Ariba dla wydatków pośrednich i katalogów OCI w S/4HANA dla materiałów bezpośrednich: mogą być potrzebne oba.
Integracja katalogu PunchOut cXML: co zmienia się w sklepie
Niezależnie od protokołu sklep potrzebuje tych samych pięciu elementów, aby działać jako katalog PunchOut:
- Katalog i ceny dla poszczególnych klientów
- Kod klasyfikacji każdego produktu (UNSPSC lub ECLASS)
- Otwarcie w ramce klienta: nagłówki ramek, pliki cookie i ustawienia bezpieczeństwa
- Jednostki miary mapowane na kody klienta
- Import zamówień przez cXML OrderRequest (plan Premium)
Obsługa obu w jednym sklepie
Wielu dostawców ostatecznie ma klientów używających obu protokołów. Dwie integracje podwajają pracę; bramka obsługująca oba pozwala jednemu sklepowi obsługiwać wszystkich klientów. W PunchOut Rocket konfigurują Państwo każdego klienta raz w panelu, wybierają cXML lub OCI, a wtyczka sklepu pozostaje ta sama.
PunchOut w obecnym sklepie
PunchOut Rocket łączy WooCommerce, Magento, PrestaShop i nopCommerce z SAP Ariba, Coupa i SAP przez cXML lub OCI. Od 163 €/mies. za witrynę, 30-dniowy bezpłatny okres próbny.