Saltar al contenido principal
← Volver a CutOptim ConfiguratorPlataforma propia

Integración de pedidos de corte a medida en tu propia tienda o ERP

El CutOptim Configurator se conecta a una tienda o a un ERP propios con dos comprobaciones en tu servidor: el presupuesto firmado y el webhook firmado. Ambos son HMAC-SHA256 sencillo, verificable en cualquier lenguaje, y unos ejemplos de referencia en Node y PHP muestran cómo.

Respuesta rápida

Para recibir los pedidos del configurador en una plataforma propia, tu servidor hace dos cosas. Verifica el presupuesto firmado antes de que una línea entre en el carrito, y verifica el webhook firmado antes de guardar un pedido. CutOptim no cobra pagos ni aloja ninguna tienda: el carrito, el pago y el registro del pedido se quedan contigo.

Dos comprobaciones, ambas en tu servidor

Una plataforma propia no tiene un plug-in en el que apoyarse, así que la confianza descansa en dos firmas. El navegador puede mostrar un precio, pero solo tu servidor decide si se lo cree.

MomentoQué llegaQué comprueba tu servidor
El cliente pide en la páginaEl evento cutoptim:order con el pedido y su presupuesto firmadoEl token del presupuesto, con tu clave secreta en /cfg/v1/quote/verify
Se realiza el pedidoUn webhook firmado a la dirección que registrasteLa firma, la ventana de cinco minutos y el id del evento
Un reintento o un reenvíoEl mismo evento otra vezNada: el id ya está guardado

Comprueba el presupuesto antes del carrito

El token del presupuesto es la promesa de precio. Tu servidor pregunta a CutOptim si es auténtico, vigente y no usado, y compara lo que declara con la línea del carrito.

  1. Recibe el pedido

    La página entrega a tu script el evento cutoptim:order con el pedido y su token de presupuesto.

  2. Pregunta a CutOptim

    Tu servidor envía el token a /cfg/v1/quote/verify con tu clave secreta. La respuesta indica si es válido, si un pedido ya lo ha usado y qué declaraciones lleva.

  3. Compara las declaraciones

    El inquilino, la moneda, la caducidad y el hash de las líneas con precio deben coincidir con la línea que vas a añadir. Todo lo demás se rechaza.

  4. Añade o rechaza

    Solo un token que pasa llega al carrito. Un precio cambiado en el navegador falla aquí.

La clave de firma nunca se entrega a las tiendas. Comprobar en local la forma y la caducidad de un token ahorra una petición, pero solo /cfg/v1/quote/verify puede confirmar la firma.

Recibe el pedido por webhook

Cuando se realiza un pedido, CutOptim lo envía a la dirección que registraste, firmado para que puedas saber que viene de nosotros.

  • — La cabecera CutOptim-Signature lleva una marca de tiempo t y una firma v1: un HMAC-SHA256 de la marca de tiempo, un punto y el cuerpo en bruto.
  • — Verifica los bytes en bruto exactamente como llegan; un cuerpo que se ha analizado y vuelto a escribir ya no coincide.
  • — Rechaza una marca de tiempo con más de cinco minutos de diferencia y compara las firmas en tiempo constante.
  • — Guarda el id del evento y responde con éxito a un id ya visto: un reintento lo repite.

Código de referencia en Node y PHP

Dos ejemplos pequeños hacen justo esto, sin framework ni dependencias: un módulo de Node y un único archivo PHP. Copia el que te encaje, cambia el almacén en memoria por una tabla con clave única sobre el id del evento.

Código de referencia: verificar un webhook (Node)
import { createWebhookReceiver } from './cutoptim-verify.mjs';

const receive = createWebhookReceiver({
  secrets: [process.env.WEBHOOK_SECRET],          // whsec_... from the admin route, never in the repository
  async onEvent(event) { /* store event.data.order, keyed by event.id */ },
});

// in your HTTP handler - the RAW body, not parsed JSON:
const { status } = await receive({ rawBody, headers: req.headers });
res.writeHead(status).end();

Qué se queda contigo

El configurador calcula el precio y planifica el corte; tu plataforma conserva todo lo que viene después.

  • — El carrito, la caja y el pago: CutOptim no cobra pagos.
  • — El registro del pedido y su tramitación, en tu base de datos o ERP.
  • — Tus clientes y las páginas de tu tienda: no hay tienda alojada.

Empieza un sandbox gratuito en la consola para obtener tus claves y tu secreto de webhook. Ejemplos de referencia descargables aquí.

Dónde encaja

Cualquier sistema que pueda recibir una petición HTTPS y calcular un HMAC puede aceptar estos pedidos: una tienda propia, un frontal headless, una herramienta de presupuestos o un ERP. Si solo necesitas el motor de corte, sin pantalla de pedido, la Engine API se encarga.

Preguntas frecuentes

¿Necesito un plug-in para conectar mi propia plataforma?
No. Una plataforma propia necesita dos comprobaciones en su servidor, el presupuesto firmado y el webhook firmado, y los ejemplos en Node y PHP muestran ambas.
¿Cómo sé que un precio no se ha cambiado en el navegador?
Tu servidor envía el token del presupuesto a /cfg/v1/quote/verify con tu clave secreta y compara sus declaraciones con la línea del carrito. Un token alterado o caducado se notifica como no válido. Uno que un pedido ya usó sigue siendo válido pero vuelve con redeemed: true: comprueba ambos campos y lleva tu propio registro.
¿Qué pasa si mi endpoint está caído cuando llega un pedido?
CutOptim reintenta la entrega con un calendario creciente, hasta seis intentos a lo largo de varias horas. Cada reintento lleva el mismo id de evento, así que un receptor que guarde los ids procesa el pedido una sola vez.
¿CutOptim cobra el pago o aloja mi tienda?
No. El configurador calcula el precio y planifica el corte, y entrega el pedido firmado a tu plataforma. El carrito, el pago y la tramitación se quedan en tu propio sistema.
¿Qué lenguajes de programación cubren los ejemplos?
Node y PHP. La firma es HMAC-SHA256 sencillo sobre el cuerpo en bruto, así que las mismas líneas sirven en Python, Java, C# o cualquier otro lenguaje con una biblioteca criptográfica.

Calculadoras, guías y sectores relacionados

Más sobre el configurador

¿Solo necesitas el motor de corte? Mira la Engine API

Información legalCondiciones del configurador (EN) ·Contrato de encargo de tratamiento (EN) ·Aviso de privacidad para compradores ·Licencias de terceros (EN)