Lunes, 25 Septiembre 2017 05:30

Bug de PayPal en PrestaShop 1.6.x ¿cómo solucionarlo?

Escrito por 
CMS:  PrestaShop |  Versión:  1.6.1.x |  Nivel de dificultad:  Medio |  Tiempo estimado de lectura:  15 minutos


Bug de PayPal en PrestaShop 1.6.x cómo solucionarlo


En este artículo te explico como solucionar el bug de Paypal en PrestaShop 1.6.x que afecta específicamente a la versión 3.11.4 de esta pasarela.

Existen innumerables pasarelas de pago para PrestaShop 1.6.x que son utilizadas a diario en millones de tiendas online por todo el mundo, pero si una se lleva la palma de la mano es Paypal, junto con los métodos tradicionales de reembolso y transferencia.

No obstante de cuando en cuando surge algún problema que hay que solucionar para seguir vendiendo. En el caso de Paypal se convierte en algo un poco más laborioso de detectar si no se tiene el conocimiento o experiencia suficiente en la gestión y administración de este método de pago.

 

El problema con el módulo de Paypal

El problema se viene detectando desde versiones 1.6.1.4 (enero de 2016) que sigue persistente en la actual versión 1.6.1.17 (a fecha de este artículo) si bien que depende de la versión del módulo de Paypal que utilices.

El caso se da en instalaciones donde se tiene habilitado el checkout en un solo paso.

 

checkout en un solo paso

Haz clic en la imagen para ampliarla  

Usuarios del modulo One Page Checkout también pueden verse afectados por este problema.

La versión del módulo de Paypal afectada es la 3.11.4 que puedes ver en la siguiente imagen:

 

módulo de Paypal

Haz clic en la imagen para ampliarla  

Este módulo, en la citada versión, pese a gestionarse correctamente el el checkout, no envía las notificaciones de la venta y no tienen en cuenta el campo de aceptación de condiciones de la venta, lo que puede traer de cabeza al administrador de la tienda que no tiene constancia de la compra y del pago y al comprador que no puede completar el proceso lo que produce un abandono del carrito.

Están afectadas las versiones 3.11.1 a la 3.11.4 respectivamente.

Es decir, tus compradores añaden productos al carrito, se registran o identifican como compradores en la tienda para procesar la compra, escogen el método de envío y marcan la casilla de aceptación y son redireccionados a la página de confirmación del pago de Paypal.

 

Aceptación de la venta

Haz clic en la imagen para ampliarla  

Reciben un aviso indicando que deben aceptar las condiciones de la venta aún habiendo seleccionado la casilla correspondiente.

Esta es una causa habitual de abandono de carrito, principalmente porque el comprador no entiende qué está pasando en el proceso de pago del pedido.

 

Corrección del problema

En primer lugar revisa tu lista de países en Localización, Países y verifica que tienes activados y debidamente configurados aquellos en los que realizas ventas, por ejemplo si vendes en España, la configuración debe ser similar a la mostrada en la imagen.

 

Localización - Países

Haz clic en la imagen para ampliarla  

Luego haz una copia de seguridad de tu tienda.

 

Lectura recomendada:
Copias de Seguridad desde el Panel de Hosting cPanel

Desde tu cPanel, Archivos, Administrador de Archivos, accede a la carpeta public_html/modules/paypal/views/js y localiza el archivo paypal.js.

Edítalo con el "Editor de Código" del Administrador de Archivos (Edit) y comenta las siguientes líneas:

 

        $('#container_express_checkout').hide();
        if(jquery_version[0] >= 1 && jquery_version[1] >= 7)
        {
            $('body').on('click',"#cgv", function () {
                if ($('#cgv:checked').length != 0)
                    $(location).attr('href', '{/literal}{$paypal_confirmation}{literal}');
            });
        }
        else {
            $('#cgv').live('click', function () {
                if ($('#cgv:checked').length != 0)
                    $(location).attr('href', '{/literal}{$paypal_confirmation}{literal}');
            });

            /* old jQuery compatibility */
            $('#cgv').click(function () {
                if ($('#cgv:checked').length != 0)
                    $(location).attr('href', '{/literal}{$paypal_confirmation}{literal}');
            });
        }

 

Te lo ilustro en la siguiente captura por si no tienes claro cómo comentar un bloque de código.

 

Comentar código

Haz clic en la imagen para ampliarla  

Otra solución es eliminar dicho bloque de código del archivo paypal.js afectado.

Indicarte que la redirección se aplica si la variable $paypal_confirmation es verdadera (true) y se declara en el archivo /modules/paypal/paypal.php en la línea 322 (aproximadamente).

 

Variable en paypal.php

Haz clic en la imagen para ampliarla  

Guarda los cambios y limpia la cache de PrestaShop para posteriormente verificar en la siguiente compra si el proceso se notifica y se pasa de las "condiciones de la venta" en el checkout.

No olvides eliminar el archivo class_index.php para que la regeneración de caché sea efectiva.

 

Eliminar class_index

Haz clic en la imagen para ampliarla  

Esperemos que se solucione en posteriores versiones del módulo de Paypal para PrestaShop 1.6.x

 

Este es un fallo de los que te puedes encontrar en tu Tienda procesando pagos con Paypal, no obstante no siempre se van a dar estas condiciones por lo que tan importante es mantener tus módulos actualizados así como el CMS, como lo es el realizar pruebas periódicas de funcionamiento de tus pasarelas de cobro, a fin de cuentas son el motor para que tus ventas lleguen a buen fin.

¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+