PRZETARGWygrali Państwo przetarg wymagający PunchOut?Pobierz Tender Kit

Poradnik · Protokoły

cXML a OCI: jak działają dwa protokoły PunchOut

W skrócie

cXML i OCI to dwa protokoły stojące za każdym katalogiem PunchOut. cXML (używany przez SAP Ariba, Coupa, Jaggaer, Ivalua i Oracle) wymienia dokumenty XML przez HTTPS i przesyła też zamówienie zakupu. OCI (używany przez SAP S/4HANA, SRM i ECC) zwraca koszyk jako pola formularza HTML wysyłane na HOOK_URL klienta. System klienta wyznacza potrzebny protokół.

cXML i OCI obok siebie

Porównanie cXML i OCI
cXMLOCI
Pełna nazwaCommerce eXtensible Markup LanguageOpen Catalog Interface
Utrzymywany przezcXML.org (pierwotnie Ariba)SAP
Używany przezSAP Ariba, Coupa, Jaggaer, Ivalua, Oracle, Workday…SAP S/4HANA, SAP SRM, SAP ECC, niektóre platformy handlowe
FormatDokumenty XML przez HTTPSPola formularza HTML (NEW_ITEM-*)
Uruchomienie sesjiPunchOutSetupRequest → PunchOutSetupResponseWywołanie HTTP z parametrami logowania i HOOK_URL
Zwrot koszykaPunchOutOrderMessagePOST formularza na HOOK_URL
Zamówienie zakupuOrderRequest (ten sam protokół)Osobny kanał uzgodniony z klientem, na przykład e-mail lub jego portal dostawców
KlasyfikacjaClassification domain="UNSPSC"NEW_ITEM-MATGROUP
UwierzytelnianieTożsamości + shared secretUż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.

  1. Żądanie konfiguracji

    Klient klika katalog; jego system wysyła PunchOutSetupRequest z danymi dostępowymi, BuyerCookie i adresem zwrotnym.

  2. Odpowiedź konfiguracji

    Państwa system odpowiada adresem URL StartPage; przeglądarka klienta otwiera sklep.

  3. Zakupy

    Klient widzi ceny kontraktowe i wypełnia koszyk.

  4. Zwrot koszyka

    PunchOutOrderMessage wysyła koszyk na adres zwrotny do zatwierdzenia.

  5. 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.

  1. Wywołanie

    SAP otwiera adres katalogu z parametrami logowania i HOOK_URL.

  2. Zakupy

    Klient kupuje z cenami kontraktowymi.

  3. Zwrot koszyka

    Sklep wysyła koszyk jako pola NEW_ITEM-* na HOOK_URL.

  4. 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=_top

Przykł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?

Protokół według systemu klienta
System klientaProtokółPoradnik
SAP AribacXMLSAP Ariba PunchOut
CoupacXMLCoupa PunchOut
SAP S/4HANA, SRM, ECCOCISAP OCI PunchOut
JaggaercXMLJaggaer PunchOut
Ivalua, Oracle, WorkdaycXMLWszystkie systemy
Meplato, SimenoOCI (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.

FAQ

Pytania

Jaka jest różnica między cXML a OCI?

cXML wysyła dokumenty XML przez HTTPS i obejmuje też zamówienie zakupu (OrderRequest). OCI to protokół SAP: koszyk wraca jako pola formularza HTML na HOOK_URL, a zamówienie trafia do dostawcy osobnym kanałem.

Jakiego protokołu używa SAP Ariba?

cXML. SAP S/4HANA, SRM i ECC używają OCI; Coupa, Jaggaer, Ivalua i Oracle używają cXML.

Czy jeden sklep może obsługiwać cXML i OCI?

Tak. Z PunchOut Rocket ten sam sklep WooCommerce, Magento, PrestaShop lub nopCommerce odpowiada na sesje cXML i OCI; bramka obsługuje protokół każdego klienta.

Czym jest integracja katalogu PunchOut cXML?

Połączenie umożliwiające klientowi otwarcie sklepu z systemu zakupowego przez cXML, wypełnienie koszyka i zwrot przez PunchOutOrderMessage. Zatwierdzone zamówienie dociera jako OrderRequest.

Czy OCI jest starszy niż cXML?

Oba pochodzą z końca lat dziewięćdziesiątych XX wieku i oba nadal są używane. Potrzebny protokół wyznacza system klienta, nie dostawca.

Czytaj dalej

Powiązane poradniki

30-dniowy bezpłatny okres próbny · bez karty kredytowej

Państwa klient czeka. Czas uruchomić połączenie.

Wtyczkę można zainstalować dziś i uruchomić pierwszą sesję testową jeszcze po południu. Jeśli termin jest bliski, prosimy o informację — potraktujemy zgłoszenie priorytetowo.