Datáfono AY-073

Configurar y probar la integración con datáfonos bancarios desde FactuPOS

Menú Ayuda

Introducción

El módulo Datáfono permite cobrar facturas con tarjeta usando un datáfono bancario físico, integrando el cobro directamente con la facturación de FactuPOS.

Cuando el cajero elige Tarjeta como medio de pago, FactuPOS le envía el monto al datáfono. El cliente acerca/inserta su tarjeta, el datáfono pide autorización al banco, y la respuesta vuelve a FactuPOS. Si el banco aprueba, la factura se completa automáticamente con el código de autorización como comprobante.

Funciona solo si está configurado. Por defecto, FactuPOS factura tarjeta como hasta ahora — solo registrando el medio de pago, sin cobro electrónico. La integración con datáfono se activa por empresa desde el módulo DTF-001 Configurar Datáfono.

Componentes

ComponenteDónde correFunción
FactuPOS webBrowser de la cajaLlama al puente al procesar pago tarjeta
FactuposDatafono.exe (puente)PC de la caja, escucha en 127.0.0.1:8765Traduce HTTP↔TCP/JSON al datáfono
Datáfono (Promerica/BAC/BNCR)Físico, en la WiFi del comercioProcesa la tarjeta, pide autorización al banco

Arquitectura del puente

FactuPOS
(browser)
→ HTTP →
FactuposDatafono
(localhost:8765)
→ TCP/JSON →
Datáfono
(LAN, ej. 192.168.100.197:8080)

El puente es necesario porque el navegador no puede abrir conexiones TCP directas al datáfono — solo habla HTTP/HTTPS. El puente local recibe HTTP, abre el socket TCP al POS, le manda el JSON y devuelve la respuesta.

El POS y la PC deben estar en la misma red WiFi. El datáfono usa su 4G propia para hablar con el banco, pero a la PC le habla por la WiFi del comercio.

Instalar FactuposDatafono

El puente se instala en cada PC de caja que cobre con tarjeta. Son 3 pasos: instalar el puente, autorizar el navegador, y configurar en FactuPOS.

1) Instalar el puente (1 clic)

  1. Descargar el instalador: FactuposDatafono-Setup.zip (descomprimir y ejecutar el .exe) (también en el menú Aplicaciones → Datáfono → Instalador).
  2. Ejecutarlo. Si Windows SmartScreen avisa: Más información → Ejecutar de todas formas.
  3. Deja el puente arrancando con Windows (oculto, con ícono en la bandeja) + desinstalador. No hay que copiar nada a mano.
  4. En la bandeja aparece el ícono de tarjeta: verde = corriendo, rojo = detenido (puede estar en la flechita de iconos ocultos).
Al reinstalar: cerrá antes el puente viejo (tray → Cerrar, o Ctrl+Shift+Esc → terminar FactuposDatafono.exe) — Windows no sobrescribe un .exe en uso. Desde v0.4.3, si se lanza dos veces, la segunda copia se cierra sola (sin el error EADDRINUSE).

2) Autorizar Chrome/Edge — OBLIGATORIO desde Chrome 142

Chrome/Edge 142+ bloquean que la web de FactuPOS hable con el puente local 127.0.0.1 (error Failed to fetch / Permission was denied … loopback), aunque el puente esté corriendo. Hay que autorizarlo:

  1. Descargar Permitir-Datafono-Chrome.reg (clic derecho → Guardar enlace como, que termine en .reg).
  2. Doble clic → (edita el registro; puede pedir admin).
  3. Cerrar Chrome del todo y reabrir.
  4. Verificar en chrome://policy: debe aparecer LocalNetworkAccessAllowedForUrls con tus dominios.
Alternativa por sesión (sin archivo): en DTF-001, clic en el candado/ícono a la izquierda de la URL → Configuración del sitioAcceso a la red localPermitir. El .reg es mejor: es permanente y se aplica a todas las cajas (o por GPO en dominio).

3) Configurar en FactuPOS (DTF-001)

Menú Configuración → General → Datáfono: Estado Habilitado, banco, URL del puente http://127.0.0.1:8765, e IP / puerto / Merchant ID del datáfono. Detalle en Configurar (DTF-001).

Ubicaciones

EjecutableC:\Program Files\FactuposDatafono\
Configuración%APPDATA%\FactuposDatafono\config.json
Logs por día%APPDATA%\FactuposDatafono\logs\YYYY-MM-DD.log
Log en vivohttp://127.0.0.1:8765/monitor (o tray → Diagnosticar)

Tray icon

