r-martins / PagSeguro-Magento-Transparente

Módulo de checkout transparente para Pagseguro - com api v. 2.0
GNU General Public License v2.0
66 stars 53 forks source link

Problema pra finalizar compra com IWD Checout Suite 6.0.10 #298

Closed LuizSantos22 closed 3 years ago

LuizSantos22 commented 3 years ago

Olá, Ricardo, tudo bem?

Estou fazendo testes com seu módulo PagSeguro M1 e o OpenMage 1.9.4.14 (uma fork do Magento 1.9) e estou com um problema estranho, que está ocorrendo apenas com o seu módulo, o do MercadoPago está funcionando.

Pra saber se era pelas modificações ou conflitos com outros plugin ou não, eu fiz a instalação limpa num ambiente para testes (se necessário, me comunique e te passo o link).

Passos para reproduzir o problema Uma instalação nova com pelo menos um produto simples criado: Segue o link dos arquivos da OpenMage 1.9.4.13: https://github.com/OpenMage/magento-lts/releases/tag/v19.4.13

Instalação do plugin IWD Checkout Suite (antigo IWD One Step Checkout): https://www.iwdagency.com/products/checkout-suite-m1

Configure ambos, preencha os dados e tente finalizar a compra usando o PagSeguro com o cartão

Aparecerá uma mensagem de erro solicitando para que todos os campos sejam preenchidos. Mas eles já estão.

A seguir, clique novamente em Place Order, a compra se realizará normalmente.

r-martins commented 3 years ago

Oi, @LuizSantos22 . Tudo bom? Temos uma loja demo com IWD checkout em http://pagseguro-exemplo-iwd.ricardomartins.net.br/ Poderia só revisar se suas configurações estão parecidas com as dessa loja a fim de identificar algo errado antes de fazermos um novo setup?

LuizSantos22 commented 3 years ago

@r-martins Eu mandei um e-mail pra você mas parece que retornou com um erro falando sobre algo de bots ou algo assim. Tentei acessar o link mencionado acima, mas não tenho as credenciais do admin, pode passar por aqui ou só via e-mail?

Eu testei a compra com números de cartões gerados aleatoriamente que uso pra testes, e no link providenciado, ele não aceita os números de cartão e se clico em "Place Order", a mensagem de erro que mencionei, aparece. O plugin do link de testes está em modo produção ou de sandbox?

Testei a opção "Pagar no PagSeguro", e funcionou corretamente. Então suponho que seja o formulário do cartão de crédito que esteja gerando o problema.

r-martins commented 3 years ago

Oi @LuizSantos22 As credenciais da loja acima estão na home do site. ;)

Sobre não conseguir mandar e-mail pra mim, é só clicar aqui. A abertura de ticket por email foi desativado mesmo por causa de bots.

Alguns números de cartão de crédito gerados em ferramentas de teste realmente não funcionam porque o PagSeguro faz uma validação extra. Use 4111111111111111 ou 5453010000066167 por exemplo.

A loja acima não está configurada pra Sandbox, mas você pode entrar no painel e alterar como desejar, trocar credenciais, ambiente e tudo mais. Ela é reiniciada a cada 6 horas.

Aguardo seu retorno.

r-martins commented 3 years ago

@LuizSantos22 Apenas para complementar, fiz um teste aqui e não consegui reproduzir. Veja se estou fazendo algo errado. https://www.loom.com/share/5fe9c157fac943d2a1e95150519a9f42

LuizSantos22 commented 3 years ago

@r-martins Segue o vídeo onde eu explico quando ocorre o bug https://www.loom.com/share/b43fdab2e82b42a7b81b0b4a38fa3ba3

Att Luiz Santos

r-martins commented 3 years ago

Oi, @LuizSantos22 Obrigado pelo vídeo. Agora ficou mais claro. Aparentemente é um erro do IWD que faz a validação dos campos no momento que o formulário é carregado e não revalida os campos quando deveria. Veja video de teste comparando com o OSC do Deivison: https://www.loom.com/share/c67b68dadb86406c963f5f852367d3f3

LuizSantos22 commented 3 years ago

@r-martins Sim, o do Elisei (Moip One Step Checkout) seu módulo funciona perfeitamente.

Com isso, podemos concluir que o plugin não é 100% compatível com o IWD Checkout Suite, infelizmente, né? Eu fiz o teste aqui com o formulário de boleto e cartão do MercadoPago, e ele nem aceita, dá uma mensagem de erro que não pode processar. Mas o redirecionamento funciona. Acho que é alguma coisa com formulários, acredito que deve ser necessário declarar isso de alguma forma dentro do billing.phtml deles...

Uma pena, porque perdi horas fazendo adaptações no layout, css e inclusive num dos sites de testes coloquei título em cada passo... Na minha opinião, se alguém conseguir adaptar, vai converter muito, pois ele é mais simples e compreensível de preencher e finalizar.

Eu até entendo algumas restrições no módulo da IWD para M2, mas capar o módulo antigo do M1, que tinha mais funções, para liberar um, que é simples e bonito, mas que restringe o uso, é uma pena.

Acho que vou subí-lo aqui no Github pra ver se há alguém que consegue resolver esses bugs.

r-martins commented 3 years ago

Oi, @LuizSantos22. O módulo é compatível com IWD checkout, mas não corrige problemas e bugs existentes nele. Se fosse algum tipo de implementação extra ou algo assim, ainda teríamos uma chance de contornar. Mas de fato tentamos limitar as responsabilidades do módulo de pagamento e seguir os padrões de desenvolvimento recomendados pela Magento.

