Mientras vas encontrando el error y analizando en tu ambiente de desarrollo, puedes hacer el cambio automático de status de pendiente a procesando desde tu página de gracias en producción.
add_action( 'woocommerce_thankyou', 'letsgo_auto_processing_orders');
function letsgo_auto_processing_orders( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// If order is "pending" update status to "processing"
if( $order->has_status( 'pending' ) ) {
$order->update_status( 'processing' );
}
}
Recuerda ponerle más condiciones como que sea la pasarela de pago de Mercado Pago y otros parámetros.
Muchas gracias “gonzalesc”, voy a probar este hook a ver si me funciona.
Respondiendo a las preguntas de “marcelo.ampm”: Si, actualice los dos a la ultima versión y tengo PHP7, también intente levantar a levantar un backup que tenia, cuando todavía no había actualizado los plugin, pensando que el problema era tal vez era las ultimas versiones, pero nada tampoco funciono.
Muchas gracias por responder y a aportar, se agradece muchísimo.
Que hosting es? Les comentaste a ver si hay algún tipo de bloqueo a nivel servidor que puedan chequearte ellos? o incluso mirando en los logs si hay requests desde la IP de MercadoPago?
Hola @Alan_Toro.
No, sabes que no, levante backup de cuando la web funcionaba bien, probé con todas las versiones de MercadoPago y WooCommerce, cambie de template. La semana pasada, de la nada empezó a funcionar bien. Funciono bien dos o tres dias, y hace uno días, otra vez se volvió a joder. Los pedidos me siguen entrando todo en “Pendiente de Pago”
Lo que no probe, fue con el codigo/hook que proporciona @gonzalesc. No se si esto puede ser una alternativa. La verdad es muy rato, para mi es algo de MercadoPago, pero el tema es que tengo otras web que si funcionan bien.
Hola, alguien pudo resolver el problema?
Tengo instalado WooCommerce 3.5.3 y MercadoPago 3.0.17 con la misma situación.
Luego de varios días los pedidos Completados vuelven a estado Procesando.
Si el pago falló por alguna circunstancia (tarjeta sin saldo por ejemplo), queda como Pendiente de Pago aunque luego el cliente haga el pago por otro medio y MercadoPago lo informe. En las Notas del Pedido aparece continuamente el mensaje “Mercado Pago: El cliente todavía no efectuó el pago.”
Al final, en algunos casos opto por enviar a la Papelera el pedido luego que se completa para que no siga apareciendo como pendiente.
Muchas gracias
Hola @Rodolfo, tengo un cliente al que le pasa lo mismo. Tenían pedidos Completados incluso, y semanas después les aparecen de la nada marcados como Pendientes de Pago… Podría ser un bug de MercadoPago… no tengo pruebas ni tampoco otra explicacion…
Pero tengo sin embargo otros clientes con mucho más tráfico de pedidos y no les pasa aunque tienen la misma versión de WooCommerce y el plugin de MercadoPago, así que no se si depende de algún otro plugin de Woo, o quizás problemas con sus clientes, o con su cuenta de MercadoPago… Es inexplicable por ahora…
Hola Facundo, la verdad que hasta ahora no. El cliente que tenia este problema, de un día para el otro le empezó a funcionar bien todo, pero ahora, otra vez le esta pasando lo mismo y funciona mal.
Nosotros nunca tocamos nada. Estoy seguro que es un error/falla de MercadoPago con WooCommerce.
El problema no es de WooCommerce, es de MP estoy casi seguro.
@gonzalesc Yo siempre instalo la versión oficial de MercadoPago, la que están en el repositorio de plugins de Wordpress.
Siempre veo 2, una en ingles y otra en español. La verdad no se cual es la diferencia.
La de Kijam no lo use nunca.
Sí, la 3.1 que se actualizó hace unos días… Probá cambiando las credenciales por las de custom checkout en la versión actualizada del plugin. Porque se que MP venía teniendo “problemas de performance” en sus servidores porque procesan miles de operaciones por hora…
Buen dia! a mi me pasa lo mismo y no he encontrado respuesta coincido que debe ser de MP que ya viene arrastrando varios bug inclusive actualizando su plugin siguen ocurriendo.
tomando en consideracion la solucion de @gonzalesc dejo aca su codigo con el filtro para que sea solo en mercadopago…a mi me funciono como solucion parcial hasta q se solucione en el plugin:
coloquemos esto en el functions.php
//pasar orden de pendiente en MP
add_action( ‘woocommerce_thankyou’, ‘letsgo_auto_processing_orders’);
function letsgo_auto_processing_orders( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
//ID’s de las pasarelas de pago a las que afecta
$paymentMethods = array( ‘woo-mercado-pago-basic’ );
if ( !in_array( $order->payment_method, $paymentMethods ) ) return;
// If order is “pending” update status to “processing”
if( $order->has_status( ‘pending’ ) ) {
$order->update_status( ‘processing’ );
} }
espero les sirva y gracias a @gonzalesc por la idea original
Hola, pegue el codigo en functions.php pero me siguen entrando los pedidos como “Pendiente de pago”. Que podra ser? tal vez haya cambiado algo en el plugin de MP?
Alguien pudo solucionar este problema?
Por qué tengo el mismo! El pago por tarjeta nunca sale del estado “pendiente de pago” a pesar de ser aprobado por MercadoPago. Lo probé solo en modo sandbox (no localhost), Pero debería funcionar igual.