Avisos
Vaciar todo

Error en la notificación de pedidos pagados a través de Redsys en web con Woocomerce  

 
MARIO
 MARIO
Nuevo usuario

Hola, necesitaría ayuda para resolver un error en una web con Woocomerce. En dicha web tan solo se contempla el modo de pago con tarjeta, en este caso con TVP virtual Redsys. El problema es que una vez completado todo el proceso de compra, y tras tener confirmación del pago en la pasarela de pago, el pedido entra en WordPress con la etiqueta de "pendiente de pago" no enviando de este modo email de confirmación de pedido. Necesito que tras realizar el pago y su confirmación, entre el pedido con etiqueta "completado" y realice el pertinente email de aviso al administrador. ¡Espero vuestros comentarios, muchas gracias!

Contenido solo visible a usuarios registrados

Citar
Respondido : 21/10/2021 1:45 pm
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Mario, 

En este caso es normal que el pedido en Redsys se queda en pendiente de pago hasta que se cambia el estado desde el pedido, esto se hace porque el administrador tiene que comprobar en la pasarela de Resys que el pago está en su cuenta y así procesar el pago, sin embargo si deseas que los pedidos se completen de forma automática puedes probar el siguiente código que puedes añadir el functio.php de tu plantilla (preferiblemente un tema hijo)

Para ello ingresa a cu cpanel -> Administrador de archivos -> public_html y ingresa a la carpeta donde tienes los archivos de tu sitio web. Luego de ello añade lo siguiente al archivo functions.php que encontraras en wp-content -> themes -> tu_tema.

// Completar pedidos automáticamente
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( 'redsys', 'paypal' );

if ( !$order_id ) return;
$order = new WC_Order( $order_id );

if ( !in_array( $order->payment_method, $paymentMethods ) ) return;
$order->update_status( 'completed' );
}

Este código también lo puedes añadir con un plugin como -> https://es.wordpress.org/plugins/code-snippets/ si no quieres editar el archivo, una ve lo instalas debes pulsar en fragmento de código y añadir uno nuevo

Colócale el nombre, pega las líneas de código y guarda los cambios.

Ten en cuenta que el código va a cambiar el estado de los pedidos tanto de Paypal como de Redsys a completado una vez se realiza el pago

Verifica esto y nos comentas como ha ido todo

Un Saludo 

 
ResponderCitar
Respondido : 21/10/2021 1:56 pm