Pessoalmente, acredito que todo One Step Checkout precise de algum tipo de ajuste para funcionar. Quando implementei o Firecheckout no Magenteiro mesmo, investi quase uma semana customizando e corrigindo o que precisava para nossa necessidade.

Na experiência com Magento 1, minha preferência de checkout ainda é Firecheckout e Deivison, respectivamente. O IWD nunca usei a não ser na loja demo.

Se você conseguir corrigir o IWD, ou realmente constatar que há algum tipo de bug no módulo ou algo que poderia contornar este problema de forma amigável, por favor reabra o chamado por aqui para analisarmos novamente e aplicar o que precisar.

Lamento não poder ajudar mais neste escopo.

LuizSantos22 commented 3 years ago

@r-martins Só a título de confirmação. O bug realmente é com o método "checkout transparent". Testei agora o MercadoPago Classic com iFrame, Lightbox e Redirect e todos funcionaram. Quando testei o Transparent, onde o formulário é preenchido já no checkout, tive problemas, mas neste caso, ainda pior, pois nem carregou. Mas aí desconfio que seja um bloqueio do próprio MercadoPago.

Vou seguir fazendo testes, se encontrar algo, te dou um toque.

r-martins commented 3 years ago

O checkout não terá acesso ao iframe, por isso não há como comparar. Redirect e lightbox também têm comportamentos diferentes. Teste com algum meio de pagamento que tenha form com validation e me conta. 99% certo que é um erro do checkout na forma como lidam com as validações dos campos.

LuizSantos22 commented 3 years ago

@r-martins Acredito que descobri o motivo de dar erro de validação. Ao investigar os form.phtml do IWD, eu notei que os sistemas de pagamento "compatíveis", tem formulários form.phtml customizados para o template deles em: app/design/frontend/base/default/template/iwd/opc/onepage/payment/form Ali encontrei uma série de formulários phtml customizados:

iwd_stripe_form.phtml iwd_authorizecim_form.phtml cc.phtml authorizenet_cc.phtml braintree_creditcard_form.phtml payflow_advanced_info.phtml

Entre outros, então creio que para "validar", eles customizaram os arquivos originais e inseriram no path que mencionei acima.

Depois subirei o módulo aqui, sei que você é ocupado, mas quando tiver um tempo, dê uma olhada pra ver se é isso mesmo e se essa adaptação valeria à pena.

LuizSantos1 commented 3 years ago

@r-martins Eu fiz aqui uma pequena adaptação no form do PagSeguro, introduzindo um botão "Place Order" modificado, logo abaixo no form "cc.phtml" do seu módulo, logo abaixo de:

Eu coloquei esse código [

                    <div class="iwd_opc_universal_wrapper iwd_opc_message  info_message" style="display:none;">
                        <?php echo $this->escapeHtml($this->__('Configurações do Pagseguro Salvas - Clique em Finalizar Pedido.')) ?>
                    </div>](url) 

No video abaixo eu faço uma breve explicação por trás dessa ideia. A ideia é relativamente simples", eu passei a utilizar dois botões "Place Order", já que é necessário clicar "Place Order" duas vezes para finalizar o pedido com com o formulário de cartão de crédito transparente.

No primeiro eu usei no seu form "cc.phtml" onde o cliente vai "salvar as informações" e no segundo que é o Finalizar Pedido, o cliente conclui a compra com sucesso.

Assim, ele clica em Place Order duas vezes, mas sem àquela confusão.

PEQUENO PROBLEMA O sistema de mensagem de erros do IWD Checkout será disparado, portanto, não importa a mensagem adaptada no "Place Order 1", vai aparecer uma mensagem também no "Place Order 2"

Estou tentando resolver esse problema... Uma das soluções seria remover a mensagem do botão "Place Order 2" , mas acho a mensagem útil, pois se há realmente um erro, ela aparece e o cliente corrige. Ainda estou tentando contornar isso.

Segue o video explicativo: https://www.loom.com/share/8ce350ce1d93419aab009432dc5b1c97

Fica como ideia, caso você tenha alguma melhor, tipo, um botão "save" ou "save and continue" (sem reload da página), um script que aciona o botão "Place Order 1" automaticamente, logo após o cliente preencher o nome do dono do cartão... Etc...

Eu sei que há as opções do Deiverson e Firecheckout, mas achei o checkout da IWD mais limpo e elegante.

r-martins commented 3 years ago

Oi, @LuizSantos1 Sobre a primeira mensagem... Se o módulo de pagamento precisa criar um novo template para ser "compatível" com o módulo de checkout, isso indica que ele não foi desenvolvido nos padrões do Magento. O checkout é que tem que ser compatível com os meios de pagamento que seguem o padrão do Magento, e seguir as boas práticas. Não o oposto.

Eu buscaria uma forma de resolver o problema do checkout em si. Provavelmente outras pessoas já reportaram isso no github da iwd e talvez tenha até alguma solução não aprovada por eles lá.

No entanto, se adicionar o botão como você fez resolve o problema nesta loja específica, acho que deve seguir com ele. Apenas será ruim quando tiver atualizações futuras do módulo. Sempre terá que ver se a atualização mexeu no template e reimplementar a solução. Se resolver o problema na raiz, terá menos problemas, inclusive se um dia trocar de meio de pagamento.

Particularmente eu iria além, e testaria outro checkout como OSC do Deivison (gratis) ou Firecheckout (meu preferido, 30% off pra alunos Magenteiro).