Hola,
Desde hace unos días tenemos un problema con los pedidos que están entrando, se marcan como cancelados cuando realmente el pago se procesó con éxito y no nos llega aviso por email y al revés un pedido que finalmente no se procesó el pago lo marcó como procesando. He estado mirando en foros y algunas veces esto pasaba por incompatibilidades con plugins de envíos, pero no tenemos ninguno instalado. En redsys nos dicen que el módulo es antiguo, pero he mirado el plugin y está instalada la última versión. Ya no sé qué más hacer....
Muchas gracias y un saludo,
Natalia
Contenido solo visible a usuarios registrados
Hola Malcolm.
Por defecto los pedidos cuando terminan de la pasarela de pago se quedan en estado pendientes no cambia el estado y es el administrador el que tienen que cambiar el estado del pedido.
Cuando un pedido lleva un tiempo en estado pendiente, WooCommerce lo cambia a cancelado y los productos vuelven a estar disponibles, esto se hace para llevar un control de stock.
.- Accede a WooCommerce -> Ajustes -> productos -> Inventario
.- En la opción Mantener en inventario (en minutos) es donde le indicas cuánto tiempo puede estar un pedido en estado pendiente antes de cancelar el pedido, si quieres que no se cancele el pedido dejas la celda vacía:
Puedes modificar este comportamiento y que los pedidos queden en otro estado:
.- Añade lo siguiente al archivo functions.php que encontras en wp-content -> themes -> tu_plantilla o si utilizas algún plugin para añadir código como puede ser Code Snippets
// Actualiza automáticamente el estado de los pedidos a COMPLETADO
add_action( 'woocommerce_order_status_processing', 'actualiza_estado_pedidos_a_completado' );
add_action( 'woocommerce_order_status_on-hold', 'actualiza_estado_pedidos_a_completado' );
function actualiza_estado_pedidos_a_completado( $order_id ) {
global $woocommerce;
//ID's de las pasarelas de pago a las que afecta
$paymentMethods = array( 'bacs', 'cheque', 'cod', 'paypal', ‘redsys’ );
if ( !$order_id ) return;
$order = new WC_Order( $order_id );
if ( !in_array( $order->payment_method, $paymentMethods ) ) return;
$order->update_status( 'completed' );
}
Esta función lo que realiza es modificar los estados de los pedidos a completado.
En este enlace tienes documentación:
-> https://www.webempresa.com/blog/cambiar-estado-del-pedido-en-woocommerce-automaticamente.html
Un saludo