Al lado del reloj de Windows aparece un icono. Click derecho abre el menú:

OpciónAcción
● Servicio corriendo / detenidoEstado del puente. El ícono es verde si responde, rojo si se cae.
DiagnosticarPrueba el puente + el datáfono y abre el log en vivo (/monitor)
Reiniciar servicioCierra y vuelve a levantar el HTTP server interno
Abrir configuración…Abre DTF-001 en el navegador
Ver log en vivo…Abre http://127.0.0.1:8765/monitor (consola en tiempo real)
Abrir carpeta de logsAbre %APPDATA%\FactuposDatafono\logs
Abrir carpeta configAbre %APPDATA%\FactuposDatafono
CerrarDetiene el puente y cierra la app

Configurar (DTF-001)

Acceso: Configuración → Datáfono o Herramientas → Datáfono → Configurar Datáfono.

Sección "Configuración"

CampoValorNotas
Habilitado☑/☐Cuando se desactiva, FactuPOS factura tarjeta como antes (sin datáfono)
Banco / DatáfonoBanco PromericaBAC y BNCR pendientes
URL del puente localhttp://127.0.0.1:8765El default casi nunca cambia
IP del datáfonoej. 192.168.100.197IP estática asignada al POS en la WiFi del comercio
Puerto8080Puerto TCP en el que el POS escucha (configurado en Polaris)
Merchant IDej. 011016026Lo asigna Polaris/Promerica al activar el comercio
Timeout de transacciones (ms)1300002 min + margen sobre el timeout del POS
Los datos del datáfono (IP, puerto, merchant) se guardan en el navegador (localStorage) por caja. Los valores se mandan en cada request al puente, sobrescribiendo los defaults del config.json del puente.

Probar puente

Verifica que el ejecutable está corriendo y responde HTTP.

  1. Asegurarse de que FactuposDatafono.exe está abierto
  2. En DTF-001, click Probar puente

Resultados posibles

MensajeSignificado
OK Puente vX.X.X alcanzable · Se usará para transacciones: POS … · merchant …Todo listo para probar el POS
ERROR Failed to fetch / Puente no respondeFalta el permiso de Chrome 142+ (aplicar el .reg, ver Instalar paso 2), o el puente no está corriendo, o abrís DTF-001 desde otra PC

Probar conexión POS

Hace un TCP probe al datáfono — abre el socket sin enviar ninguna transacción. Sirve para confirmar que el POS está prendido, en MODO CAJA y escuchando en el puerto configurado.

  1. Llenar IP, Puerto y Merchant ID
  2. Click Guardar
  3. Click Probar puerto POS
MensajeSignificadoAcción
OK 192.168.100.197:8080 responde en 35ms — puerto abiertoPOS listo para transaccionesContinuar con cobro de prueba
ERROR ECONNREFUSEDPOS está en la red pero NO está en MODO CAJA o no escucha en ese puertoPedir al banco activar MODO CAJA en Polaris
ERROR ETIMEDOUT / no alcanzablePOS apagado, en otra red, o IP equivocadaVerificar WiFi y ping al POS
Equivalente desde Windows: telnet 192.168.100.197 8080 o ping 192.168.100.197. Probar puerto POS hace lo mismo pero desde la misma página.

Cobrar prueba

Una vez puente OK + POS responde, hacer un cobro real sin afectar facturación:

  1. En DTF-001, sección Pruebas de transacciones, ingresar un monto pequeño (ej. 100)
  2. Click Cobrar prueba
  3. El POS muestra "Acerque/inserte/pase su tarjeta"
  4. El cajero pasa una tarjeta real (puede ser la propia, se anula después)
  5. Resultado en pantalla:
    • APROBADA con auth_code, ticket_number, reference_number, etc.
    • RECHAZADA con rsp_code y mensaje del banco
Después de la prueba, anular el cobro con la opción Anular ticket # usando el ticket_number que devolvió el POS.

Anular / Devolver / Reimprimir

Las tres operaciones requieren el ticket_number (número de boleta) que devolvió el POS al cobrar.

Anular

Solo funciona el mismo día y antes del cierre de lote. Cancela completamente la transacción.

Devolver

Funciona incluso después del cierre. Procesa un reembolso al cliente. Acepta monto parcial (no necesariamente el total).

Reimprimir

Imprime una copia del voucher. Solo si la prioridad de impresión es del POS o de la caja según configuración Polaris.

OperaciónCuándoRequiere
AnularMismo día, pre-cierreTicket #
DevolverCualquier momentoTicket # + monto
ReimprimirMismo día (post-cierre suele fallar)Ticket #

