Cancelar automáticamente un pedido en WooCommerce que ha fallado 3 veces

En WooCommerce, cuando un pago falla, el pedido cambia al estado «fallido«. Esto puede pasar por varios motivos: tarjeta rechazada, fondos insuficientes, o un error con la pasarela de pago. En tiendas con bastante volumen, tener muchos pedidos fallidos puede ensuciar el sistema y causar confusión.

Una solución muy útil es cancelar automáticamente cualquier pedido que haya fallado 3 veces, para mantener tu tienda limpia y ordenada.

En este artículo te muestro cómo hacerlo con un snippet en PHP que podés pegar en el archivo functions.php de tu tema hijo o usarlo dentro de un plugin personalizado.

 

¿Cómo funciona la lógica?

  1. Cada vez que un pedido cambia al estado «fallido», vamos a contar cuántas veces ese mismo pedido ya falló.
  2. Guardamos ese número en un metadato personalizado del pedido.
  3. Si el contador llega a 3, cambiamos el estado del pedido a «cancelado» automáticamente.

 

Código PHP para cancelar pedidos fallidos 3 veces

<?php
add_action( 'woocommerce_order_status_failed', 'autoCancelFailedOrder' );

function autoCancelFailedOrder( $orderId ) {
    $order = wc_get_order( $orderId );

    if ( ! $order ) {
        return;
    }

    // Obtener el número actual de fallos
    $failCount = $order->get_meta( '_fail_count' );

    if ( ! $failCount ) {
        $failCount = 1;
    } else {
        $failCount++;
    }

    // Guardar el nuevo número de fallos
    $order->update_meta_data( '_fail_count', $failCount );
    $order->save();

    // Cancelar el pedido si falló 3 veces
    if ( $failCount >= 3 ) {
        $order->update_status( 'cancelled', 'Pedido cancelado automáticamente luego de 3 intentos fallidos.' );
    }
}

 

¿Dónde coloco este código?

Tienes dos opciones:

  1. En el archivo functions.php de tu tema hijo. Recomendado si no tenés un plugin personalizado.
  2. Dentro de un plugin personalizado, si querés mantener tu código separado del tema.

 

¿Puedo personalizar este comportamiento?

Claro que sí. Algunas ideas:

  • En lugar de cancelar, podrías enviar una notificación por correo al admin.
  • Podés reducir el número de intentos (por ejemplo, cancelarlo después de 2 fallos).
  • Incluso podrías mover el pedido a un estado personalizado como en-espera-verificación.

 

Este pequeño snippet puede ayudarte a mantener tu tienda WooCommerce más organizada, evitando pedidos fallidos acumulados. Además, te permite automatizar una tarea que, de otra forma, deberías hacer a mano.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x