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
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.
La gramática completa está en el esquema del ticket.
Recetas de maquetación
- Fila de dos columnas con etiqueta y valor: pon
flex: 1en la etiqueta yalign: "right"en el valor. - Fila de tres columnas iguales: pon
flex: 1en cada hijo. - Imagen con pie: mete un
imagey untexten uncolumnconalign: "center". - Totales destacados: usa un
rowconinvert: trueypadding: { x: 8, y: 6 }. - Modificadores sangrados bajo un producto: mete los modificadores en un
columnconpadding: { left: 28 }.
Ejemplos
Ticket mínimo
{
"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
{
"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" } }
]
}
]
}
}
}