Hoja de Ruta para Implementar Factura Electrónica y VeriFactu en TPVFOX (PHP)
Punto a seguir.
1. Requisitos Previos
Antes de comenzar, asegúrate de cumplir con estos requisitos:
✅ Entender la normativa:
-
La Ley Crea y Crece establece la obligatoriedad de la facturación electrónica en operaciones B2B.
✅ Tecnologías necesarias:
-
PHP 7.4+ o PHP 8.x
-
Extensiones necesarias:
openssl,
soap,
xml,
json
-
API VeriFactu: Documentación de Nemon.io
-
Generación de XML (FacturaE)
-
Firma digital XAdES con OpenSSL
2. Diseño de la Solución
Para integrar Factura Electrónica y VeriFactu en TPVFOX, hay que seguir estos pasos:
1️⃣ Generar facturas en formato XML (FacturaE) y JSON (VeriFactu)
2️⃣ Firmar digitalmente las facturas (XAdES con OpenSSL)
3️⃣ Enviar las facturas a la API de VeriFactu
4️⃣ Registrar la trazabilidad y auditoría de las facturas
3. Implementación Paso a Paso en PHP
Paso 1: Adaptar la Base de Datos
Objetivo: Modificar la base de datos de TPVFOX para soportar VeriFactu y Factura Electrónica.
ALTER TABLE facturas ADD COLUMN verifactu_hash VARCHAR(256); ALTER TABLE facturas ADD COLUMN facturae_xml TEXT; ALTER TABLE facturas ADD COLUMN enviado_a_hacienda BOOLEAN DEFAULT FALSE;
Paso 2: Generar Factura Electrónica en XML (FacturaE)
Objetivo: Crear facturas en formato FacturaE 3.2 o superior utilizando PHP.
function generarFacturaE($numero, $cliente, $total) { $xml = new SimpleXMLElement('<Factura></Factura>'); $xml->addChild('Numero', $numero); $xml->addChild('Cliente', $cliente); $xml->addChild('Total', $total); return $xml->asXML(); } // Ejemplo de uso $xmlFactura = generarFacturaE("F2025001", "Empresa XYZ", "150.00"); file_put_contents("factura.xml", $xmlFactura);
Paso 3: Firmar Digitalmente la Factura con XAdES
Objetivo: Usar OpenSSL para firmar las facturas y cumplir con FacturaE.
function firmarFactura($xmlFile, $certFile, $keyFile) { $xml = file_get_contents($xmlFile); $privateKey = openssl_pkey_get_private(file_get_contents($keyFile)); $cert = file_get_contents($certFile); openssl_sign($xml, $signature, $privateKey, OPENSSL_ALGO_SHA256); $signedXml = $xml . "\n<Firma>" . base64_encode($signature) . "</Firma>"; return $signedXml; } // Uso $signedFactura = firmarFactura("factura.xml", "certificado.pem", "clave_privada.pem"); file_put_contents("factura_firmada.xml", $signedFactura);
Paso 4: Generar JSON para VeriFactu
Objetivo: Crear una factura en formato JSON para enviarla a VeriFactu.
function generarJsonVeriFactu($numero, $cliente, $total) { $data = [ "factura_numero" => $numero, "fecha_emision" => date("Y-m-d"), "cliente" => $cliente, "total" => $total, "hash" => hash("sha256", $numero . $cliente . $total) ]; return json_encode($data, JSON_PRETTY_PRINT); } // Uso $jsonFactura = generarJsonVeriFactu("F2025001", "Empresa XYZ", 150.00); file_put_contents("factura.json", $jsonFactura);
Paso 5: Enviar Factura a VeriFactu (API REST)
Objetivo: Conectar con la API VeriFactu y enviar la factura.
function enviarFacturaVeriFactu($jsonFactura) { $apiUrl = "https://api.nemon.io/verifactu/enviar"; $token = "TU_TOKEN_AQUI"; // Obtener desde el panel de Nemon.io $ch = curl_init($apiUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer $token", "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonFactura); $response = curl_exec($ch); curl_close($ch); return $response; } // Uso $jsonFactura = file_get_contents("factura.json"); $response = enviarFacturaVeriFactu($jsonFactura); echo $response;
Paso 6: Validar y Probar la Implementación
Objetivo: Asegurar que el sistema funcione correctamente.
✅ Validar XML FacturaE con herramientas de la Agencia Tributaria.
✅ Enviar facturas de prueba a la API VeriFactu.
✅ Verificar que las facturas no sean alterables después de emitidas.
4. Despliegue y Monitorización
Para un despliegue exitoso:
✔ Configurar logs de auditoría (guardar cada factura enviada).
✔ Registrar los errores de la API VeriFactu.
✔ Actualizar el sistema según nuevas normativas.
5. Conclusión
Implementar Factura Electrónica y VeriFactu en TPVFOX con PHP requiere:
✅ Generar XML FacturaE y JSON VeriFactu.
✅ Firmar facturas digitalmente con XAdES (OpenSSL).
✅ Enviar facturas a la API de VeriFactu.
✅ Asegurar la inmutabilidad y trazabilidad.
Si eres programador y necesitas ayuda, deja un comentario.
¡Listo! Esta versión no incluye iconos y está optimizada para evitar el error. ¿Te gustaría ajustar algún detalle más?