VerifactuMidAPI/documentacion/README.md

92 lines
2.4 KiB
Markdown
Raw Normal View History

# 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
```bash
# Compilar
go build -o verifactu-api.exe ./main.go
# Ejecutar
./verifactu-api.exe
```
## Configuración
Editar `config.yml`:
```yaml
server:
port: 6789
verifactu:
production: false # true para producción
certificates:
storage_path: ./data/certs/
crypto:
keys_path: ./keys/
```
## Estado
- [x] Alta de facturas
- [x] Fallback local (cuando AEAT no disponible)
- [x] Tokens para certificados
- [x] Registro de certificados
- [x] Cifrado RSA de contraseñas
- [x] 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
```bash
# 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