MDH GROUP · BLOG

Pago inmediato con QR en el POS: Webhooks y flujos API para comerciantes

El hostelero tiene un código QR impreso en cada mesa. Los clientes deben pagar rápidamente con el smartphone, pero las opciones de pago cambian con frecuencia (nuevos PSP, códigos promocionales, normas de propina). Un código QR estático que dirige al proveedor es rígido y poco flexible.

← Todos los artículos

Pago inmediato con QR en el POS: Webhooks y flujos API para comerciantes

Situación inicial: cola en la caja, código QR impreso, formas de pago cambiantes

El hostelero tiene en cada mesa un código QR impreso. Los clientes deben pagar rápidamente con el teléfono inteligente, pero las opciones de pago cambian regularmente (nuevo PSP, códigos promocionales, reglas de propina). Un código QR estático que conduce directamente a la página de pago de un proveedor es rígido y poco flexible. Lo ideal es un flujo de QR dinámico que, al escanearse, inicie un pago, informe al POS y marque automáticamente el pedido como pagado.

Por qué los códigos QR dinámicos con Webhooks y API tienen sentido aquí

Los códigos QR dinámicos separan el soporte impreso del objetivo: el código impreso se mantiene, pero el destino (página de pago, flujo de checkout, fallback) se puede cambiar en cualquier momento. Combinado con webhooks y llamadas API, esto permite automatizar procesos: Escaneo → Webhook/API → creación/confirmación de un pedido → redirección a la página de pago o intento de pago directo. Centralmente gestionado en un sistema como Linkentra, el destino se puede ajustar rápidamente, mantener medios/branding y consultar estadísticas de escaneo.

3 variantes de flujo practicables

Variante A — Redirección por orquestador (recomendado para integración de pagos flexible)

Arquitectura: QR → Linkentra (Short/Target) → su orquestador (endpoint público) → POS/PSP → redirección a la página de pago.

  • Al escanear, Linkentra redirige a su orquestador (o le envía una notificación webhook).
  • El orquestador crea en su POS una posición de pedido vía API, genera un objeto de pago en el PSP y devuelve una URL de pago.
  • El orquestador redirige al cliente a la página de pago; tras la recepción del pago, el PSP informa a su POS mediante callback y su sistema marca el pedido como pagado.

Variante B — Webhooks de Linkentra como disparador (intervención mínima)

Arquitectura: QR (Linkentra) → redirección directa a página de pago estática; Linkentra envía simultáneamente un webhook al POS/orquestador.

  • Linkentra gestiona el QR y redirige a la página de pago (p. ej., checkout del PSP).
  • Al mismo tiempo se envía un webhook a su URL de backend, que crea el pedido en el POS y queda a la espera del pago.
  • Tras el pago exitoso, su sistema concilia y completa el pedido.

Variante C — Escaneo → Pago directo (máxima automatización, dependiente del PSP)

Arquitectura: QR → Orquestador → llamada API al PSP para pago inmediato (p. ej., wallet basada en QR) → cierre de pedido.

Esta variante requiere que su PSP ofrezca una API para pagos inmediatos (sin una página intermedia). Ventaja: el cliente necesita hacer menos clics; desventaja: mayores exigencias en seguridad, procesos de reembolso y esfuerzo de integración.

Ejemplos concretos de payloads de Webhook

Estas cargas útiles son ejemplos que ayudan a su POS/orquestador a crear pedidos y vincular pagos.

Evento de escaneo (enviado al escanear):

{
  "event": "scan",
  "qr_id": "qr_12345",
  "scan_id": "scan_67890",
  "timestamp": "2026-10-28T12:34:56Z",
  "client_ip": "203.0.113.42",
  "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)",
  "location": {"lat": 48.137154, "lng": 11.576124},
  "metadata": {"table": "T12", "staff_id": "u42"}
}

Callback de pedido creado (su sistema a Linkentra/ lógica):

{
  "event": "order_created",
  "order_id": "ord_20261028_0001",
  "qr_id": "qr_12345",
  "amount": 18.90,
  "currency": "EUR",
  "payment_url": "https://pay.provider/checkout/abcde",
  "expires_at": "2026-10-28T12:50:00Z"
}

En el escenario simple, Linkentra redirige directamente a la payment_url después del escaneo o su orquestador lo hace. En configuraciones más complejas, su backend usa la carga útil del scan para inicializar pedido y pago en paralelo.

