3.4 KiB
3.4 KiB
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:
- Ir a https://www.fnmt.es/consultas-y-resolucion-de-incidentes/centros-de-emision-y-oficinas
- Buscar una oficina cercana FNMT
- Acudir presencialmente con DNI
- Solicitar certificado de persona física
- Te lo emiten en el acto
Opción 2: Certificado de la AEAT (solo pruebas)
La AEAT ofrece certificados de pruebas:
Pasos:
- Ir a https://preportal.aeat.es
- Registro como usuario
- Solicitar certificado de prueba
- 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:
- ¿Está vigente? (no expired)
- ¿Es cualificado? (firmado por autoridad reconocida)
Registrar Nuevo Certificado
Una vez tengas el archivo .p12:
1. Copiar a una ubicación segura
cp micertificado.p12 ./data/certs/
2. Actualizar config.yml
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:
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
# Detener API
taskkill /F /IM main.exe
# Iniciar
go run main.go
5. Probar
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:
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.pymanualmente para ver el error
Siguientes Pasos
- Obtener certificado de pruebas FNMT
- Registrar en la API
- Probar con
python test_invoice.py - 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
- Portal AEAT Pruebas: https://preportal.aeat.es
- Sede AEAT: https://sede.agenciatributaria.gob.es