Módulo de PrestaShop para añadir un checkbox de consentimiento obligatorio en el proceso de checkout para productos de categorías específicas.
Este módulo añade un checkbox obligatorio en el checkout de PrestaShop cuando el carrito contiene productos de categorías específicas que hayas configurado. El texto del consentimiento es totalmente personalizable desde el backoffice.
Características principales:
- ✅ Checkbox obligatorio que bloquea la finalización del pedido
- ✅ Texto del consentimiento 100% personalizable
- ✅ Selección de múltiples categorías afectadas
- ✅ Compatible con clientes registrados e invitados (guest checkout)
- ✅ Validación tanto en frontend (JavaScript) como backend (PHP)
- ✅ Registro automático del consentimiento en cada pedido
- ✅ Sistema robusto con múltiples capas de protección
- ✅ Logs detallados para debugging y auditoría
- Productos reacondicionados - Sin derecho a devolución
- Políticas especiales - Términos específicos de devolución/cambio
- Advertencias de productos - Productos peligrosos o con restricciones
- Productos bajo pedido - Condiciones especiales de entrega
- Avisos legales - Aceptación de términos por categoría
- Categorías especiales - Cualquier consentimiento necesario antes de comprar
- Ve a Releases
- Descarga el archivo
atechrefurbconsent-v2.0.0.zip - En tu backoffice de PrestaShop:
- Ve a Módulos → Subir un módulo
- Arrastra el ZIP o selecciónalo
- Haz clic en Instalar
- Clona este repositorio o descarga el ZIP:
git clone https://github.com/vamlemat/atechrefurbconsent.git-
Sube la carpeta
atechrefurbconsenta/modules/de tu PrestaShop -
En el backoffice:
- Ve a Módulos → Módulos y servicios
- Busca "Consentimiento Obligatorio en Checkout"
- Haz clic en Instalar
- Ve a Módulos → Consentimiento Obligatorio en Checkout → Configurar
- Selecciona las categorías que requieren el consentimiento
- Puedes seleccionar múltiples categorías usando el árbol de categorías
- En el campo "Texto del checkbox", escribe el mensaje que verá el cliente
- El texto admite HTML básico para formato:
<strong>ACEPTO</strong> que los productos reacondicionados
<u>no tienen devolución ni cambio</u>.- Haz clic en Guardar
El checkbox aparecerá automáticamente en el checkout cuando:
- El carrito contenga productos de las categorías seleccionadas
- El cliente esté en el proceso de finalizar la compra
┌─────────────────────────────────────────┐
│ 1. Cliente añade producto al carrito │
│ (de categoría configurada) │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 2. Aparece checkbox en checkout │
│ "CONDICIÓN OBLIGATORIA: [tu texto]" │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 3. Botón "Confirmar" deshabilitado │
│ hasta marcar el checkbox │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 4. Cliente marca checkbox │
│ → Se guarda vía AJAX en BD │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 5. Cliente confirma pedido │
│ → Validación en servidor │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 6. Pedido creado ✅ │
│ → Mensaje privado con consentimiento │
└─────────────────────────────────────────┘
- JavaScript - Deshabilita el botón hasta marcar el checkbox
- AJAX - Guarda el consentimiento en base de datos
- PHP Backend - Valida en servidor antes de crear el pedido
- Registro - Guarda mensaje privado en el pedido para auditoría
Si alguien intenta burlar el JavaScript (inspeccionando elemento), la validación del servidor lo bloqueará.
- PrestaShop: 1.7.0 o superior
- PHP: 7.0 o superior
- MySQL: 5.6 o superior
- ✅ PrestaShop 1.7.0 - 1.7.8
- ✅ Guest checkout (compra sin registro)
- ✅ One Page Checkout (OPC)
- ✅ Checkout estándar de PrestaShop
- ✅ Múltiples métodos de pago
- ✅ Temas personalizados
- ✅ Multidioma
Causa: El producto no está en una categoría configurada.
Solución:
- Verifica que el producto esté en una de las categorías seleccionadas en la configuración
- Limpia la caché:
rm -rf var/cache/* - Verifica los logs en Configuración avanzada → Logs
Causa: El consentimiento no se guardó correctamente.
Solución:
- Abre la consola del navegador (F12)
- Marca el checkbox y busca mensajes
[ARC] - Si ves errores, verifica:
- Que el cliente esté logueado (o sea invitado con carrito válido)
- Que la tabla
ps_arc_consentexista - Los logs del servidor
Causa: El JavaScript no encuentra el botón de confirmación.
Solución:
- Abre la consola (F12) y busca:
[ARC] Botón encontrado - Si dice "no encontrado", el tema usa un selector diferente
- Contacta con soporte o abre un issue con detalles de tu tema
atechrefurbconsent/
├── atechrefurbconsent.php # Clase principal del módulo
├── config.xml # Metadatos del módulo
├── index.php # Archivo de seguridad
├── controllers/
│ ├── front/
│ │ ├── save.php # Controlador AJAX
│ │ └── index.php
│ └── index.php
└── views/
├── js/
│ ├── checkbox.js # Lógica frontend
│ └── index.php
├── templates/
│ └── hook/
│ ├── checkout_checkbox.tpl # Template del checkbox
│ └── index.php
└── index.php
displayCheckoutSummaryTop- Muestra el checkbox en el resumen del checkoutdisplayPaymentTop- Muestra el checkbox en el paso de pagoactionFrontControllerSetMedia- Carga el JavaScript en checkoutactionValidateOrder- Valida el consentimiento antes de crear el pedidoactionObjectOrderAddAfter- Guarda el mensaje privado después de crear el pedido
Tabla: ps_arc_consent
| Campo | Tipo | Descripción |
|---|---|---|
id_arc |
INT | ID autoincremental |
id_cart |
INT | ID del carrito |
accepted |
TINYINT(1) | 1 = aceptado, 0 = no aceptado |
date_add |
DATETIME | Fecha de aceptación |
¡Las contribuciones son bienvenidas!
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Primera versión estable
- ✨ Módulo renombrado a "Consentimiento Obligatorio en Checkout"
- ✅ Sistema completamente funcional y probado
- ✅ Compatible con guest checkout
- 🐛 Corregido error "headers already sent"
- 🐛 Corregido error "Customer not logged"
- 🐛 Resuelto problema de DELETE que borraba consentimientos
- 🐛 Eliminadas race conditions entre hooks
- 📝 Logs detallados añadidos
- 🔒 Protección contra múltiples ejecuciones
- 🚀 Sistema de fallback JavaScript robusto
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Atech
Desarrollado con ❤️ para la comunidad PrestaShop
Si este módulo te resulta útil, considera:
- ⭐ Darle una estrella en GitHub
- 🐛 Reportar bugs que encuentres
- 💡 Sugerir mejoras
- 🤝 Contribuir con código
- 📢 Compartirlo con otros desarrolladores PrestaShop
¡Gracias por usar Consentimiento Obligatorio en Checkout! 🚀


