Avisos
Vaciar todo

Error de pago de paypal ya no me indica el error  

 
Eva
 Eva
Usuario activo

Hola,

Dispongo del módulo oficial de Paypal en mi tienda. Tanto la tienda como el módulo, actualizados a la última versión posible.

Puntualmente a veces un cliente realiza pedido mediante Paypal y obtengo un "Error de pago" como status del pedido. Esto, en su día, me generaba un comentario automático en el propio pedido, visible desde el backoffice, en el que aparecían datos técnicos del motivo y número del error, y con esto podía yo irme a Paypal a hacer seguimiento o abrir incidencia. Normalmente cuando pasa esto, en el propio Paypal no llega a efectuarse ningún registro.

Actualmente este detalle técnico del error ya no se guarda, o no sé yo llegar a él. He revisado en el pedido, sin éxito, y tampoco lo localizo en el archivo public_html/error_log

 

error de pago

El cliente, por mucho que reincida y vuelva a probar, no le acaba funcionando nunca. Mi única opción ha sido, de momento, editar el email automático de "error de pago" advirtiendo a los clientes de esta situación para que prueben con otro método.

¿Tenéis alguna pista de dónde puede estar registrándose el detalle técnico del error de Paypal?

Muchas gracias por adelantado,

Eva

Contenido solo visible a usuarios registrados

Citar
Respondido : 09/03/2021 6:57 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Eva.

Pues la verdad que no vemos nada que pueda estar afectando, si el problema es puntual a ser complicado encontrarlo a no ser que veas alguna relación en lso pedidos que no se realizan bien, mismo usuario, mismo producto, etc...

A nivel de instalación y hosting no vemos ningún problema. 

¿ El pedido llega a registrarse en Prestashop ? Revisaste en la plataforma de Paypal si ese pago llego a terminar o te indica algún error en ese pago ?

 

Un Saludo

 

ResponderCitar
Respondido : 09/03/2021 10:25 am

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Eva
 Eva
Usuario activo

@pepesoler

El pedido se registra en Prestashop tal como se puede ver en la captura. Al tener status de "error de pago" no se hace descuento de las unidades en stock, pero todo lo demás queda ahí. No hemos descubierto ningún patrón, ya sea por cliente o por combinación de productos, que pueda darnos ninguna pista acerca de qué puede provocar el fallo, es por eso que queríamos ir directamente al mensaje de error nº XXX que antes solía darnos y aclarar (a veces) el motivo.

En la captura se puede ver un pedido Paypal en medio que sí se procesó bien. Normalmente tenemos el 20-25% de los pedidos por Paypal, y uno de cada cuatro Paypals falla.

paypal errors

En nuestro portal de Paypal sólo aparecen las transacciones correctas, o como mucho las incorrectas cuando el usuario tiene algún problema con su cuenta, o no tiene la cuenta validada, o no dispone de saldo. Pero no hay registro alguno de estos intentos de pago que aparecen como "Error de pago" en nuestro BO. Es como si nunca llegaran a pasar desde nuestro Prestashop a Paypal, con alguna interrupción que no sabemos ver y de la que no hay registro más allá de la vista de pedidos.

 

ResponderCitar
Respondido : 09/03/2021 1:05 pm
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Eva,

Si usas el modulo de paypal que viene por defecto  comprueba si puedes ver los logs de error, usualmente esto lo localizas en la sección de  Módulos -> Modules Mánager -> Paypal, dentro de este veras una pestaña logs donde debe mostrarse el historial de las transacciones

Screenshot(5)

Un Saludo

ResponderCitar
Respondido : 09/03/2021 1:51 pm

Eva
 Eva
Usuario activo

@karen

Hola,

veo que mi módulo de Paypal no es exactamente el mismo, yo no dispongo de ese tab con la información de los logs. El que tengo yo dispone de tabs dentro del propio módulo. Utilizo este, que creía que era el oficial: https://addons.prestashop.com/es/pago-tarjeta-carteras-digitales/1748-oficial-de-paypal.html

¿No es así? ¿No es este el adecuado?

ResponderCitar
Respondido : 09/03/2021 2:24 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Eva.

El plugin es el mismo lo que pasa es que estas utilizando paar la version de Prestashop 1.6 y el que muestra Karen es de la version 1.7

¿ Tienes aplicado redondeo en las preferencias de prestashop ?

Si es así puede ser que el problema venga de ahi.

.- Accede a tu cuenta de cPanel -> Administrador de archivos.

.- Accede a la carpeta modules -> paypal -> express_checkout y edita el archivo " proccess.php "

.- Sobre la linea 329 veras el siguiente código:

