Bugs corregidos tras validación directa contra la plataforma de pruebas: - Hash: formato key=valor& en lugar de separador | - TipoHuella: código 01 en lugar de literal SHA-256 - FechaHoraHusoGenRegistro: formato ISO 8601 con huso horario - IdSistemaInformatico: 2 caracteres (01) - Namespaces SOAP: URLs correctas de www2.agenciatributaria.gob.es - Estructura XML: eliminados wrappers Content/AltaReq sobrantes - Encadenamiento: xs:choice correcto (PrimerRegistro XOR RegistroAnterior) - RegistroAnterior: referencia datos de la factura anterior, no la actual - Destinatarios: bloque obligatorio para facturas F1/F3/rectificativas - wsu:Id: eliminado atributo con namespace no declarado - Parser respuesta: mapeado a RespuestaRegFactuSistemaFacturacion real - Campo emisor_nombre añadido al input de factura La API envía y recibe correctamente contra prewww1.aeat.es con respuesta EstadoEnvio=Correcto y CSV asignado por la AEAT. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| README.md | ||
| api.md | ||
| arqui.md | ||
| certificado_pruebas.md | ||
| config.md | ||
| formato_datos.md | ||
| seguridad.md | ||
| testing.md | ||
| tokens.md | ||
| verifactu.md | ||
README.md
VeriFactu MidAPI
API intermediaria para la comunicación con el sistema de facturación VeriFactu de la AEAT (Agencia Estatal de Administración Tributaria) de España.
Propósito
Esta API actúa como intermediaria entre aplicaciones empresariales y el sistema VeriFactu de Hacienda, permitiendo:
- Alta de facturas: Registro de facturas emitidas en el sistema de Hacienda
- Anulación de facturas: Cancelación de facturas previamente registradas
- Gestión de certificados: Registro y validación de certificados digitales cualificados
- Sistema de tokens: Autenticación mediante tokens para operaciones con facturas
Características
- Implementación en Go 1.26+
- Sin dependencias externas
- Endpoints REST para integración
- Criptografía RSA para cifrado de contraseñas
- certificados almacenados temporalmente para validación, luego de forma permanente
- Tokens de acceso similares a APIs como OpenAI
Estructura del Proyecto
VerifactuMidAPI/
├── api/ → Handlers HTTP, rutas
├── internal/ → Lógica de negocio
│ ├── cert/ → Gestión de certificados
│ ├── config/ → Configuración
│ └── crypto/ → Criptografía RSA
├── verifactu/ → Cliente SOAP para AEAT
├── documentacion/ → Documentación técnica
└── test/ → Pruebas
Inicio Rápido
# Compilar
go build -o verifactu-api.exe ./main.go
# Ejecutar
./verifactu-api.exe
Configuración
Editar config.yml:
server:
port: 6789
verifactu:
production: false # true para producción
certificates:
storage_path: ./data/certs/
crypto:
keys_path: ./keys/
Estado
- Alta de facturas
- Fallback local (cuando AEAT no disponible)
- Tokens para certificados
- Registro de certificados
- Cifrado RSA de contraseñas
- Fallback a local cuando AEAT devuelve error
- Anulación de facturas (básico)
- Consultas
- Subsanación
- Conexión real con AEAT (certificado necesario en servidor con Python cryptography)
Pruebas
# Tests de certificados
python test/run_tests.py
# Test de factura
python test_invoice.py
Notas
- AEAT devuelve 403 Forbidden (necesita certificado cliente)
- Fallback local guarda facturas cuando AEAT no disponible
- Certificado se convierte usando Python cryptography