Saltar al contenido principal

Descripción general

La Entrega Dinámica le permite manejar programáticamente el cumplimiento de productos implementando un endpoint de webhook que recibe información del pedido y devuelve el contenido de entrega. Ideal para entregar productos digitales, claves de licencia, códigos de juegos o integrar con sistemas de cumplimiento externos. Cuando un cliente compra un producto con entrega dinámica habilitada, Komerza envía inmediatamente una solicitud POST a su URL de webhook configurada con los detalles del pedido, y su endpoint responde con el contenido para entregar al cliente.
La Entrega Dinámica se configura por variante de producto en la configuración de su producto bajo métodos de entrega.

Casos de uso

Productos digitales

Entregue claves de licencia, enlaces de descarga o códigos de acceso en tiempo real

Integración de terceros

Conecte con sistemas de cumplimiento externos o gestión de inventario

Lógica personalizada

Implemente reglas de entrega complejas basadas en datos del cliente, producto o pedido

Códigos de juegos

Entregue automáticamente claves de juego, códigos de activación o artículos en el juego

Cómo funciona

  1. El cliente compra - Un cliente completa el pago de un producto con entrega dinámica habilitada
  2. Webhook activado - Komerza envía una solicitud POST a su URL de webhook configurada
  3. Su respuesta - Su endpoint procesa la solicitud y devuelve el contenido de entrega
  4. El cliente recibe - El contenido devuelto se entrega al cliente como texto plano

Configuración

Configurar la Entrega Dinámica

  1. Navegue a su producto en el panel de Komerza
  2. Seleccione la variante que desea configurar
  3. Elija Entrega Dinámica como método de entrega
  4. Ingrese la URL de su endpoint de webhook
  5. Genere y guarde su secreto de webhook
Mantenga su secreto de webhook seguro. Se usa para verificar que las solicitudes son genuinamente de Komerza.

Solicitud de webhook

Encabezados de solicitud

Content-Type: application/json
Accept: application/json
User-Agent: Komerza/1.0
X-Signature: <HMAC-SHA256-SIGNATURE>

Verificación de firma

Todas las solicitudes de webhook incluyen un encabezado X-Signature con una firma HMAC SHA256. Debe verificar esta firma para asegurarse de que la solicitud es de Komerza. Cálculo de firma:
HMAC-SHA256(secret, request_body) -> codificado en HEX
const crypto = require("crypto");

function verifySignature(secret, body, signature) {
  const calculatedSignature = crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex")
    .toUpperCase();

  return calculatedSignature === signature.toUpperCase();
}

app.use("/webhook", express.raw({ type: "application/json" }));

app.post("/webhook", (req, res) => {
  const signature = req.headers["x-signature"];
  const body = req.body.toString("utf8");

  if (!verifySignature(process.env.WEBHOOK_SECRET, body, signature)) {
    return res.status(401).send("Firma inválida");
  }

  // Procesar webhook...
});

Estructura del payload

El webhook recibe un payload JSON con la siguiente estructura:
{
  "storeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "customerId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "lineItemId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "productId": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
  "variantId": "8f7e6d5c-4b3a-2918-7654-3210fedcba98",
  "quantity": 1,
  "order": {
    "id": "5f3a8b2c-1d4e-5f6a-7b8c-9d0e1f2a3b4c",
    "totalPrice": 29.99,
    "currency": "USD",
    "customer": {
      "email": "cliente@ejemplo.com",
      "name": "Juan García"
    }
  }
}

Respuesta del webhook

Formato de respuesta

Su endpoint debe responder con texto plano (text/plain) que contenga el contenido de entrega. Esto se mostrará al cliente exactamente como se devuelva.
HTTP/1.1 200 OK
Content-Type: text/plain

CLAVE-LICENCIA-ABC123-XYZ789-PREMIUM
Descarga: https://ejemplo.com/download/abc123
Válido hasta: 2026-11-27