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.
Componentes
| Componente | Dónde corre | Función |
|---|---|---|
| FactuPOS web | Browser de la caja | Llama al puente al procesar pago tarjeta |
| FactuposDatafono.exe (puente) | PC de la caja, escucha en 127.0.0.1:8765 | Traduce HTTP↔TCP/JSON al datáfono |
| Datáfono (Promerica/BAC/BNCR) | Físico, en la WiFi del comercio | Procesa la tarjeta, pide autorización al banco |
Arquitectura del puente
(browser)
(localhost:8765)
(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.
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)
- Descargar el instalador: FactuposDatafono-Setup.zip (descomprimir y ejecutar el .exe) (también en el menú Aplicaciones → Datáfono → Instalador).
- Ejecutarlo. Si Windows SmartScreen avisa: Más información → Ejecutar de todas formas.
- Deja el puente arrancando con Windows (oculto, con ícono en la bandeja) + desinstalador. No hay que copiar nada a mano.
- En la bandeja aparece el ícono de tarjeta: verde = corriendo, rojo = detenido (puede estar en la flechita ▲ de iconos ocultos).
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:
- Descargar Permitir-Datafono-Chrome.reg (clic derecho → Guardar enlace como, que termine en
.reg). - Doble clic → Sí (edita el registro; puede pedir admin).
- Cerrar Chrome del todo y reabrir.
- Verificar en
chrome://policy: debe aparecerLocalNetworkAccessAllowedForUrlscon tus dominios.
.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
| Ejecutable | C:\Program Files\FactuposDatafono\ |
| Configuración | %APPDATA%\FactuposDatafono\config.json |
| Logs por día | %APPDATA%\FactuposDatafono\logs\YYYY-MM-DD.log |
| Log en vivo | http://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ón | Acción |
|---|---|
| ● Servicio corriendo / detenido | Estado del puente. El ícono es verde si responde, rojo si se cae. |
| Diagnosticar | Prueba el puente + el datáfono y abre el log en vivo (/monitor) |
| Reiniciar servicio | Cierra 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 logs | Abre %APPDATA%\FactuposDatafono\logs |
| Abrir carpeta config | Abre %APPDATA%\FactuposDatafono |
| Cerrar | Detiene 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"
| Campo | Valor | Notas |
|---|---|---|
| Habilitado | ☑/☐ | Cuando se desactiva, FactuPOS factura tarjeta como antes (sin datáfono) |
| Banco / Datáfono | Banco Promerica | BAC y BNCR pendientes |
| URL del puente local | http://127.0.0.1:8765 | El default casi nunca cambia |
| IP del datáfono | ej. 192.168.100.197 | IP estática asignada al POS en la WiFi del comercio |
| Puerto | 8080 | Puerto TCP en el que el POS escucha (configurado en Polaris) |
| Merchant ID | ej. 011016026 | Lo asigna Polaris/Promerica al activar el comercio |
| Timeout de transacciones (ms) | 130000 | 2 min + margen sobre el timeout del POS |
config.json del puente.
Probar puente
Verifica que el ejecutable está corriendo y responde HTTP.
- Asegurarse de que
FactuposDatafono.exeestá abierto - En DTF-001, click Probar puente
Resultados posibles
| Mensaje | Significado |
|---|---|
| OK Puente vX.X.X alcanzable · Se usará para transacciones: POS … · merchant … | Todo listo para probar el POS |
| ERROR Failed to fetch / Puente no responde | Falta 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.
- Llenar IP, Puerto y Merchant ID
- Click Guardar
- Click Probar puerto POS
| Mensaje | Significado | Acción |
|---|---|---|
| OK 192.168.100.197:8080 responde en 35ms — puerto abierto | POS listo para transacciones | Continuar con cobro de prueba |
| ERROR ECONNREFUSED | POS está en la red pero NO está en MODO CAJA o no escucha en ese puerto | Pedir al banco activar MODO CAJA en Polaris |
| ERROR ETIMEDOUT / no alcanzable | POS apagado, en otra red, o IP equivocada | Verificar WiFi y ping al POS |
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:
- En DTF-001, sección Pruebas de transacciones, ingresar un monto pequeño (ej.
100) - Click Cobrar prueba
- El POS muestra "Acerque/inserte/pase su tarjeta"
- El cajero pasa una tarjeta real (puede ser la propia, se anula después)
- Resultado en pantalla:
- APROBADA con
auth_code,ticket_number,reference_number, etc. - RECHAZADA con
rsp_codey mensaje del banco
- APROBADA con
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ón | Cuándo | Requiere |
|---|---|---|
| Anular | Mismo día, pre-cierre | Ticket # |
| Devolver | Cualquier momento | Ticket # + monto |
| Reimprimir | Mismo 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ón | Acción |
|---|---|
| Cierre de lote | Cierra el día — solo si Polaris tiene desactivado el cierre automático |
| Reporte cierre | Resumen actual sin cerrar (preview) |
| Último cierre | Detalle del último cierre ejecutado |
Bancos soportados
| Banco | Estado | Datáfono | Protocolo |
|---|---|---|---|
| Banco Promerica | Activo | NEW9220 / NEW9310 (WPOSS) | TCP + JSON |
| BAC Credomatic | Pendiente | — | — |
| Banco Nacional | Pendiente | — | — |
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
- Cajero arma la factura
- Click en Tarjeta (medio de pago 02) o teclas equivalentes
- FactuPOS muestra "Cobrando con datáfono..."
- El datáfono pide la tarjeta al cliente
- Si el banco aprueba:
- FactuPOS guarda el pago con
auth_code|ticket_number|reference_number|****1234como comprobante - Se cierra normal la factura
- FactuPOS guarda el pago con
- Si el banco rechaza:
- FactuPOS muestra mensaje de error y NO guarda el pago
- El cajero puede reintentar o cobrar con otro medio
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
| Filtro | Uso |
|---|---|
| Desde / Hasta | Rango de fechas (default hoy → hoy, editable) |
| Banco | Promerica, BAC, BNCR… |
| Merchant | Se 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"). |
| Aprobada | Sí / No / Todas |
| Documento | Consecutivo de la factura |
| Ticket # | Número que devuelve el POS (ej. 000183) |
| Diagnósticos | Por 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ón | Acción |
|---|---|
| Detalle | Muestra el JSON crudo del movimiento (datos del POS, EMV, holder, raw request/response). |
| Imprimir | Reimprime el voucher en la impresora de comprobantes vía cola WebSocket. Cantidad de copias según Copias Voucher de la config. |
| Consultar | Pregunta 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. |
| Anular | Llama 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. |
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.
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ón | Acción |
|---|---|
| Imprimir detalle | Solo 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 lote | Ejecuta 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. |
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.
- Aplicar Permitir-Datafono-Chrome.reg (ver Instalar, paso 2) y reiniciar el navegador.
- Verificar en
chrome://policyque aparezcaLocalNetworkAccessAllowedForUrls.
Causa #2: el puente no está corriendo (o abrís DTF-001 desde otra PC).
- Verificar el ícono verde en la bandeja (puede estar en la flechita ▲). Si no está, reinstalá o arrancá el puente.
- Probar en el browser (nueva pestaña):
http://127.0.0.1:8765/saluddebe responder JSON con"version". - Si
EADDRINUSEen el log: había otra instancia. Desde v0.4.3 se resuelve solo; en versiones viejas,taskkill /F /IM FactuposDatafono.exey 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.
- Verificar con
ping <IP del POS>que la red funciona - Pedir a Promerica que active MODO CAJA en Polaris para tu terminal
- 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.
- Confirmar el Merchant ID con el banco
- 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).
- Verificar con
ipconfigen la PC y el dato de IP del POS (boleta de inicialización del POS) - Si las redes son distintas, conectar el POS a la WiFi del comercio
- 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).
- Antes de reintentar, click Última transacción — si aparece la transacción, el banco SÍ aprobó (no reintentar para evitar doble cobro)
- Si no aparece nada en última transacción, sí se puede reintentar
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…