PS PrestaShop Principiante

Módulo de sorteos y concursos para PrestaShop 8 y 9: documentación

Instalar, configurar y gestionar un sorteo con participación por compra o formulario, invitaciones, sorteo verificable y reclamación del premio.

Actualizado Versión del módulo 1.3.0

Presentación

El módulo dfcontest añade sorteos y concursos a tu tienda PrestaShop 8 o 9. Los clientes participan automáticamente al hacer un pedido, o gratis mediante un formulario. El sorteo es verificable: cualquier visitante puede repetir el cálculo y obtener los mismos ganadores. El módulo genera las bases, envía los emails a los ganadores y recoge su dirección de envío.

Instalación

  1. En el back office, abre Módulos > Gestor de módulos y haz clic en Subir un módulo.
  2. Sube el archivo dfcontest-x.y.z.zip y haz clic en Instalar.
  3. Aparece el menú Clientes > Concursos. Los ajustes generales están en la página de configuración del módulo.

Para actualizar, sube la nueva versión: los scripts de actualización añaden las columnas y los ajustes que faltan sin tocar tus sorteos ni tus participaciones.

Configuración del módulo

Organizador

Indica la razón social, el domicilio social, el número de registro de la empresa (CIF, SIRET, Handelsregister, KvK…) y el email de contacto para los participantes. Estos datos se usan en las bases generadas y en los emails.

Visualización

  • Nombre de los ganadores en las páginas públicas: solo iniciales (J. G.) o nombre e inicial (Juan G.).
  • Mostrar el sorteo en las fichas de los productos participantes y mostrar las participaciones obtenidas en el carrito, con el importe que falta para la siguiente participación.
  • Color de acento: color de la cuenta atrás, los recuadros y los bordes. Déjalo vacío para el verde por defecto; los botones mantienen los colores de tu plantilla.
  • Justificante de participación por email: código de participación y enlace para compartir, enviados en cuanto una participación por formulario es válida.
  • Destacar el sorteo en curso en la página de inicio (hook displayHome).

Protección contra el fraude

La opción Rechazar direcciones de email desechables bloquea los principales servicios de email temporal (Yopmail, Mailinator, 10 Minute Mail, Guerrilla Mail y otros). El campo Otros dominios bloqueados admite un dominio por línea; también se bloquean los subdominios.

Tareas automáticas (cron)

La página de configuración muestra una URL cron firmada. Solo es necesaria para el piloto automático (ver más abajo). Llámala cada 5 a 15 minutos, por ejemplo:

*/10 * * * * curl -s "https://tu-tienda.es/module/dfcontest/cron?token=TU_TOKEN" > /dev/null

La fecha de la última ejecución se muestra debajo de la URL.

Crear un sorteo

Abre Clientes > Concursos y luego Nuevo sorteo. El formulario está dividido en pestañas.

General

  • Nombre, URL amigable, descripción y premio (describe cada premio y su valor comercial: este texto se incluye en las bases).
  • Imagen: JPG, PNG o WebP, 4 MB como máximo, 1600 px de ancho recomendados.
  • Inicio, fin y fecha del sorteo anunciada.
  • Destacar en la página de inicio: si hay varios sorteos en curso, se muestra el que termina antes.

Cómo participar

Activa la participación con compra, por formulario o ambas. El máximo de participaciones por participante cuenta juntas las compras, el formulario y las participaciones extra por invitación, por dirección de email.

Participaciones por compra

  • 1 participación por pedido o 1 participación por tramo de importe (IVA incluido, en la moneda por defecto).
  • Importe mínimo del pedido y participaciones máximas por pedido.
  • ID de los productos participantes y categorías participantes: si los indicas, solo cuenta el importe de esos productos, con los descuentos repartidos proporcionalmente. Déjalos vacíos para todo el catálogo.

La participación se crea cuando el pedido pasa a un estado pagado durante el periodo del sorteo. Se retira si el pedido se cancela, se reembolsa o tiene un error de pago, mientras las participaciones no estén selladas. Un pedido dividido en varios envíos cuenta como un solo pedido.

Participaciones por formulario

  • Cuenta de cliente obligatoria: reserva el formulario a los clientes conectados.
  • Confirmación por email (recomendado): los invitados reciben un enlace y su participación solo cuenta una vez confirmada.
  • Número de teléfono: oculto, opcional u obligatorio.
  • Pregunta: pregunta libre cuya respuesta se guarda y se exporta.
  • Casilla de alta en la newsletter: desmarcada por defecto.
  • Participaciones extra por amigo invitado y máximo de participaciones extra por participante: activa las invitaciones (0 las desactiva).

Sorteo

  • Número de ganadores y número de suplentes (sorteados por orden tras los ganadores).
  • Un premio por persona: si un participante sale por segunda vez, se descarta.
  • Piloto automático: sellado en la fecha de fin, sorteo en la fecha anunciada, emails a los ganadores (requiere la URL cron).
  • Sustituir a los ganadores que no reclaman a tiempo: al terminar el plazo, el ganador se marca como renuncia y el siguiente suplente recibe el email (requiere la URL cron).
  • Días para reclamar el premio.

La huella del sorteo se crea al guardar el sorteo por primera vez y ya no puede cambiar. Tras el sellado, las fechas, los ajustes de participación y el número de ganadores quedan bloqueados.

