Promenade | Xtech Family
Promenade Follow
Posts made by Promenade
BUG no módulo de pagamento PayPal Plus em Navegadores/Celulares anteriores a 2016
Ao ativar a aba de pagamento via PayPal Plus, o carrinho/pagamento que possui o pagamento integrado deixa de funcionar adequadamente em alguns navegadores. Pode ser verificado tentando-se navegar nas abas de pagamento ou qualquer outra operação neste página que use javascript.
O problema pode ser facilmente observado em uma loja que possua esse módulo de pagamento e tentando-se efetuar uma compra utilizando o Internet Explorer Edge especialmente quando a opção de pagamento via PayPal Plus não for a primeira. Ao tentar clicar nas abas de método de pagamento elas não funcionam impedindo a troca. Outros problemas na tela ocorrem mas este é o mais evidente.
No Internet Explorer em modo de depuração é possível destacar o problema:
Erro: 'refresh_pplus' não está definido
Se detalhar mais o erro ele indicará o erro em:
view_char shop-v11.js eval code (55)
Continuando o processo de localização do problema temos:
refresh_pplus({installments: 6, shipping_cost: undefined, subtotal: undefined, discount: undefined, total: 197.46});
A linha que gera o erro é resultado de um eval no arquivo shop-v11.js na linha 319 que possui o seguinte código:
eval($(this).data('calc') + '({installments: '+that.options.installments+', shipping_cost: '+data.shipping_cost+', subtotal: '+data.subtotal+', discount: '+data.discount+', total: '+data.total+'});');
Não é possível ativar o módulo de pagamento sob pena de alguns cliente não conseguirem finalizar o processo de compra em alguns navegadores.
Existe uma solução para o defeito caso vocês me deem acesso a editar o código do módulo PayPal Plus poderei implementar diretamente.
Quando o módulo está ativo existem diversos arquivos e funções que são carregadas na página view_cart. O profissional de TI da XTech usou uma construção de código javascript que só é compatível com os navegadores mais recentes que é a utilização de um parâmetro com default numa função.
Para corrigir é necessário acesso ao módulo de PayPlus e procurar a seguinte construção no javascript:
var validateInitFields = function(blReturn = false){
Onde ... significa que tem coisas antes e depois.
A construção blReturn = false não é compatível com navegadores mais antigos especialmente do Internet Explorer e ela pode ser facilmente corrigida trocando-se o código para:
var validateInitFields = function(blReturn){
if(typeof blReturn === 'undefined') blReturn = false;
Que tem o mesmo efeito e funciona em navegadores menos modernos.
A construção adotada pelo seu profissional da XTech só foi disponibilizada na versão ES6/EcmaScript 2015. Portanto navegadores mais antigos que ainda não implementaram essa especificação em seu código não funcionarão.
A solução é simples, sem consequências negativas de nenhuma espécie, fácil para um técnico entender para perceber que não terá nenhum risco para essa alteração no código e implementar e não leva menos que alguns minutos.