PS PrestaShop Iniciante

dfsavecart: guardar o carrinho por ligação mágica

Instalação, configuração e utilização do módulo de guardar o carrinho por ligação mágica para PrestaShop 8 e 9.

Atualizado Versão do módulo 1.0.0

Apresentação

O dfsavecart acrescenta uma funcionalidade « Guardar para mais tarde » à página do carrinho da sua loja PrestaShop 8 ou 9. O visitante, autenticado ou convidado, introduz o seu endereço de e-mail e recebe uma ligação segura (« ligação mágica ») que restaura o seu carrinho exato, mesmos produtos, mesmas quantidades, em qualquer dispositivo, a qualquer momento durante o período de validade configurado.

O módulo não é intrusivo: não afeta o funil de encomenda, nem o checkout, nem os outros módulos. Funciona com o sistema de e-mail nativo do PrestaShop (e portanto com o seu SMTP existente).

Os modelos de e-mail são fornecidos em francês, inglês, espanhol e alemão. Numa loja em português, crie a pasta modules/dfsavecart/mails/pt/ (ou, de preferência, a pasta mails do seu tema) com savecart.html e savecart.txt traduzidos, caso contrário o cliente recebe o e-mail em inglês. As cadeias do bloco do carrinho traduzem-se em Internacional → Traduções.

Pré-requisitos

  • PrestaShop 8.0.x a 9.x
  • PHP 8.1 ou superior
  • MySQL 5.7+ ou MariaDB 10.3+
  • Um envio de e-mail funcional (Parâmetros avançados > E-mail: teste o envio antes de instalar o módulo)

Instalação

  1. Descarregue o ficheiro dfsavecart.zip a partir da sua conta DataFirefly.
  2. No back-office PrestaShop, vá a Módulos > Gestor de módulos.
  3. Clique em Carregar um módulo e selecione o ZIP.
  4. O PrestaShop instala o módulo automaticamente: a tabela ps_df_savecart é criada e os hooks são registados.
  5. Clique em Configurar para aceder às definições.

Não é instalado nenhum override de classe nem de controlador: a desinstalação é limpa e sem resíduos (a tabela e as configurações são eliminadas).

Configuração

Todas as definições estão numa única página: Módulos > Gestor de módulos > dfsavecart > Configurar.

Definições principais

  • Ativar o módulo: interruptor geral. Desativado, o bloco desaparece do front-office sem desinstalar.
  • Posição do botão: Rodapé do carrinho (recomendado, hook displayShoppingCartFooter), No carrinho (hook displayShoppingCart) ou Ambos. A escolha depende do seu tema: teste a renderização na página do carrinho depois da alteração.
  • Duração de validade da ligação: de 1 a 365 dias, 30 por defeito. Depois disso, a ligação expira e a entrada é purgada.

Segurança e antispam

  • Limite por e-mail / dia: número máximo de envios para um mesmo endereço em 24 h deslizantes (10 por defeito). Coloque 0 para desativar. O contador assenta num hash com salt do e-mail: o endereço não é guardado em claro para esta função.
  • Ligação de utilização única: se ativado, a ligação torna-se inválida depois do primeiro restauro. Útil para carrinhos de caráter confidencial (B2B, orçamentos).

Comportamento do restauro

  • Esvaziar o carrinho atual antes do restauro: ativado por defeito. Se desativado, os produtos da ligação são acrescentados ao carrinho em curso (acumulação).

RGPD e e-mail

  • Pedir um consentimento RGPD: mostra uma caixa de seleção obrigatória antes do envio (ativado por defeito, recomendado).
  • Enviar em cópia oculta ao comerciante: acrescenta o e-mail de contacto da loja em BCC em cada envio, para acompanhamento interno.
  • Assunto do e-mail (por idioma): personalizável para cada idioma ativo da loja. Variáveis disponíveis: {shop_name} e {firstname}.

Funcionamento do lado do cliente

  1. O cliente adiciona produtos ao seu carrinho e abre a página do carrinho.
  2. Vê o bloco « Guardar este carrinho para mais tarde » com um campo de e-mail (pré-preenchido se estiver autenticado).
  3. Introduz o seu e-mail, marca o consentimento se pedido e clica em Enviar a ligação.
  4. Recebe um e-mail com um resumo do carrinho (produtos, quantidades, total estimado), a data de expiração e um botão Restaurar o meu carrinho.
  5. Um clique no botão restaura o carrinho exato e redireciona para a página do carrinho, com uma mensagem de confirmação.