private function setProductsList(&$fields, &$index, &$total)
{
foreach ($this->product_list as $product) {
$fields['L_PAYMENTREQUEST_0_NUMBER'.++$index] = (int) $product['id_product'];

$fields['L_PAYMENTREQUEST_0_NAME'.$index] = $product['name'];

if (isset($product['attributes']) && (empty($product['attributes']) === false)) {
$fields['L_PAYMENTREQUEST_0_NAME'.$index] .= ' - '.$product['attributes'];
}

$fields['L_PAYMENTREQUEST_0_DESC'.$index] = Tools::substr(strip_tags($product['description_short']), 0, 50).'...';

$price = $product['price_wt'];
if (version_compare(_PS_VERSION_, '1.6.1', '<')) {
if (isset($product['ecotax']) && $product['ecotax'] > 0) {
$price += $product['ecotax'];
}
}

$fields['L_PAYMENTREQUEST_0_AMT'.$index] = Tools::ps_round($price, $this->decimals);

$fields['L_PAYMENTREQUEST_0_QTY'.$index] = $product['quantity'];

$total = $total + ($fields['L_PAYMENTREQUEST_0_AMT'.$index] * $product['quantity']);
}
}

Lo sustituyes por lo siguiente:

 

private function setProductsList(&$fields, &$index, &$total)
{
foreach ($this->product_list as $product) {
$fields['L_PAYMENTREQUEST_0_NUMBER'.++$index] = 1;
$fields['L_PAYMENTREQUEST_0_NAME'.$index] = 'Total Productos '; // o el texto que deseemos
$fields['L_PAYMENTREQUEST_0_AMT'.$index] = $this->context->cart->getOrderTotal(true,Cart::ONLY_PRODUCTS);
//mandamos el total de los productos con IVA incluido
$fields['L_PAYMENTREQUEST_0_QTY'.$index] = 1;
$total = $total + ($fields['L_PAYMENTREQUEST_0_AMT'.$index] * 1);
break;
}
}

 

.- En el mismo archivo busca los siguiente:

public function getTotalPaid()
{
$total = 0.00;
foreach ($this->product_list as $product) {
$price = Tools::ps_round($product['price_wt'], $this->decimals);
$quantity = Tools::ps_round($product['quantity'], $this->decimals);
$total = Tools::ps_round($total + ($price * $quantity), $this->decimals);
}
if ($this->context->cart->gift == 1) {
$total = Tools::ps_round($total + $this->getGiftWrappingPrice(), $this->decimals);
}
if (version_compare(_PS_VERSION_, '1.5', '<')) { $discounts = $this->context->cart->getDiscounts();
$shipping_cost = $this->context->cart->getOrderShippingCost();
} else {
$discounts = $this->context->cart->getCartRules();
$shipping_cost = $this->context->cart->getTotalShippingCost();
}
if (count($discounts) > 0) {
foreach ($discounts as $product) {
$price = -1 * Tools::ps_round($product['value_real'], $this->decimals);
$total = Tools::ps_round($total + $price, $this->decimals);
}
}
return Tools::ps_round($shipping_cost, $this->decimals) + $total;
}

 

Lo sustituyes por lo siguiente:

public function getTotalPaid()
{
$total = 0.00;
$total = $total + $this->context->cart->getOrderTotal(true,Cart::ONLY_PRODUCTS);
if ($this->context->cart->gift == 1) {
$total = Tools::ps_round($total + $this->getGiftWrappingPrice(), $this->decimals);
}
if (version_compare(_PS_VERSION_, '1.5', '<')) { $discounts = $this->context->cart->getDiscounts();
$shipping_cost = $this->context->cart->getOrderShippingCost();
} else {
$discounts = $this->context->cart->getCartRules();
$shipping_cost = $this->context->cart->getTotalShippingCost();
}
if (count($discounts) > 0) {
foreach ($discounts as $product) {
$price = -1 * Tools::ps_round($product['value_real'], $this->decimals);
$total = Tools::ps_round($total + $price, $this->decimals);
}
}
return Tools::ps_round($shipping_cost, $this->decimals) + $total;
}

 

Tienes mas información en este enlace:

-> https://prestamarketing.com/blog/bug-arreglado-pedidos-pagados-paypal-dan-error-pedido-prestashop/

 

Nota: recuerda descargar una copia del archivo antes de la modificación para tener el original

 

Un saludo

ResponderCitar
Respondido : 09/03/2021 3:16 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Eva
 Eva
Usuario activo

@pepesoler

Hola de nuevo. Esta solución ya la probé en octubre de 2017 y aparentemente funcionó bien, con este problema podía mantener en ambos lados el mismo redondeo calculado al final de la factura (prestashop por un lado y paypal por el otro). Desgraciadamente en alguna actualización del módulo de Paypal esto desapareció, la función getTotalPaid ya no se encuentra localizable en el archivo process.php ni en ningún otro (que yo haya podido encontrar).

Para salir del paso, lo que hice fue cambiar el método de pago de Paypal a manual:

image

Con esta opción pierdo el automatismo y tengo que validar cada pago que me hacen por aquí, pero a cambio puedo corregir a mano los decimales que Paypal cuenta de más o de menos con su sistema de redondeo por ítems.

 

Aprovecho para comentaros que he contactado con los desarrolladores de este módulo oficial, a ver si ellos me pueden orientar, ya sea para lograr llegar a los logs, o para tratar de solventar el Error de pago.

ResponderCitar
Respondido : 09/03/2021 4:04 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Eva.

Ok dejamos el hilo abierto en espera de lo que te indiquen lso desarrolladores.

 

Un saludo

ResponderCitar
Respondido : 09/03/2021 4:12 pm

Cursos Gratuitos WordPress