Ir al artículo
Aniq-UI

TicketoryEntradas, pases y correos

Entradas, pases y correos

Lo que recibe un comprador: un pase por entrada con un código QR firmado, las entradas en PDF y un archivo de calendario, los correos que envía la API y adónde van sin un servicio de correo, y cómo reemite o anula una entrada el personal.

Para el paquete Full Stack

Qué es una entrada

Una entrada es una admisión: un asiento en un evento con asientos reservados, o una plaza en un evento de entrada general. Su referencia es la del pedido más un número (TKT-1042-1), y lleva el asiento, el nombre del titular tomado del pedido, el tipo de entrada y lo que se pagó por ella.

EstadoSignificado
ValidAbre la puerta, una vez.
Refund pendingSuspendida en cuanto se pide un reembolso, mientras espera al proveedor, y también después de un reembolso fallido hasta que se reintenta o se restaura. La puerta la rechaza.
VoidReembolsada o anulada. La puerta la rechaza, y su pase no muestra código QR.

Pases, entradas en PDF y archivos de calendario

  • La confirmación del pedido y My tickets del asistente muestran un pase por entrada, con su código QR, el asiento, el titular y el tipo de entrada, en inglés o árabe.
  • Download tickets abre un PDF con todas las entradas válidas del pedido, una por página A4, dibujadas con el color del evento y su código QR; un pase individual descarga su propio PDF. El texto del PDF es solo latino, así que la versión en árabe de una entrada es el pase web.
  • Add to calendar descarga un archivo de calendario del evento, con el recinto y un enlace a la página del evento.
  • Los enlaces de descarga están firmados y funcionan 30 minutos; la página crea otros nuevos cada vez que se abre. Se construyen a partir del PUBLIC_API_URL de la API, así que defínelo con la dirección pública de la API.

Códigos QR

  • El código QR contiene un código que empieza por TKY., una firma de la referencia de la entrada hecha con TICKET_SECRET (el JWT_SECRET de la API cuando no está definido). No contiene nada personal.
  • De cada código solo se guarda una huella, así que la base de datos nunca contiene una entrada utilizable.
  • Define `TICKET_SECRET` una vez, antes de vender. Cambiarlo después hace que todos los códigos QR ya emitidos dejen de funcionar en la puerta.
Terminal
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Los correos

Correo electrónicoSe envía cuando
Your ticketsSe paga un pedido o se confirma un pedido gratuito, y otra vez tras una reemisión o un reenvío
Verification codeUn asistente se registra o cambia su correo
Password resetUn asistente pide una contraseña nueva
RefundEl proveedor confirma un reembolso, o no, en cuyo caso se avisa al comprador de que el equipo lo está revisando
Event cancelledSe cancela un evento, a cada pedido pagado
Event reminderAproximadamente un día antes del evento, a los asistentes que mantienen los recordatorios activados en su cuenta (abajo)
  • Define RESEND_API_KEY y MAIL_FROM (por ejemplo Ticketory <tickets@your-domain.com>) en el .env de la API para enviarlos a través de Resend. Una respuesta a un correo de entradas va al correo de soporte del espacio de trabajo. Cada correo sobre un pedido (entradas, reembolsos, el aviso de cancelación y el recordatorio) se escribe en el idioma en que se hizo el pedido, inglés o árabe, con el título del evento en ese idioma; un reenvío pedido desde el sitio web sigue el idioma de la página. Los correos de verificación y de restablecimiento siguen la página que usó el asistente.
  • Sin ellas, cada correo se escribe en el registro de la API en lugar de enviarse, que es donde se lee un código de verificación en una instalación nueva (con Docker: docker compose logs api). La confirmación dice entonces que las entradas están listas para descargar.
  • Un envío fallido se reintenta hasta seis veces, con una espera creciente. La confirmación muestra el estado del correo y ofrece Resend email, una vez por minuto.
  • Los interruptores de Notifications del panel cambian lo que se avisa al equipo; nunca impiden que un correo llegue a un comprador.

Recordatorios de eventos

  • Un asistente con cuenta que mantiene Event reminders activado en su perfil (activado por defecto) recibe un correo por evento, unas 24 horas antes de la primera sesión para la que tiene entradas válidas, con la lista de esas entradas y sus asientos y un enlace a My tickets.
  • La API busca recordatorios pendientes un minuto después de arrancar y cada 15 minutos a partir de entonces. Cada uno se registra en la tabla event_reminders antes de enviarse, así que ninguno sale dos veces, ni siquiera tras un reinicio o con dos copias de la API. Un envío fallido se intenta hasta tres veces mientras el evento aún está por delante.
  • Las entradas reembolsadas, suspendidas y anuladas, los pedidos sin pagar y los eventos cancelados o en borrador no reciben ninguno, ni tampoco un pedido pagado después de la hora del recordatorio, ya que sus entradas acaban de enviarse.
  • EVENT_REMINDER_HOURS en el .env de la API cambia la antelación (como máximo 168, una semana), y 0 desactiva los recordatorios. Sin un proveedor de correo, cada recordatorio se escribe en el registro de la API, como cualquier otro correo.
  • El interruptor News and offers del perfil solo se guarda como elección del asistente: la plantilla no envía correos de novedades ni ofertas.

Reemitir y anular

  • Reissue, en una entrada de la página del pedido, da a la entrada un código QR nuevo: el antiguo deja de funcionar en la puerta al instante, y las entradas se envían de nuevo por correo con el código nuevo. Solo se puede reemitir una entrada válida.
  • Void es para una entrada que nadie pagó, como una gratuita. Su asiento o plaza vuelve a la venta al instante, salvo que su titular ya hubiera sido admitido. Una entrada pagada se reembolsa en su lugar, lo que mantiene el dinero y la admisión en sintonía.
  • Ambas necesitan tickets.manage, que tienen los roles de ejemplo Propietario y Finanzas, y ambas quedan escritas en la línea de tiempo del pedido.

Las rutas que hay detrás

  • GET /api/orders/:reference/receipt responde el pedido, sus entradas con una imagen QR mientras el pedido está pagado, el estado del correo y los downloads firmados. Necesita el token de acceso del pedido o el token del asistente.
  • GET /api/orders/:reference/tickets.pdf, GET /api/orders/:reference/calendar.ics y GET /api/tickets/:reference/pdf aceptan un enlace firmado (?exp=&sig=); uno incorrecto o caducado es un 404.
  • POST /api/orders/:reference/resend-email pone el correo en cola de nuevo; antes de un minuto es un 429 COOLDOWN.
  • POST /api/admin/tickets/:reference/reissue y /void necesitan tickets.manage. Anular una entrada pagada es un 409 USE_REFUND.

¿Te atascaste en un paso?

Busca una solución antes de empezar de nuevo.

Solución de problemas

Preferencias de Cookies

Utilizamos cookies para mejorar tu experiencia de navegación, analizar el tráfico del sitio y personalizar el contenido. Al hacer clic en "Aceptar Todo", consientes nuestro uso de cookies para análisis y publicidad personalizada.