Menú: Documentación

Pay at counter y APK · Cloud API

Imprimir un ticket

Cómo imprimir un ticket con formato en un terminal honei describiendo su contenido en JSON.

Envías un árbol JSON declarativo que describe lo que debe salir en el papel, honei lo renderiza y lo manda a la impresora térmica del terminal.

Modelos de terminal compatibles:

  • Castles S1F2
  • PAX A920 Pro

Ambos imprimen a 58 mm.

Flujo de integración

Envía el árbol del ticket1Renderiza y manda a imprimir2Print job sent34Imprime el ticketTPVhoneiTerminal

La respuesta llega en cuanto el terminal acepta el trabajo de impresión: no espera a que salga el papel.

POSTImprimir un ticket/terminals/:terminalId/print-ticketAPI reference

Cómo se construye un ticket

Un ticket es un árbol de bloques. Los contenedores (column, row) agrupan a otros bloques, y los bloques finales (text, image, separator, space) son lo que se imprime. Cada uno puede llevar un style.

ticket.rootcolumnrowColocan los hijostext, image…Lo que se imprime

La gramática completa está en el esquema del ticket.

Recetas de maquetación

  • Fila de dos columnas con etiqueta y valor: pon flex: 1 en la etiqueta y align: "right" en el valor.
  • Fila de tres columnas iguales: pon flex: 1 en cada hijo.
  • Imagen con pie: mete un image y un text en un column con align: "center".
  • Totales destacados: usa un row con invert: true y padding: { x: 8, y: 6 }.
  • Modificadores sangrados bajo un producto: mete los modificadores en un column con padding: { left: 28 }.

Ejemplos

Ticket mínimo

JSON
{
  "ticket": {
    "root": {
      "type": "column",
      "style": { "align": "center" },
      "children": [
        { "type": "text", "content": "HONEI BAR", "style": { "bold": true, "size": "xl" } },
        { "type": "separator" },
        { "type": "text", "content": "¡Gracias!", "style": { "italic": true } }
      ]
    }
  }
}

Ticket con productos y total

JSON
{
  "ticket": {
    "root": {
      "type": "column",
      "children": [
        { "type": "text", "content": "HONEI BAR", "style": { "bold": true, "size": "lg", "align": "center" } },
        { "type": "text", "content": "C/ Mayor 12, 28013 Madrid", "style": { "size": "sm", "align": "center" } },

        { "type": "separator", "style": { "margin": { "top": 4, "bottom": 4 } } },

        {
          "type": "row",
          "children": [
            { "type": "text", "content": "2x Cerveza", "style": { "flex": 1 } },
            { "type": "text", "content": "7,00 €", "style": { "align": "right", "bold": true } }
          ]
        },
        {
          "type": "row",
          "children": [
            { "type": "text", "content": "1x Tortilla", "style": { "flex": 1 } },
            { "type": "text", "content": "4,80 €", "style": { "align": "right", "bold": true } }
          ]
        },
        { "type": "separator", "style": { "margin": { "top": 4, "bottom": 4 } } },
        {
          "type": "row",
          "style": { "invert": true, "padding": { "x": 8, "y": 6 } },
          "children": [
            { "type": "text", "content": "TOTAL", "style": { "flex": 1, "bold": true, "size": "lg" } },
            { "type": "text", "content": "11,80 €", "style": { "align": "right", "bold": true, "size": "lg" } }
          ]
        }
      ]
    }
  }
}