@devlas/transbank-pos
v0.2.0
Published
Cliente del POS Integrado de Transbank para cajas Devlas: protocolo serial, flujo de cobro, cola sin conexion y transportes (Web Serial, Capacitor). Funciona en navegador, Electron y Node.
Maintainers
Readme
@devlas/transbank-pos
Cliente del POS Integrado de Transbank para las cajas Devlas. Una sola implementacion para web (Chrome desktop y Android),
Electron y Capacitor Android. Solo cambia el Transporte (como llegan y salen los bytes del puerto).
protocolo: tramas<STX>DATOS<ETX>LRC, pedidos y lectura de respuestas. SinBufferninode:crypto: corre en cualquier motor. El mismo modulo lo usapayments-servicepara validar las tramas crudas que sube la caja.ClientePos: un comando a la vez, ACK/NAK, 3 intentos, tiempos de espera, mensajes intermedios y un evento de traza por cada cosa que pasa. Un comando sin respuesta no lanza: devuelverespuesta: nully el motivo, porque una venta puede haberse cobrado igual.PosSimulado: POS falso que habla el protocolo real, para pruebas y para desarrollar sin el equipo.TransporteWebSerial: Chrome y Edge de escritorio, Chrome en Android (USB) y Electron. 115200 8N1. Requiere HTTPS.TransporteCapacitor: la app Android (Capacitor), con el plugin@devlas/capacitor-usb-serial. El paquete no depende de Capacitor: la app le pasa el plugin.peticionCobro,peticionAnulacion,peticionCierre,peticionTrazas: convierten los resultados en las peticiones de payments-service.ColaSubida: cola sin conexion con orden garantizado y reintento; elAlmacen(localStorage, IndexedDB, archivo) lo pone cada plataforma.
Contrato con payments-service
npx tsx scripts/generar-contrato.ts <salida> genera las peticiones de una jornada completa con el POS simulado. payments-service
las guarda como fixture (services/payments/src/__fixtures__/cliente-transbank.json) y su prueba de integracion las envia a la API
real. Si cambias el cuerpo de una peticion, regenera el fixture y corre esa prueba.
Diseno y API del servidor: devlas-services/docs/transbank/DISENO.md.
Pendiente
Almacen y Enviar de cada plataforma (en el repo del POS), interfaz de usuario, probar con hardware el plugin Android y confirmar con un POS real
el formato del mensaje intermedio (0900), el fin del detalle de ventas (0261) y la disposicion de campos. Falta el comando de
detalle de ventas y de ultima venta en ClientePos, que dependen de ese ultimo punto.
Desarrollo
npm install
npm test
npm run typecheck
npm run build