pagseguro / pagseguro-modulo-prestashop

Módulo de Checkout Transparente para integração com PrestaShop 1.6, 1.7 e 8.0 - Oficial PagBank
Open Software License 3.0
50 stars 92 forks source link

Problema com erro de JS na tela do checkout (loja sem padrão de cadastro brasileiro) #95

Closed r7jacob closed 4 years ago

r7jacob commented 4 years ago

Olá,

Estamos instalando o PagSeguroPro para uma cliente e notamos uma falha no checkout dela:

image

Em especial nesta linha aqui:

image

Teriam uma solução para este problema?

prestabr commented 4 years ago

Boa Noite r7jacob,

Obrigado por utilizar o módulo oficial da PagSeguro!

Este erro "Unexpected token < in json at position 0" é bem genérico e geralmente indica algum conflito/travamento de JavaScript originado em alguma área do layout, módulos ou scripts externos configurados na loja (gtm, analytics, adwords, campanhas de mkt no geral, etc).

Imagina que o JavaScript funciona dessa forma:

Processo A - arquivos .js do tema Processo B - arquivos .js externos Processo C - arquivos .js do módulo pagseguropro

Se algum conflito existir no processo A ou B o processo C não vai funcionar direito e vai apresentar problema.

Confere essas dicas:

a) Acessa as configurações do módulo e, verifica se a opção "Exibir parâmetros no Console do navegador?" está habilitada. Confere essas orientações: https://github.com/pagseguro/prestashop/tree/master/1.6.x/checkout-transparente/pagseguropro#6---debug-para-solu%C3%A7oes-de-problemas

b) Verifique se o token é de produção e o ambiente também;

c) Verifique se as tabelas do banco de dados "ps_pagseguropro" e "ps_pagseguropro_logs" estão corretamente instaladas;

d) Verifique se as permissões dos arquivos em sua hospedagem estão configuradas corretamente, o ideal é 755 para diretórios e 644 para arquivos.

e) Acesse no Back Office a tab “Parâmetros Avançados > Desempenho > CCC (COMBINAÇÃO, COMPRESSÃO E CACHE)”.

Marque as opções “Cache inteligente para JavaScript”, “Comprimir JavaScript inline em HTML” e “Mover o JavaScript para o final” como Não. Também limpe o cache no botão que fica no canto superior direito dessa tab, com o nome "Limpar cache".

É comum tem algum detalhe de JavaScript customizado no tema da loja, que não segue as melhores práticas de desenvolvimento, e acabam não suportanto as otmizações que o CCC proporcionam - gerando conflitos diversos e travamentos diversos.

Confere estes posts também:

https://github.com/pagseguro/prestashop/issues/88#issuecomment-626994811

https://github.com/pagseguro/prestashop/issues/49

Importante:

Para evitar problemas com o processamento do pagamento sugerimos que torne obrigatório os seguintes campos no cadastro do cliente: cpf, endereço, numeral do endereço, bairro, cidade, estado, telefone ou celular.

Lembrando que o cpf é sempre obrigatório para vendas via cartão de crédito, independente se o cliente é PF ou PJ.

Atenciosamente, Equipe PrestaBR

rogernascimento commented 4 years ago

Olá Equipe PrestaBR, eu sou o proprietário da loja, fiz estas alterações sugeridas, mas persiste o mesmo problema. A loja PS é uma instalação nova! E o tema é Padrão.

prestabr commented 4 years ago

Boa Tarde rogernascimento,

Tendo a certeza que o tema é padrão e a PrestaShop está em uma instalação limpa, então, temos que olhar para os requisitos mínimos de hospedagem.

Você já conseguiu resolver os problemas de migração e compatibilidade de php?

Issue: https://github.com/pagseguro/prestashop/issues/88

Lembrando que os módulos disponibilizados aqui no Git são testados e homologados, usados amplamente em produção por muitas lojas.

Atenciosamente, Equipe PrestaBR

rogernascimento commented 4 years ago

Fizemos um debug (há como fazer o teste lá) e no momento de finalizar aponta erros nas linas 282 e 283 do .../pagseguropro/pagseguropro.php

    'number_invoice' => $address->{$this->number_field},
    'compl_invoice' => $address->{$this->compl_field},
prestabr commented 4 years ago

Olá rogernascimento,

Fizemos um debug (há como fazer o teste lá) e no momento de finalizar aponta erros nas linas 282 e 283 do .../pagseguropro/pagseguropro.php

  'number_invoice' => $address->{$this->number_field},
  'compl_invoice' => $address->{$this->compl_field},

Essas linhas indicam o numeral do endereço no cadastro do cliente. Você pode utilizar um módulo para adaptar o cadastro do cliente para o padrão brasileiro, o pagseguropro é compatível com a maioria.

Se preferir você pode customizar o cadastro via override na classe Address, é só especificar o numeral do endereço em um desses campos: company ou numend ou compl ou other.

Importante revisar...:

Para evitar problemas com o processamento do pagamento sugerimos que torne obrigatório os seguintes campos no cadastro do cliente: cpf, endereço, numeral do endereço, bairro, cidade, estado, telefone ou celular.

Atenciosamente, Equipe PrestaBR

rogernascimento commented 4 years ago

Não compreendi, o módulo do PagSeguro não deveria ter um tratamento para estes casos (vazio ou nulo)? Bem... estou fazendo esta pergunta com base na resposta de vocês, pelo o que eu entendi vocês estão entendendo que vieram campos vazios ou nulos. Foi isto?

prestabr commented 4 years ago

Olá rogernascimento,

O módulo apenas captura esses campos na tela de checkout a partir do endereço que o cliente cadastrou previamente.

Esses campos não podem ser vazios ou nulos e são de responsabilidade da loja, faz parte das configurações básicas do cadastro do cliente no sistema. A loja ter os campos obrigatórios e disponíveis no cadastro é fundamental, tanto para processar o pagamento quanto para eventual futura emissão de NF-e no pedido.

Pelo seu último comentário parece que os campos estão em branco, se for esse o caso, você deve tratar os campos no momento do cadastro do endereço.

Se não for esse o problema passa os detalhes pra gente analisar. Neste momento você já está analisando o payload de pagamento no log?

Atenciosamente, Equipe PrestaBR

rogernascimento commented 4 years ago

Vou verificar se estão indo vazios ou nulos. Mas vocês deveriam validar e informar o usuário, não apenas travar! Poderiam melhorar a programação. Outra... a instalação nativa do PagSeguro não tem estes campos que vocês precisam, mas em nenhum momento vocês comentam que é um requisito do módulo de vocês que se tenha um módulo a parte não nativo que adicione estes campos!

prestabr commented 4 years ago

Olá rogernascimento,

Agradecemos o seu feedback!

Já temos em nossa agenda esse feedback também, confere: https://github.com/pagseguro/prestashop/issues/89#issuecomment-627315141

Na próxima upgrade dos módulos da 1.6 e 1.7 vamos lançar multiplas validações e alertas na tela de configuração do módulo, para ensinar e orientar o lojista a lançar as configurações mínimas da loja antes de tentar processar qualquer pagamento.

Atenciosamente, Equipe PrestaBR