GARAHai vinto una gara che richiede PunchOut?Scarica il Tender Kit

Guida · Protocolli

cXML e OCI: come funzionano i due protocolli PunchOut

In breve

cXML e OCI sono i due protocolli alla base di ogni catalogo PunchOut. cXML (usato da SAP Ariba, Coupa, Jaggaer, Ivalua, Oracle) scambia documenti XML tramite HTTPS e trasporta anche l’ordine d’acquisto. OCI (usato da SAP S/4HANA, SRM ed ECC) restituisce il carrello come campi di un modulo HTML inviati all’HOOK_URL del cliente. Il sistema del cliente determina quale protocollo Ti serve.

cXML e OCI a confronto

Confronto tra cXML e OCI
cXMLOCI
Nome completoCommerce eXtensible Markup LanguageOpen Catalog Interface
Gestito dacXML.org (originariamente Ariba)SAP
Usato daSAP Ariba, Coupa, Jaggaer, Ivalua, Oracle, Workday…SAP S/4HANA, SAP SRM, SAP ECC, alcuni marketplace
FormatoDocumenti XML tramite HTTPSCampi di un modulo HTML (NEW_ITEM-*)
Avvio della sessionePunchOutSetupRequest → PunchOutSetupResponseChiamata HTTP con parametri di accesso e HOOK_URL
Ritorno del carrelloPunchOutOrderMessagePOST di un modulo all’HOOK_URL
Ordine d’acquistoOrderRequest (stesso protocollo)Un canale separato concordato con il cliente, per esempio email o il suo portale fornitori
ClassificazioneClassification domain="UNSPSC"NEW_ITEM-MATGROUP
AutenticazioneIdentità + shared secretUtente e password o token nella chiamata

PunchOut cXML: come funziona una sessione

In cXML ogni passaggio è un documento XML inviato tramite HTTPS. Il sistema del cliente e il tuo sistema si identificano reciprocamente tramite credenziali nell’header (per SAP Ariba, Network ID) e uno shared secret.

  1. Richiesta di configurazione

    Il cliente seleziona il tuo catalogo; il suo sistema invia un PunchOutSetupRequest con credenziali, BuyerCookie e URL di ritorno.

  2. Risposta di configurazione

    Il tuo sistema risponde con un URL StartPage; il browser del cliente apre il tuo e-commerce.

  3. Acquisto

    Il cliente vede i prezzi contrattuali e riempie il carrello.

  4. Ritorno del carrello

    Un PunchOutOrderMessage invia il carrello all’URL di ritorno per l’approvazione.

  5. Ordine

    Dopo l’approvazione, l’ordine d’acquisto arriva come OrderRequest.

Esempio · PunchOutSetupRequest (abbreviato)

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

Esempio · 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>

Esempio · 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: come funziona una sessione

OCI è più semplice e ha un’impostazione meno recente: non usa XML. SAP apre l’URL del tuo catalogo con i parametri di accesso e un HOOK_URL; al termine il tuo e-commerce invia il carrello a quell’indirizzo come campi di un modulo HTML.

  1. Chiamata

    SAP apre l’URL del tuo catalogo con i parametri di accesso e l’HOOK_URL.

  2. Acquisto

    Il cliente acquista con i propri prezzi contrattuali.

  3. Ritorno del carrello

    Il tuo e-commerce invia il carrello come campi NEW_ITEM-* all’HOOK_URL.

  4. Ordine

    OCI non trasporta l’ordine d’acquisto: ti arriva tramite un canale concordato con il cliente, per esempio email o il suo portale fornitori.

Esempio · Chiamata OCI con 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

Esempio · Ritorno del carrello OCI all’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>

I nomi dei campi sono indicizzati per riga ([1], [2]…). La documentazione del cliente indica quali campi sono obbligatori, ad esempio il codice articolo del fornitore, un tempo di consegna o un testo esteso.

Quale usa il tuo cliente?

Protocollo per sistema del cliente
Sistema del clienteProtocolloGuida
SAP AribacXMLSAP Ariba PunchOut
CoupacXMLCoupa PunchOut
SAP S/4HANA, SRM, ECCOCISAP OCI PunchOut
JaggaercXMLJaggaer PunchOut
Ivalua, Oracle, WorkdaycXMLTutti i sistemi
Meplato, SimenoOCI (e cXML)Tutti i sistemi

In caso di dubbi, la documentazione fornitore del cliente lo indica nelle prime pagine. Alcuni clienti SAP usano SAP Ariba per la spesa indiretta e cataloghi OCI in S/4HANA per i materiali diretti: potrebbero servirLe entrambi.

Integrazione del catalogo PunchOut cXML: cosa cambia nel tuo e-commerce

Qualunque sia il protocollo, un e-commerce necessita degli stessi cinque elementi per funzionare come catalogo PunchOut:

  • Catalogo e prezzi specifici per ogni cliente
  • Un codice di classificazione su ogni prodotto (UNSPSC o ECLASS)
  • Apertura nel frame del cliente: header dei frame, cookie e impostazioni di sicurezza
  • Unità di misura associate ai codici del cliente
  • Importazione degli ordini con cXML OrderRequest (piano Premium)

Supportare entrambi su un unico e-commerce

Molti fornitori si trovano ad avere clienti su entrambi i protocolli. Sviluppare due integrazioni raddoppia il lavoro; un gateway che li supporta entrambi consente a un solo e-commerce di servire tutti i clienti. Con PunchOut Rocket configuri ogni cliente una sola volta nella dashboard, scegli cXML o OCI e il plugin sul tuo e-commerce resta lo stesso.

PunchOut sull’e-commerce che hai già

PunchOut Rocket collega WooCommerce, Magento, PrestaShop e nopCommerce a SAP Ariba, Coupa e SAP tramite cXML o OCI. Da 163 €/mese per sito, prova gratuita di 30 giorni.

FAQ

Domande

Qual è la differenza tra cXML e OCI?

cXML invia documenti XML tramite HTTPS e copre anche l’ordine d’acquisto (OrderRequest). OCI è il protocollo SAP: il carrello torna come campi di un modulo HTML inviati a un HOOK_URL e l’ordine raggiunge il fornitore tramite un canale separato.

Quale protocollo usa SAP Ariba?

cXML. SAP S/4HANA, SRM ed ECC usano OCI; Coupa, Jaggaer, Ivalua e Oracle usano cXML.

Un solo e-commerce può supportare sia cXML sia OCI?

Sì. Con PunchOut Rocket lo stesso e-commerce WooCommerce, Magento, PrestaShop o nopCommerce risponde a sessioni cXML e OCI; il gateway gestisce il protocollo per ciascun cliente.

Cos’è un’integrazione del catalogo PunchOut cXML?

La connessione che consente al cliente di aprire il tuo e-commerce dal proprio sistema di acquisto tramite cXML, riempire un carrello e restituirlo con un PunchOutOrderMessage. L’ordine approvato arriva poi come OrderRequest.

OCI è più vecchio di cXML?

Entrambi risalgono alla fine degli anni Novanta ed entrambi sono ancora attuali. È il sistema del cliente a determinare quale serve, non il fornitore.

Continua a leggere

Guide correlate

Prova gratuita di 30 giorni · senza carta di credito

Il tuo cliente aspetta. È ora di partire.

Installa il plugin oggi ed esegui la prima sessione di test questo pomeriggio. Se la scadenza è vicina, diccelo: gestiremo la tua richiesta con priorità.