Bases

Si lo dejas vacío, se generan unas bases de 9 artículos a partir de los ajustes del sorteo y de los datos del organizador. Puedes escribir tu propio texto con las variables {organizer}, {contest_name}, {date_start}, {date_end}, {draw_date}, {nb_winners}, {prize}, {claim_days}, {verify_url}, {commitment} y las demás que aparecen en la pestaña.

Las bases generadas son una plantilla. Haz que se revisen según la ley de cada país donde se abre el sorteo, en particular sobre la obligación de ofrecer una participación sin compra.

En la tienda

  • /contests: lista de sorteos en curso, próximos y terminados.
  • Página del sorteo: cuenta atrás, premios, formas de participar, formulario y, una vez inscrito, código de participación, número de participaciones y enlace para compartir. Tras el sorteo: lista de ganadores y aviso «Has ganado» para el visitante afectado.
  • /rules: bases imprimibles. /draw: página de verificación.
  • Ficha de producto y carrito: aviso en los productos participantes y mensaje de progreso.
  • Confirmación del pedido: participaciones obtenidas con su código.
  • Mi cuenta > Mis participaciones en sorteos: historial, estado y botón para reclamar el premio si se ha ganado.
  • Widget: en la página de inicio, o en cualquier lugar con {widget name="dfcontest"} o {widget name="dfcontest" id_contest=3}.

Desarrollo del sorteo

El panel del sorteo (botón Ver en la lista) presenta el sorteo en 4 pasos.

  1. Huella publicada: la huella SHA-256 de la clave secreta es pública desde la creación del sorteo.
  2. Sellar las participaciones: disponible tras la fecha de fin. La lista de participaciones válidas se congela y se publica su huella. En ese mismo momento, el módulo se compromete con una ronda futura de drand, la aleatoriedad pública de la League of Entropy, publicada unos dos minutos después, o tras la fecha del sorteo anunciada.
  3. Realizar el sorteo: en cuanto se publica el valor de la ronda, el módulo lo obtiene y sortea los ganadores y después los suplentes. Si tu servidor no puede acceder a drand, abre el enlace drand indicado, copia el valor randomness y pégalo en el campo previsto.
  4. Avisar a los ganadores: cada ganador recibe un email en el idioma de su participación, con un enlace para aceptar el premio e indicar su dirección antes de que termine el plazo.

Seguimiento de la entrega de premios

La tabla de ganadores indica para cada uno: reclamado (con la dirección de envío), esperando respuesta o plazo vencido. El botón Reenviar vuelve a enviar el email y reinicia el plazo. Marcar como renuncia retira el premio al ganador y lo pasa al primer suplente disponible; después vuelve a enviar los emails para avisarle. Cuando un ganador reclama su premio, el email de contacto del organizador recibe sus datos.

Página de verificación

La página /draw publica la huella de la clave, la huella de la lista, la ronda drand y después la clave, el valor público, la semilla y los ganadores. Un participante puede buscar su código en la lista sellada y lanzar la comprobación en su navegador, que verifica cada paso sin enviar nada a la tienda. El archivo de prueba JSON se descarga desde la página y desde el panel.

Piloto automático

Para un sorteo con la opción Piloto automático, cada ejecución del cron:

  • sella las participaciones cuando ha pasado la fecha de fin;
  • realiza el sorteo cuando se alcanza la fecha anunciada y el valor drand está publicado, y después envía los emails a los ganadores;
  • si la opción de sustitución está activa, marca como renuncia a los ganadores cuyo plazo ha vencido sin reclamación y avisa al siguiente suplente.

El cron no afecta a los sorteos sin piloto automático. Puede ejecutarse tan a menudo como quieras.

Exportaciones y datos personales

  • Exportar ganadores (CSV): puesto, código, datos de contacto, origen, boleto sorteado, respuesta, fecha de aviso, estado de la reclamación y dirección de envío.
  • Exportar participaciones (CSV): todas las participaciones con su estado, su origen y el consentimiento para la newsletter.
  • Con el módulo oficial psgdpr, la supresión de un cliente anonimiza sus participaciones y retira las de los sorteos no sellados; la exportación RGPD incluye sus participaciones y su reclamación del premio.

Solución de problemas

Un pedido pagado no ha creado ninguna participación

PrestaShop omite los hooks de un módulo cuando el perfil del empleado que cambia el estado no tiene permiso para ver ese módulo. En el panel del sorteo, el botón Revisar pedidos recorre los pedidos pagados del periodo y crea las participaciones que faltan.

Un invitado no recibe el email de confirmación

En la página del sorteo aparece el botón Reenviar el enlace para una participación pendiente (un envío cada dos minutos como máximo). Revisa también la configuración de email de la tienda.

El sorteo no arranca

El valor de la ronda drand solo se publica a la hora indicada en el panel. Pasada esa hora, si drand sigue sin estar accesible desde el servidor, pega el valor randomness copiado desde el enlace drand.

El cron no hace nada

Comprueba que el sorteo tiene activada la opción Piloto automático y que la tienda no está en modo mantenimiento, que también bloquea la URL cron. En multitienda, llama a la URL cron de cada tienda.

¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte