91 lines
2.4 KiB
Markdown
91 lines
2.4 KiB
Markdown
# 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] Anulación de facturas (básico, sin comunicación AEAT)
|
|
- [ ] Consultas
|
|
- [ ] Subsanación
|
|
- [ ] Conexión real con AEAT (necesita certificado FNMT registrado)
|
|
|
|
## Pruebas
|
|
|
|
```bash
|
|
# Tests de certificados (en test/)
|
|
python test/run_tests.py
|
|
|
|
# Test de factura
|
|
python test/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 |