Descripción del Error:
Se produce un error del tipo E_ERROR
al intentar acceder al método get_cart()
sobre un objeto null
. Esto ocurre en la línea 3301 del archivo woocommerce-pagopar-gateway.php
, lo que indica que la función show_flete_in_checkout()
se está invocando en un momento en el que el carrito de WooCommerce no ha sido inicializado.
Mensaje de Error
Se ha producido un error del tipo E_ERROR en la línea 3301 del archivo /wp-content/plugins/pagopar-woocommerce-gateway/woocommerce-pagopar-gateway.php. Mensaje de error: Uncaught Error: Call to a member function get_cart() on null in /wp-content/plugins/pagopar-woocommerce-gateway/woocommerce-pagopar-gateway.php:3301
Stack trace:
#0 /wp-content/plugins/pagopar-woocommerce-gateway/woocommerce-pagopar-gateway.php(2804): show_flete_in_checkout()
#1 /wp-includes/class-wp-hook.php(324): make_fields_non_required()
#2 wp-includes/plugin.php(205): WP_Hook->apply_filters() ...
Ambiente Afectado:
Explicación del Problema
show_flete_in_checkout()
accede directamente a WC()->cart->get_cart()
sin verificar que el objeto del carrito (WC()->cart
) esté correctamente inicializado. Cuando esta función se invoca demasiado temprano en el ciclo de carga de WordPress o debido a una interacción con otro plugin (como BricksUltimate), el carrito puede ser null
, lo que provoca un error fatal al intentar llamar al método get_cart()
.WC()
existe ni si WC()->cart
está inicializado antes de utilizarlo. Esto viola una buena práctica de programación, que es validar los objetos y condiciones antes de usarlos, especialmente en entornos donde la secuencia de inicialización puede variar.Solución Propuesta
Modificación en la Función:
Se debe agregar una comprobación inicial en la función show_flete_in_checkout()
para verificar que WooCommerce y el carrito estén disponibles antes de proceder. De esta manera, se evita llamar a get_cart()
en un objeto nulo.
Código Propuesto:
function show_flete_in_checkout() {
// Comprobación: Verificar que WooCommerce esté activo y el carrito esté inicializado.
if ( ! function_exists( 'WC' ) || ! WC()->cart ) {
return false;
}
foreach ( WC()->cart->get_cart() as $cart_item ) {
$item = $cart_item['data'];
// Obtener el ID real del producto: si es variable, usar el parent_id.
if ( is_numeric( $item->get_parent_id() ) && $item->get_parent_id() > 0 ) {
$idProductoReal = $item->get_parent_id();
} else {
$idProductoReal = $item->get_id();
}
$pp_parent_id = explode( ",", get_post_meta( $idProductoReal, 'pagopar_cats_id', true ) );
$pagopar_parent_id = (int) reset( $pp_parent_id );
// Si la categoría padre es igual a 906, se debe mostrar el flete.
if ( $pagopar_parent_id == 906 ) {
return true;
}
}
return false;
}
}
Explicación de la Solución:
WC()
esté definida y que WC()->cart
no sea null
.false
inmediatamente, evitando la llamada a get_cart()
sobre un objeto inexistente.inserté un codigo snippet para fees en donde genera un Descuento por Redondeo, pero no me aparece en la pasarela de pago, como si no existiera.
en los pagos predeterminados de woocommerce estan figurando, solo en la pasarela que no figura.
Al seleccionar un método de pago de la pasarela, aparece un nuevo campo abajo del correo electronico llamado billing y escrito Array en ese campo. Empezó a aparecer despues de la actualizacion 2.5.19
]]>Hola, buenos días! Estoy intentando a?adir una tarifa en concepto de gasto de cobranza a los clientes que paguen a través de la pasarela de pagos Pagopar.
He intentando hacerlo con plugins (por ejemplo Pay for payment), pero no funcionan, porque no detectan los sub métodos de pago que tiene Pagopar (es decir Pagopar Tarjetas, Pagopar Efectivo y Pagopar Billetera) así que ni siquiera suma el costo.
Haciéndolo a través de código (snippets), si se logra sumar la tarifa correspondiente, pero falla cuando queremos pasar a la página de Pagopar para terminar de pagar. Se ve que en ese paso, el plugin no detecta que hay un item adicional para sumar y se rompe (en las versiones antiguas del plugin si funcionaba).
?Hay alguna posibilidad de lograrlo? ?Alquien lo intentó? Es una funcionalidad importante, incluso la mayor plataforma de pagos online de Argentina, MercadoPago, lo incluye como una variable a configurar, ?es una opción que podrían incluir?
]]>Estimados:
Les consulto, entiendo que PagoPar hizo un acuerdo con Bancard.
Este plugin es compatible con empresas que tienen cuenta en Bancard?.
Muchas gracias
Atentamente
Leonardo Grabow
El error es el siguiente: https://imgur.com/a/aIujKF9
Plugins:
PagoPar V:1.4.2
Deposit V1.5.4: https://woocommerce.com/products/woocommerce-deposits/
Al finalizar el pedido aparece ese mensaje.
Cuando se quiere pagar con PagoPar sale ese mensaje
Hola, el campo documento no aparece en el formulario en la integración con woocommerce.
Gracias.
Hola
no entiendo bien esta parte
A no olvidar, es importante y es un requisito que los productos de Woocommerce estén asociados a la categoría Pagopar (esto se hace en el tab ?Pagopar? en la carga de productos).
?Debo de Crear una categoría que se llame pagopar?
Seria excelente de su parte si hacen un video de como integrar,
facilitaría mucho mas a las personas