Magento 2 B2B

cXML PunchOut en Magento 2: del acceso a la factura

SoftwareSilo · 30 de agosto de 2026 · 4 min
cXML PunchOut en Magento 2: del acceso a la factura

cXML suele asociarse únicamente con la entrada al catálogo de un proveedor. Sin embargo, el estándar también puede transportar los documentos posteriores. Un proceso completo en Magento 2 puede continuar desde el acceso y la devolución del carrito hasta el pedido aprobado, la confirmación, el aviso de expedición y la factura.

En resumen: PunchOutSetupRequest, PunchOutSetupResponse y PunchOutOrderMessage forman la fase interactiva. Un OrderRequest posterior puede entregar el pedido aprobado a Magento. Confirmation, ShipNotice e InvoiceDetail completan el ciclo. Cada comprador define qué mensajes necesita.

1. Configuración y acceso PunchOut

La plataforma envía un PunchOutSetupRequest con identidades, credenciales del emisor, operación, destino de retorno del navegador y, a menudo, Extrinsics adicionales.

Magento autentica el emisor, resuelve el perfil y devuelve un PunchOutSetupResponse. Su URL de inicio contiene una sesión de corta duración, por lo que el comprador no necesita otra contraseña.

La solicitud debe abrir la vista de tienda, cliente, moneda, catálogo y precios correctos. El secreto compartido y los dominios de identidad protegen la conexión, pero no sustituyen esa asignación comercial.

2. Catálogo y devolución

El comprador utiliza la búsqueda, opciones de producto y carrito de Magento. Al volver, Magento crea un PunchOutOrderMessage y lo envía al destino de formulario indicado por compras.

Las líneas suelen incluir referencia del proveedor, cantidad, unidad, precio, moneda, descripción y clasificación. Los Extrinsics transportan valores propios del comprador. El resultado es una solicitud, todavía no un pedido Magento.

3. Aprobación y OrderRequest

Después de aprobar, la plataforma puede enviar un OrderRequest autenticado directamente a Magento. Esta llamada entre servidores no depende de que la sesión del navegador siga activa.

Magento valida comprador, moneda, productos, cantidades, direcciones, envío, precios y referencia externa. Una línea sin cambios puede compararse con la instantánea del carrito devuelto. Las cantidades modificadas o productos nuevos deben pasar por los precios actuales de Magento. Las diferencias no deberían aceptarse en silencio.

El pedido Magento solo se crea si el modo configurado lo permite y la validación es correcta. Otra opción es confirmar la recepción y mantenerlo para revisión manual.

4. Confirmación, envío y factura

Los documentos posteriores se envían a endpoints separados:

Evento Mensaje cXML Activador habitual en Magento
Confirmación ConfirmationRequest Pedido aceptado o cambio de estado
Aviso de expedición ShipNoticeRequest Envío y seguimiento creados
Factura InvoiceDetailRequest Factura contabilizada en Magento

Estos destinos no son la URL de retorno del navegador. Los mensajes deben guardarse en una cola duradera, entregarse con trazabilidad y repetirse solo bajo reglas controladas.

Entrega y reintentos

Un error HTTP inequívoco puede reintentarse según la política acordada. Si la conexión se corta después del envío, el resultado es desconocido y el comprador quizá ya procesó el documento. Un reintento automático podría duplicarlo, por lo que hace falta revisión manual.

Las trazas ayudan a diagnosticar, pero deben ocultar secretos, tokens y valores confidenciales.

Plataformas y límites

SAP Ariba, Coupa y Oracle Procurement emplean cXML de formas distintas. Jaggaer, Tungsten y Basware también pueden aparecer en proyectos relacionados. Eso no convierte todos sus entornos en plug-and-play. Identidades, versiones DTD, campos, Extrinsics y documentos deben probarse con el tenant real.

Casos de aceptación

  • solicitudes de acceso válidas e inválidas
  • precios contractuales y opciones correctos
  • devolución con una y varias líneas
  • pedido aprobado sin cambios
  • cantidad modificada, línea nueva o eliminada
  • precio distinto e instantánea caducada
  • envío parcial y varias facturas
  • fallo definitivo y estado de entrega desconocido
  • referencia externa duplicada y mensaje repetido

Preguntas frecuentes

¿Todos los proyectos deben usar todos los documentos?

No. Muchos empiezan con PunchOut y carrito. Pedido y documentos posteriores se activan solo cuando el comprador los exige y ambas partes los han aceptado.

¿PunchOutOrderMessage es el pedido?

No. Describe el carrito devuelto. El pedido aprobado llega después como OrderRequest.

¿Pueden enviarse documentos cuando la sesión ha caducado?

Sí. Utilizan datos duraderos del comprador y del pedido, no el token temporal del navegador.

Seguir leyendo

Fuentes

Artículo anterior Las mejores extensiones de reglas de pago para Magento 2 en 2026
Siguiente artículo SAP OCI PunchOut con Magento 2: guía para SRM y S/4HANA