Implementación de VeriFactu en Local: Hash Encadenado SHA-256 y Cola Asíncrona Store-and-Forward

El Reglamento de requisitos de los sistemas informáticos de facturación (VeriFactu / RD 1007/2023) exige inalterabilidad y trazabilidad en cada ticket emitido.

1. Algoritmo de Huella Digital Encadenada

Cada registro calcula una huella SHA-256 que incorpora el hash del registro precedente:

import hashlib def calcular_hash_verifactu(nif, num_factura, fecha, cuota_iva, total, hash_previo): cadena = f"NIF={nif}&NUM={num_factura}&FECHA={fecha}&CUOTA={cuota_iva:.2f}&TOTAL={total:.2f}&PREV={hash_previo}" return hashlib.sha256(cadena.encode('utf-8')).hexdigest().upper() 

2. Desacoplamiento Store & Forward

Para evitar que la caja se bloquee si la sede electrónica de la AEAT sufre congestión o caída de red:

  • Hilo 1 (Mostrador): Cobra en < 500 ms, imprime ticket con código QR oficial y libera al cliente.
  • Hilo 2 (Worker de fondo): Sincroniza los paquetes XML firmados con la AEAT cuando la conexión esté disponible.

Documentación legal y técnica completa en VeriFactu Access y en la comparativa de software TPV.