APPEL D’OFFRESUn appel d’offres remporté exige PunchOut ?Télécharger le Tender Kit

Guide · Protocoles

cXML ou OCI : comment fonctionnent les deux protocoles PunchOut

En bref

cXML et OCI sont les deux protocoles derrière chaque catalogue PunchOut. cXML (utilisé par SAP Ariba, Coupa, Jaggaer, Ivalua, Oracle) échange des documents XML via HTTPS et transporte aussi le bon de commande. OCI (utilisé par SAP S/4HANA, SRM et ECC) retourne le panier sous forme de champs de formulaire HTML envoyés au HOOK_URL du client. Le système de votre client détermine celui dont vous avez besoin.

cXML et OCI côte à côte

Comparatif cXML et OCI
cXMLOCI
Nom completCommerce eXtensible Markup LanguageOpen Catalog Interface
Maintenu parcXML.org (à l’origine Ariba)SAP
Utilisé parSAP Ariba, Coupa, Jaggaer, Ivalua, Oracle, Workday…SAP S/4HANA, SAP SRM, SAP ECC, certaines places de marché
FormatDocuments XML via HTTPSChamps de formulaire HTML (NEW_ITEM-*)
Démarrage de sessionPunchOutSetupRequest → PunchOutSetupResponseAppel HTTP avec paramètres de connexion et HOOK_URL
Retour du panierPunchOutOrderMessagePOST de formulaire vers le HOOK_URL
Bon de commandeOrderRequest (même protocole)Un canal séparé convenu avec le client, par exemple l’email ou son portail fournisseurs
ClassificationClassification domain="UNSPSC"NEW_ITEM-MATGROUP
AuthentificationIdentités + shared secretUtilisateur et mot de passe ou jeton dans l’appel

PunchOut cXML : fonctionnement d’une session

En cXML, chaque étape est un document XML envoyé via HTTPS. Le système du client et le vôtre s’identifient mutuellement avec des identifiants dans l’en-tête (Network ID pour SAP Ariba) et un shared secret.

  1. Demande de configuration

    Le client clique sur votre catalogue ; son système envoie un PunchOutSetupRequest avec des identifiants, un BuyerCookie et une URL de retour.

  2. Réponse de configuration

    Votre système répond avec une URL StartPage ; le navigateur du client ouvre votre boutique.

  3. Achat

    Le client voit les prix contractuels et remplit le panier.

  4. Retour du panier

    Un PunchOutOrderMessage renvoie le panier à l’URL de retour pour approbation.

  5. Commande

    Après approbation, le bon de commande arrive sous forme d’OrderRequest.

Exemple · PunchOutSetupRequest (abrégé)

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

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

Exemple · 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 : fonctionnement d’une session

OCI est plus simple et de conception plus ancienne : il n’utilise pas XML. SAP ouvre l’URL de votre catalogue avec les paramètres de connexion et un HOOK_URL ; à la fin, votre boutique envoie le panier à cette adresse sous forme de champs de formulaire HTML.

  1. Appel

    SAP ouvre l’URL de votre catalogue avec les paramètres de connexion et le HOOK_URL.

  2. Achat

    Le client achète à ses prix contractuels.

  3. Retour du panier

    Votre boutique envoie le panier sous forme de champs NEW_ITEM-* au HOOK_URL.

  4. Commande

    OCI ne transporte pas le bon de commande : il vous parvient par un canal convenu avec le client, par exemple par email ou via son portail fournisseurs.

Exemple · Appel OCI avec 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

Exemple · Retour du panier OCI vers le 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>

Les noms de champs sont indexés par ligne ([1], [2]…). La documentation du client indique les champs obligatoires, par exemple une référence article fournisseur, un délai de livraison ou un texte long.

Lequel votre client utilise-t-il ?

Protocole par système du client
Système du clientProtocoleGuide
SAP AribacXMLSAP Ariba PunchOut
CoupacXMLCoupa PunchOut
SAP S/4HANA, SRM, ECCOCISAP OCI PunchOut
JaggaercXMLJaggaer PunchOut
Ivalua, Oracle, WorkdaycXMLTous les systèmes
Meplato, SimenoOCI (et cXML)Tous les systèmes

En cas de doute, la documentation fournisseur du client le précise dans les premières pages. Certains clients SAP utilisent SAP Ariba pour les dépenses indirectes et des catalogues OCI dans S/4HANA pour les matières directes : vous pouvez avoir besoin des deux.

Intégration d’un catalogue PunchOut cXML : ce qui change dans votre boutique

Quel que soit le protocole, une boutique a besoin des cinq mêmes éléments pour fonctionner comme catalogue PunchOut :

  • Un catalogue et des prix propres à chaque client
  • Un code de classification sur chaque produit (UNSPSC ou ECLASS)
  • L’ouverture dans la frame du client : en-têtes, cookies et paramètres de sécurité
  • Des unités de mesure associées aux codes du client
  • Import des commandes avec cXML OrderRequest (forfait Premium)

Prendre en charge les deux sur une boutique

De nombreux fournisseurs ont finalement des clients utilisant les deux protocoles. Développer deux intégrations double le travail ; une passerelle qui gère les deux permet à une boutique de servir chaque client. Avec PunchOut Rocket, vous configurez chaque client une seule fois dans le tableau de bord, choisissez cXML ou OCI et le plugin de votre boutique reste le même.

PunchOut sur votre boutique existante

PunchOut Rocket connecte WooCommerce, Magento, PrestaShop et nopCommerce à SAP Ariba, Coupa et SAP via cXML ou OCI. À partir de 163 €/mois par site, essai gratuit de 30 jours.

FAQ

Questions

Quelle est la différence entre cXML et OCI ?

cXML envoie des documents XML via HTTPS et couvre aussi le bon de commande (OrderRequest). OCI est le protocole SAP : le panier retourne sous forme de champs de formulaire HTML envoyés à un HOOK_URL, et la commande parvient au fournisseur par un canal distinct.

Quel protocole SAP Ariba utilise-t-il ?

cXML. SAP S/4HANA, SRM et ECC utilisent OCI ; Coupa, Jaggaer, Ivalua et Oracle utilisent cXML.

Une boutique peut-elle prendre en charge cXML et OCI ?

Oui. Avec PunchOut Rocket, la même boutique WooCommerce, Magento, PrestaShop ou nopCommerce répond aux sessions cXML et OCI ; la passerelle gère le protocole pour chaque client.

Qu’est-ce qu’une intégration de catalogue PunchOut cXML ?

La connexion qui permet au client d’ouvrir votre boutique depuis son système d’achat via cXML, de remplir un panier et de le retourner avec un PunchOutOrderMessage. La commande approuvée arrive ensuite sous forme d’OrderRequest.

OCI est-il plus ancien que cXML ?

Les deux datent de la fin des années 1990 et restent utilisés aujourd’hui. Le système du client détermine celui dont vous avez besoin, pas le fournisseur.

Poursuivre la lecture

Guides associés

Essai gratuit de 30 jours · sans carte bancaire

Votre client attend. Passons à l’action.

Installez le plugin aujourd’hui et lancez votre première session de test cet après-midi. Si votre échéance est proche, dites-le-nous : nous traiterons votre demande en priorité.