Cierre y reportes

El Cierre de lote (Z bancario) consolida todas las transacciones del día y las envía al banco para liquidación.

BotónAcción
Cierre de loteCierra el día — solo si Polaris tiene desactivado el cierre automático
Reporte cierreResumen actual sin cerrar (preview)
Último cierreDetalle del último cierre ejecutado
Por defecto, Polaris hace cierre automático a una hora fija. Confirmar con el banco si para tu comercio el cierre se hace desde Polaris o desde la caja.

Bancos soportados

BancoEstadoDatáfonoProtocolo
Banco PromericaActivoNEW9220 / NEW9310 (WPOSS)TCP + JSON
BAC CredomaticPendiente
Banco NacionalPendiente

Para activar un banco nuevo se requiere: documentación del protocolo del banco, plugin nuevo en el puente y carpeta dedicada en /datafono/codigo/<banco>/.

Facturación con datáfono

Una vez activado el datáfono en DTF-001, los 4 módulos de facturación llaman al datáfono automáticamente cuando el cajero elige Tarjeta como medio de pago:

  • Factura Desktop
  • FastPOS
  • FastPOS 2
  • Factura Móvil

Flujo del cobro

  1. Cajero arma la factura
  2. Click en Tarjeta (medio de pago 02) o teclas equivalentes
  3. FactuPOS muestra "Cobrando con datáfono..."
  4. El datáfono pide la tarjeta al cliente
  5. Si el banco aprueba:
    • FactuPOS guarda el pago con auth_code|ticket_number|reference_number|****1234 como comprobante
    • Se cierra normal la factura
  6. Si el banco rechaza:
    • FactuPOS muestra mensaje de error y NO guarda el pago
    • El cajero puede reintentar o cobrar con otro medio
Comportamiento "silencioso": si el datáfono no está habilitado en DTF-001, el flujo de tarjeta funciona como siempre — solo registra el medio de pago, sin contactar ningún hardware.

Listado de movimientos (DTF-002)

Toda transacción que pasa por el datáfono se registra automáticamente en la tabla BancoMovimientos con todos los campos del POS (ticket, autorización, referencia, EMV, tarjeta enmascarada, etc.). El módulo DTF-002 permite consultarlas, reimprimir voucher, anular y verificar contra el POS.

Filtros disponibles

FiltroUso
Desde / HastaRango de fechas (default hoy → hoy, editable)
BancoPromerica, BAC, BNCR…
MerchantSe llena solo con los datáfonos (merchants) que aparecen en el resultado. Filtra la lista en pantalla al instante y, además, decide el alcance de la impresión (ver "Imprimir detalle / Cierre de lote").
AprobadaSí / No / Todas
DocumentoConsecutivo de la factura
Ticket #Número que devuelve el POS (ej. 000183)
DiagnósticosPor defecto Ocultar esconde consultas internas con monto 0 (PRUEBA COMUNICACION, ULTIMA TRANSACCION, CIERRE, REPORTE AUDITORIA…). Cambiar a Incluir para auditar todo lo que envió la caja al POS.

Acciones por movimiento

Sobre cada cobro aprobado de tipo COMPRA:

BotónAcción
DetalleMuestra el JSON crudo del movimiento (datos del POS, EMV, holder, raw request/response).
ImprimirReimprime el voucher en la impresora de comprobantes vía cola WebSocket. Cantidad de copias según Copias Voucher de la config.
ConsultarPregunta al POS si el ticket sigue activo. Lanza REIMPRESION + REPORTE AUDITORIA en paralelo (con timeouts 15s/10s para no quedar colgado). Útil para verificar antes de anular.
AnularLlama a ANULACION del POS para el ticket. Si aprueba, marca el movimiento original como anulado. Si el POS responde "Transacción ya anulada" también se actualiza el estado en BD (no se puede tener dos cobros activos del mismo ticket). Solo se habilita el mismo día del cobro: en días anteriores el botón sale gris (deshabilitado), porque el lote del POS ya cerró y la anulación debe hacerse como devolución.
Detección automática de anuladas: si existe una ANULACION aprobada con el mismo ticket que un COMPRA, el cobro original se muestra con tachado y badge amarillo ANULADA aunque su flag AnuladoPorId no haya quedado seteado. Esto cubre casos donde la anulación se ejecutó desde el POS directamente.

