Skip to Content
Enlaces de pagoResumen

Enlaces de pago — Resumen

Un Enlace de pago es una URL compartible que deja al comprador en un checkout alojado que ya has configurado. Sin SDK, sin integración de servidor: emítelo en el dashboard, compártelo, y el mismo webhook payment.settled se dispara cuando los fondos se confirman on-chain.

Bajo el capó, un Enlace de pago es una CheckoutSession: “Enlace de pago” es solo el nombre del lado dashboard para una sesión que no fue creada por un flujo de SDK iniciado por el comprador. Mismo contrato de webhook, misma liquidación on-chain, mismas tarifas.

Usos comunes:

  • Facturar a un cliente puntual sin escribir código
  • Páginas de venta donde el equipo de dev no va a cablear un carrito personalizado este trimestre
  • Seguimientos B2B: pega el enlace en un email y dalo por hecho
  • Páginas de propina de importe fijo estilo “Cómprame un café”

Crea uno

Hoy esto es solo-dashboard:

  1. Inicia sesión en el dashboard del comerciante 
  2. Pagos → Enlaces de pago → + Nuevo enlace
  3. Elige una de dos rutas:
    • Nueva orden: introduce line items, moneda, información del cliente y metadatos opcionales. El dashboard crea la Order y el Enlace de pago en una sola llamada.
    • Orden existente: elige una orden PENDING (p. ej. el comprador abandonó el enlace anterior). Reemite un enlace fresco respaldado por la misma orden, así que el historial de orden permanece intacto.
  4. Guarda → el dashboard muestra la URL https://checkout.infraio.xyz/cst_… con un botón de copiar y descarga de código QR. Los enlaces de modo de prueba usan checkout-dev.infraio.xyz así que el entorno está codificado en el hostname.

Cada Enlace de pago es de un solo uso hoy: una vez que un comprador paga, la sesión es COMPLETED. Si una sesión expira antes del pago (TTL por defecto 30 minutos), abre la página de detalle de la orden y haz clic en Re-crear enlace para emitir uno fresco contra la misma orden.

Lo que ve el comprador

  1. Aterrizan en checkout.infraio.xyz/<session_key>: la misma UI de checkout alojado que obtendrías de una sesión emitida por SDK.
  2. Pasan por el flujo estándar de elegir-activo → enviar-fondos → esperar-confirmación descrito en Checkout — Resumen.
  3. payment.settled se dispara en tu webhook con la orden, intent, recibo, tx hash on-chain y conteo de confirmaciones: el mismo payload que cualquier otro pago liquidado. Consulta Webhooks para el esquema.

Lo que te da el dashboard

La superficie de Enlaces de pago hoy se envía con:

  • Vista de lista: cada enlace que has emitido, paginado por cursor, con estado, importe, número de orden padre, cliente, expiración y apertura de un clic a la URL del comprador.
  • Filtros: estado (ACTIVE / COMPLETED / EXPIRED / CANCELED), rango de fechas y búsqueda de texto completo a través del número de orden, nombre del cliente, email o ref externa.
  • Exportación CSV: un clic, respeta los filtros actuales.
  • Tira KPI: conteos por estado, con scope al entorno actual (live vs test) vía la cabecera X-Environment para que los números siempre coincidan con lo que muestra la tabla.
  • Página de detalle: resumen de orden, historial de sesiones (cada intento para esta orden), historial on-chain con enlaces a block explorer y una acción Re-crear enlace para sesiones que expiraron antes del pago.

Limitaciones hoy

  • Sin API programática: los enlaces deben crearse en el dashboard. El SDK puede crear sesiones equivalentes de un solo uso vía POST /b2b/v1/checkout-sessions/quick (consulta Referencia de la API), pero la UX de “URL compartible de larga vida” es solo-dashboard por ahora.
  • Sin autenticación por comprador: cualquiera con la URL puede pagar. El modelo de un solo uso mitiga esto parcialmente; el vínculo total a la identidad del comprador está en el roadmap abajo.
  • El branding es global: el enlace usa tu logo a nivel comerciante, color de marca y radio de borde de Settings → Branding. Los overrides de branding por enlace aún no se exponen en la UI del dashboard.

Roadmap

Elementos que sabemos que queremos, priorizados de mayor a menor:

  • Creación programática: un endpoint POST /b2b/v1/payment-links que refleje el diálogo de dos pestañas del dashboard y devuelva la misma checkout_url. Encaja naturalmente con listado + revocación.
  • Expiración basada en tiempo: el enlace permanece válido hasta una fecha específica, no solo hasta que el TTL de la sesión transcurra. Necesario para flujos de facturación donde “vence en 14 días” es la fecha límite natural.
  • Enlaces reutilizables: páginas multi-comprador estilo Stripe (donación, propinas, pestañas recurrentes). Hoy cada enlace es de un solo uso.
  • Identidad por comprador: bloquea un enlace a un email o wallet específico para que no pueda reenviarse.
  • Generación de QR del lado API: el dashboard renderiza códigos QR del lado cliente hoy; exponer esto en la API para impresión de etiquetas y recibos incrustados está en la lista.

Ver también