Endurecimiento de seguridad — Reglas básicas para Webhooks y API

  • Forzar TLS: Todos los endpoints deben usar HTTPS con versiones de TLS actualizadas.
  • Autenticación: Use un secreto compartido para los Webhooks y verifique firmas (por ejemplo, HMAC-SHA256 sobre la carga útil con un encabezado X-Signature).
  • Filtrado de IP y limitación de tasa: Permita en lista las franjas de IP conocidas del remitente y limite las solicitudes entrantes para prevenir abusos.
  • Protección contra reproducción: Acepte eventos de webhook solo con IDs únicos y descarte duplicados o timestamps demasiado antiguos.
  • Principio de mínimos privilegios: Conceda a las API-Keys y cuentas de servicio solo los permisos estrictamente necesarios.
  • Registros de auditoría y cifrado: Almacene datos sensibles cifrados; registre accesos y cambios de forma completa.

Ejemplo: Verificación de una firma HMAC (conceptual)

signature = header['X-Signature']
computed = HMAC_SHA256(shared_secret, request.body)
if not constant_time_compare(signature, computed): reject 401

Monitorización y operación: Cómo mantener el sistema fiable

  • Health-Checks: Proporcionar endpoints para Liveness/Readiness y permitir que un balanceador de carga los verifique.
  • Reintentos de Webhook: Implementar una política de reintentos con backoff y una cola de mensajes muertos (Dead-Letter-Queue) para eventos no procesables.
  • Paneles y alertas: Visualizar métricas como latencia de webhooks, tasa de errores, tasa de éxito de redirecciones de pago y volumen de escaneos en paneles (p. ej. Grafana); configurar alertas por Slack/Email/SMS.
  • Entorno de pruebas: Usar códigos QR de staging y una URL de webhook de prueba para verificar integraciones sin operar en vivo.
  • Protección contra tasas y picos: Prever mecanismos de protección frente a picos estacionales de carga (eventos, horas de comida).

Lista de verificación práctica para despliegue (resumen)

  • Crear diseño de QR y branding en Linkentra (exportar SVG/PNG para impresión).
  • Proveer endpoint del orquestador (TLS, autenticación, registro de logs).
  • Integración con la API del POS: definir endpoints para Order-Create, Order-Update, Payment-Confirm.
  • Implementar manejo de webhooks: verificación de firma, idempotencia, DLQ.
  • Configurar monitorización: Health-Checks, paneles, alertas.
  • Probar en staging: recorrer el bucle completo de pago, simular casos de error.

Breve ejemplo práctico

Un café utiliza Linkentra para gestionar los códigos QR en las mesas. Al escanear, Linkentra redirige bien directamente a la página de checkout de la PSP (Variante B), bien a un orquestador que coordina el pedido y el pago (Variante A). La caja del POS recibe inmediatamente por webhook un ID de pedido con metadatos de mesa y escaneo; tras la recepción del pago, la caja marca automáticamente el pedido como pagado, y la emisión de factura y ticket se realiza sin intervención manual. Los operadores se benefician de un control centralizado de los destinos de los QR, la capacidad de adaptar los objetivos de pago y las estadísticas de escaneo para análisis.

Conclusión y recomendaciones

Con códigos QR dinámicos, webhooks y flujos API se pueden acelerar considerablemente los pagos en el punto de venta y automatizar tareas administrativas. Es crucial contar con una arquitectura de orquestador clara, medidas de seguridad limpias y una monitorización robusta. Linkentra puede encargarse de la gestión centralizada de los códigos QR —tanto en entornos cloud como en instalaciones autohospedadas— y así permitir cambios en las URLs de destino, el branding y las opciones de fallback sin reimprimir.

Comenzar ahora: Descubra Linkentra y compruebe qué variante (Orchestrator-Redirect vs. Webhook-Trigger) se adapta mejor a la arquitectura de su caja y pagos. Linkentra entdecken

Siguiente paso

Probar Linkentra por usted mismo

Códigos QR dinámicos con control sobre el hosting y los datos: modificar contenidos posteriormente, ajustar la marca, gestionar medios de forma central y analizar escaneos —opción en infraestructura propia (Self‑Hosted) o inmediatamente en la nube de Linkentra. Funciones según la edición para equipos, API y marca blanca.

Descubre Linkentra