Consultar — qué interpreta cada respuesta

  • REIMPRESION aprobada → el ticket existe en el POS (puede estar activo o anulado, REIMPRESION no diferencia).
  • REPORTE AUDITORIA aprobado con el ticket apareciendo 1 vez → activo. Apareciendo 2+ veces → fue anulado (cobro + anulación).
  • REPORTE AUDITORIA con rsp_code 99 → la transacción no está habilitada en Polaris. Tip: usar el botón Anular; si el POS dice "TRANSACCION YA ANULADA" entonces ya estaba anulada.
"Anular" requiere que la transacción esté habilitada en Polaris. Por defecto los POS de Promerica vienen con sólo COMPRA NORMAL + SP. Pedirle a Johanna del banco que habilite también ANULACION, DEVOLUCIONES, REIMPRESION, REPORTE AUDITORIA y PRUEBA COMUNICACION.

Imprimir detalle / Cierre de lote

Si la estación tiene un datáfono asignado, en la parte superior aparecen dos botones de color (sólo cuando hay datáfono; en cajas de solo contado no se muestran):

BotónAcción
Imprimir detalleSolo imprime el detalle del lote (compras, anuladas y totales) desde lo registrado en FactuPOS. No toca el datáfono ni cierra nada — es seguro usarlo cuantas veces se quiera.
Cierre de loteEjecuta el cierre real en el datáfono (liquida el día con el banco) y luego imprime el detalle. Es irreversible y normalmente se hace una vez al día.
El filtro Merchant decide qué se imprime: con un merchant específico seleccionado se imprime solo ese datáfono; con Todos se imprime agrupado por merchant, con un subtotal por cada uno y un TOTAL GENERAL al final. Así no se mezclan los lotes de dos datáfonos en una misma caja.

Solución de problemas

"Failed to fetch" / "Permission was denied … loopback"

Causa #1 (Chrome/Edge 142+): el navegador bloquea que la web toque 127.0.0.1 aunque el puente esté corriendo. Se ve en la consola (F12) como blocked by CORS policy: Permission was denied … loopback address space.

  1. Aplicar Permitir-Datafono-Chrome.reg (ver Instalar, paso 2) y reiniciar el navegador.
  2. Verificar en chrome://policy que aparezca LocalNetworkAccessAllowedForUrls.

Causa #2: el puente no está corriendo (o abrís DTF-001 desde otra PC).

  1. Verificar el ícono verde en la bandeja (puede estar en la flechita ). Si no está, reinstalá o arrancá el puente.
  2. Probar en el browser (nueva pestaña): http://127.0.0.1:8765/salud debe responder JSON con "version".
  3. Si EADDRINUSE en el log: había otra instancia. Desde v0.4.3 se resuelve solo; en versiones viejas, taskkill /F /IM FactuposDatafono.exe y arrancar de nuevo.

"ECONNREFUSED" al probar el POS

Causa: el datáfono está prendido y en la red, pero NO está escuchando en el puerto.

  1. Verificar con ping <IP del POS> que la red funciona
  2. Pedir a Promerica que active MODO CAJA en Polaris para tu terminal
  3. Confirmar el puerto correcto (default 8080)

"rsp_code: 02" Transacción no permitida

Causa: el Merchant ID es incorrecto, o la transacción no está habilitada en Polaris.

  1. Confirmar el Merchant ID con el banco
  2. Pedir habilitar todas las transacciones en plantilla TRANSACCIONES de Polaris (COMPRA NORMAL, ANULACION, DEVOLUCIONES, REIMPRESION, CIERRE, ULTIMA TRANSACCION, PRUEBA COMUNICACION, ESTADO DE CONEXION)

El POS está en la misma red pero ping no responde

Causa: el POS quedó en una red diferente (típicamente 4G del POS, no la WiFi del comercio).

  1. Verificar con ipconfig en la PC y el dato de IP del POS (boleta de inicialización del POS)
  2. Si las redes son distintas, conectar el POS a la WiFi del comercio
  3. Asignar IP estática del POS dentro del rango de la WiFi (ej. 192.168.100.x)

Timeout 130000ms en cobro

Causa: el POS recibió pero no respondió (tarjeta sin firmar, cliente abandonó, problema de comunicación con el banco).

  1. Antes de reintentar, click Última transacción — si aparece la transacción, el banco SÍ aprobó (no reintentar para evitar doble cobro)
  2. Si no aparece nada en última transacción, sí se puede reintentar
Evitar doble cobro: ante CUALQUIER timeout o error de red, consultar siempre Última transacción antes de reintentar el cobro.

Logs detallados

Cada acción del puente se registra en %APPDATA%\FactuposDatafono\logs\YYYY-MM-DD.log. Acceso rápido desde el tray icon: Ver logs…