VerifactuMidAPI/documentacion/certificado_pruebas.md

141 lines
3.6 KiB
Markdown
Raw Normal View History

# Obtener Certificado de Pruebas AEAT
## Introducción
Para enviar facturas al entorno de pruebas de VeriFactu (no en producción), necesitas un certificado digital de pruebas registrado en el sistema de la AEAT.
## Opciones de Certificados
### Opción 1: Certificado FNMT (Fábrica Nacional de Moneda y Timbre)
Es el más común para empresas y autónomos en España.
**Pasos:**
1. Ir a https://www.fnmt.es/consultas-y-resolucion-de-incidentes/centros-de-emision-y-oficinas
2. Buscar una oficina cercana FNMT
3. Acudir presencialmente con DNI
4. Solicitar certificado de persona física
5. Te lo emiten en el acto
### Opción 2: Certificado de la AEAT (solo pruebas)
La AEAT ofrece certificados de pruebas:
**Pasos:**
1. Ir a https://preportal.aeat.es
2. Registro como usuario
3. Solicitar certificado de prueba
4. Descargar archivo .p12
> **Nota**: Los certificados de prueba de la AEAT suelen tener validez limitada.
### Opción 3: Certificado personal (prod)
Si ya tienes tu certificado personal (el que usaste antes), puede que funcione en producción.
**Verificar:**
1. ¿Está vigente? (no expired)
2. ¿Es cualificado? (firmado por autoridad reconocida)
## Registrar Nuevo Certificado
Una vez tengas el archivo .p12:
### 1. Copiar a una ubicación segura
```bash
cp micertificado.p12 ./data/certs/
```
### 2. Actualizar config.yml
```yaml
certificates:
storage_path: ./data/certs/
cert_file: ./data/certs/nuevo_cert.p12
cert_password: TU_CONTRASEÑA
```
### 3. Convertir certificado
La API necesita el certificado en formato PEM:
```bash
python convert_cert.py ./data/certs/nuevo_cert.p12 TU_CONTRASEÑA
```
Esto genera:
- `cert_key.pem` (clave privada)
- `cert_cert.pem` (certificado público)
### 4. Reiniciar API
```bash
# Detener API
taskkill /F /IM main.exe
# Iniciar
go run main.go
```
### 5. Probar
```bash
python test_invoice.py
```
## Estructura de Directorios
```
VerifactuMidAPI/
├── data/
│ └── certs/
│ ├── personal.p12 # Tu certificado
│ ├── cert_key.pem # Generado automáticamente
│ └── cert_cert.pem # Generado automáticamente
└── config.yml # Configuración
```
## Verificar Certificado
Para verificar que el certificado es válido:
```powershell
openssl pkcs12 -in .\data\certs\personal.p12 -passin pass:TU_PASS -nokeys -clcerts | openssl x509 -noout -dates
```
Muestra:
- Not Before: fecha de inicio de validez
- Not After: fecha de caducidad
## Problemas Comunes
### "403 Forbidden"
- El certificado no está autorizado en el entorno de pruebas
- O el certificado es de producción y estás en test
### "Certificate expired"
- El certificado ha caducado
- Solicitar uno nuevo
### "Invalid password"
- La contraseña del .p12 es incorrecta
### "tls: failed to find any PEM data"
- Error al convertir el certificado
- Ejecutar `python convert_cert.py` manualmente para ver el error
## Siguientes Pasos
1. Obtener certificado de pruebas FNMT
2. Registrar en la API
3. Probar con `python test_invoice.py`
4. Verificar que devuelve estado "Correcto" (no "Correcto (local)")
## Recursos
- FNMT: https://www.fnmt.es
- Certificados válidos VeriFactu: https://www.sede.fnmt.gob.es/preguntas-frecuentes/certificado-de-representante/-/asset_publisher/eIal9z2VE0Kb/content/certificados-electr%C3%B3nicos-v%C3%A1lidos-para-el-sistema-veri*factu
- Certificado entidad sin personalidad jurídica: https://www.sede.fnmt.gob.es/certificados/certificado-de-representante/entidad-sin-personalidad-juridica
- Portal AEAT Pruebas: https://preportal.aeat.es
- Sede AEAT: https://sede.agenciatributaria.gob.es