Casos particulares no restauro

  • Produto desativado ou eliminado: a linha é ignorada e o cliente é informado por uma mensagem que lista os produtos indisponíveis.
  • Stock insuficiente: a quantidade é ajustada ao máximo disponível, com uma mensagem a assinalar o ajuste.
  • Ligação expirada ou já usada (modo de utilização única): aparece uma página de erro sóbria, com ligações para o carrinho atual e para a página inicial.
  • Idioma e moeda: são restaurados os do carrinho de origem.

E-mails

Os modelos HTML e de texto são fornecidos em francês, inglês, espanhol e alemão em modules/dfsavecart/mails/{iso}/savecart.html e savecart.txt. O idioma usado é o do carrinho no momento da gravação.

Variáveis disponíveis nos modelos: {firstname}, {shop_name}, {restore_link}, {cart_items_html}, {cart_items_txt}, {cart_total}, {expiry_date}.

Para personalizar os modelos de forma duradoura, duplique-os na pasta mails do seu tema em vez de modificar os do módulo: seriam apagados na atualização.

Segurança

  • Token de 256 bits: gerado por random_bytes(32), o gerador criptograficamente seguro do PHP. 64 caracteres hexadecimais no URL.
  • Armazenamento em hash: só a impressão SHA-256 do token é guardada na base de dados. Em caso de comprometimento da base de dados, nenhuma ligação pode ser reconstruída.
  • CSRF: o endpoint AJAX de gravação verifica o token de sessão do PrestaShop.
  • Validação estrita: o formato do token é verificado do lado do servidor ([a-f0-9]{64}) antes de qualquer pedido à base de dados.

RGPD

  • Consentimento explícito configurável antes do envio do e-mail.
  • Para a limitação antispam, o e-mail não é conservado em claro: só é usado um hash com salt (com a chave secreta da loja).
  • Os registos expirados são eliminados automaticamente (purga): ver secção seguinte.
  • Nenhum dado é transmitido a um serviço de terceiros: tudo fica na sua base de dados PrestaShop.
  • Em caso de pedido de apagamento de um cliente, elimine as suas linhas na tabela ps_df_savecart (coluna email).

Purga das ligações expiradas

Três opções, da mais simples à mais automatizada:

  1. Botão manual: na página de configuração do módulo, « Purgar as entradas expiradas ».
  2. Módulo CronJobs: instale o módulo gratuito CronJobs do PrestaShop: o hook actionCronJob do módulo é chamado automaticamente e desencadeia a purga.
  3. Crontab do sistema: agende uma chamada regular ao cron da sua loja segundo a configuração do seu servidor.

Estatísticas

A página de configuração mostra quatro contadores em tempo real: total registados, ativos (não expirados), expirados (à espera de purga) e restaurados (ligações usadas pelo menos uma vez). O rácio restaurados / total dá-lhe a taxa de conversão da funcionalidade.

Multiloja

O módulo é compatível com multiloja: cada gravação memoriza o identificador da loja de origem, usado no restauro. A configuração é feita por contexto de loja padrão do PrestaShop.

Resolução de problemas

O e-mail não chega

  • Verifique o envio de e-mail global da loja: Parâmetros avançados > E-mail > Testar o envio.
  • Verifique a pasta de spam do destinatário.
  • Consulte os registos: Parâmetros avançados > Registos (os erros do módulo têm o prefixo [dfsavecart]).

O bloco não aparece na página do carrinho

  • Verifique que o módulo está ativado na sua configuração.
  • Verifique que o carrinho contém pelo menos um produto (o bloco é ocultado com o carrinho vazio).
  • Verifique a posição escolhida: alguns temas não implementam o hook displayShoppingCartFooter; passe então a « No carrinho » ou « Ambos ».
  • Limpe a cache: Parâmetros avançados > Desempenho > Limpar a cache.

Mensagem « Token de segurança inválido »

  • A página do carrinho ficou aberta demasiado tempo e a sessão expirou: atualize a página e tente de novo.

Mensagem « Demasiados pedidos para este endereço »

  • O limite antispam diário foi atingido para este e-mail. Aumente o limite na configuração ou espere 24 h.

Desinstalação

A desinstalação elimina a tabela ps_df_savecart (todos os carrinhos guardados são perdidos) e o conjunto das chaves de configuração. Não fica nenhum resíduo na base de dados nem nos ficheiros.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte