Funcionalidad y Seguridad del Plugin WP Verifactu for WooCommerce
🎯 Objetivo del día
Convertir los requisitos legales identificados en el Día 32 en acciones funcionales concretas que el plugin deberá implementar. Además, se definirá el conjunto de mecanismos de seguridad, tanto para proteger los datos como para cumplir con los estándares exigidos por la AEAT.
Este análisis se traducirá después en interfaces de usuario, lógica de backend, estructuras de base de datos y medidas defensivas en el código.
1. 🧩 Análisis funcional general
Debes responder a: ¿Qué hace exactamente el plugin WP Verifactu?
Piensa en términos de funciones, pantallas, botones, usuarios y procesos.
📌 Funcionalidades mínimas esperadas:
- Configuración del plugin
- Página de ajustes en WordPress.
- Configuración de claves API para conectar con el WebService intermediario (token JWT o API Key).
- Parámetros: Activar/desactivar envío, modo pruebas/productivo, logs, visibilidad.
- Registro automático de facturas
- Captura en tiempo real de cada pedido confirmado en WooCommerce.
- Extracción de los datos exigidos (NIF, importe, fecha, ID factura…).
- Envío automático al WebService que conecta con la AEAT.
- Registro de respuesta: éxito o error, con log detallado.
- Gestión de errores
- Registro de errores en base de datos o log file.
- Reintentos automáticos.
- Posibilidad de reenvío manual desde interfaz.
- Historial de envíos
- Tabla con registros enviados: fecha, estado, ID, botón “ver respuesta”.
- Soporte multicliente / multisite (opcional)
- En el futuro: adaptabilidad para agencias o instalaciones multisite.
2. 👮 Requisitos de seguridad
Según los estándares de la programación segura en PHP/JS y la normativa de la AEAT, se deben aplicar las siguientes defensas:
🛡️ Validación y sanitización
- Validar y limpiar cada entrada antes de procesar (formulario de config, metacampos de pedido, datos del cliente).
- Escapar variables al mostrarlas (
esc_html
,esc_attr
,wp_kses
en HTML).
🔐 Autenticación y comunicación
- La API intermediaria debe usar conexión segura TLS 1.2+ (HTTPS obligatorio).
- Uso de tokens JWT o API keys para autenticar cada envío.
- Debe existir una opción para regenerar la clave en caso de compromiso.
📁 Almacenamiento seguro
- Si se guardan logs o respuestas JSON, hacerlo fuera del directorio público (
wp-content/uploads/verifactu-logs/
con.htaccess
que bloquee acceso). - Cifrar tokens y claves sensibles en la base de datos (
openssl_encrypt
o similar, con claves generadas en instalación).
🧩 Prevención de ataques
- Protección contra CSRF en formularios admin (
wp_nonce_field
). - Filtro de roles: solo
manage_options
o rol equivalente accede a config. - Evitar inyección de código PHP o JS en cualquier entrada (cabeceras, campos personalizados…).
- Si hay conexión directa a BD externa, evitar inyección SQL con consultas preparadas (
$wpdb->prepare
).
3. 🧠 Casos de uso realistas
Plantea algunos casos de uso comunes para validar tu plugin:
- ✔️ El cliente realiza una compra → WooCommerce confirma el pedido → se genera una factura → el plugin la envía automáticamente a AEAT → se recibe acuse.
- ❌ El pedido falla o se cancela → no se registra ninguna factura.
- ⚠️ La API responde error → se guarda error y permite reenviar más tarde.
- 🔧 El usuario entra en ajustes → cambia clave de API → nuevos envíos la usan.
4. 📋 Tarea para el alumno: Documento de requisitos funcionales + seguridad
Tu entrega del Día 33 debe incluir:
- 🧾 Una lista clara y numerada de todas las funciones que tendrá el plugin (pestañas, pantallas, procesos automáticos, botones, etc).
- 🛡️ Lista clara de todas las medidas de seguridad que vas a implementar.
- 📊 Mini esquema de los roles involucrados (admin WP, operador, API).
- 🔍 Cómo vas a registrar logs de errores, y cómo se recupera información.
- 📦 ¿Qué pasa si el envío falla? ¿Cómo lo reintentas?
Puedes hacerlo en PDF o documento estructurado en Markdown.
🎓 Recomendación para inspirarte
Consulta otros plugins similares en el repositorio oficial de WordPress. Por ejemplo, plugins como:
Examínalos para inspirarte en sus menús, pantallas y funciones.
✍️ Avance hacia el Día 34
Mañana nos centraremos en la lógica del negocio, el modelo de ingresos del plugin WP Verifactu, cómo diferenciar una versión gratuita de una premium (SaaS), y los pasos para registrar este plugin en el repositorio oficial de WordPress, así como la estrategia de comunicación y publicación.