Avisos
Vaciar todo

[Resuelto] Mis pedidos pagados via Redsys no se marcan como completado  

 
Xavier
 Xavier
Usuario activo

Buenos dias,

Vengo redirigido de vuestro soporte técnico de hosting ya que nos hemos mudado a Webempresa para solucionar un problema al cual no encontramos solución.

El problema es sencillo, cuando alguien hace una compra en nuestra tienda online www.icsagrupo.com a través de Redsys los pedidos no se marcan como completados.

Desde vuestro soporte me indican que os pase esto que ven en el log: 

id was called incorrectly. No se debería acceder a las propiedades del producto directamente. Backtrace: require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), do_action('template_redirect'), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::do_wc_ajax, do_action('wc_ajax_checkout'), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::checkout, WC_Checkout->process_checkout, WC_Checkout->process_order_payment, WC_Payment_Gateways->get_available_payment_gateways, apply_filters('woocommerce_available_payment_gateways'), WP_Hook->apply_filters, WC_CSP_Restrict_Payment_Gateways->exclude_payment_gateways, WC_Abstract_Legacy_Product->__get, wc_doing_it_wrong. This message was added in version 3.0.

Hemos hechos mil pruebas y sigue igual, creemos que es algo de seguridad del hosting más que problema de plantilla, plugins o demás.

Muchas gracias

Contenido solo visible a usuarios registrados

Respondido : 28/02/2023 8:45 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Xavier.

Los pedidos no cambia a completado cuando se realiza el pago, el estado en que se queda en pendiente y son los administradores los que tienen que modificar el estado del pedido.

Se puede solucionar con una función:

.- Añade lo siguiente en el archivo functions.php que encontars 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( 'redsys', 'bacs', 'cheque', 'cod', 'paypal' );

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

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

 

Tienes más información en esta entrada del Blog:

-> Cambiar estado del pedido en WooCommerce automáticamente

 

Revisa si con eso se soluciona y nos comentas.

 

Un saludo

Respondido : 28/02/2023 9:40 am

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Xavier
 Xavier
Usuario activo

Buenos dias Pepe,

Quiero que se cambie de forma automática si el pago ha sido OK por Redsys, sino, no, logicamente. Es decir, el funcionamiento normal de la pasarela Redsys pero por algún motivo no funciona bien.

Gracias por el enlace pero no busco la manera de hacerlo sino de solucionar el porqué nuestra tienda no cambia el estado de pendiente de pago a completado o procesando cuando alguien hace una compra con tarjeta via plugin Redsys y el banco envia el aviso de OK a nuestra tienda.

Muchas Gracias

Respondido : 28/02/2023 9:58 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Xavier.

Es lo que te comente, WooCommerce no cambia el estado del pedido automáticamente, la única pasarela de pago que cambia el estado es Paypal si se configura en su plataforma pero Redsys no cambia el estado automáticamente.

Para que cambie el estado del pedido automáticamente tienes que añadir el código que te comente antes, con ese código cuando el cliente realice el pago el estado del pedido pasa a completado.

Este es el comportamiento esperado y no tiene nada que ver con la pasarela de pago. Así es como funciona la gestión de pedidos en WooCommerce. 

 

Puedes revisar lo siguiente:

-> https://wordpress.org/support/topic/how-to-set-an-order-to-complete-automatically-when-payment-received/

-> https://woocommerce.com/document/automatically-complete-orders/

 

Un saludo

Respondido : 28/02/2023 10:28 am

wpdoctor-revisa-la-salud-de-tu-wordpress

Xavier
 Xavier
Usuario activo

Hola Pepe,

Cuando digo completado, me refiero a completado o procesando, ahora me los deja como pendiente de pago aunque el cliente hace el pago bien.

Redsys SI lo hace, lo tengo implementado en otros clientes y se cambia automaticamente sin snippets, lo hace el propio plugin Redsys al igual que hace Paypal.

Te habia hecho una captura de un pedido para que lo veas pero no veo como subirla a este mensaje.

Siguiendo con tu snippet, como sabe el snippet que alguien ha hecho el pago correctamente? -> Para que cambie el estado del pedido automáticamente tienes que añadir el código que te comente antes, con ese código cuando el cliente realice el pago el estado del pedido pasa a completado.

Muchas gracias

Respondido : 28/02/2023 10:35 am
Xavier
 Xavier
Usuario activo

En resumen, por si no me he explicado bien, cuando alguien compra con Redsys correctamente, el estado NO cambia ni a procesando ni a completado (esto lo puedes elegir en el plugin) y se queda como Pendiente de pago.

Espero que ahora me hayas entendido mejor.

Gracias

Respondido : 28/02/2023 10:37 am

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Xavier.

Te entendí desde el primer momento y es lo que te indico, WooCommerce no cambia el estado de pedido y se queda en pendiente hasta que el administrador revise el pago y cambie el estado, si lo que quieres es que se cambie automaticamente tienes que añadir el codigo que te indique antes.

 

Siguiendo con tu snippet, como sabe el snippet que alguien ha hecho el pago correctamente? 

Cuando se realiza el pago la pasarela dirige a una página de agradecimiento o vuelve a tu web y en ese momento es cuando se cambia el estado del pedido a pendiente

En el código le indicamos que pasarelas queremos que se vean afectadas por el cambio de estado:

$paymentMethods = array( 'redsys', 'bacs', 'cheque', 'cod', 'paypal' );

 

Y en la última línea le indicamos que estado es el que queremos:

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

 

No es algo que hagamos nosotros por defecto es el funcionamiento que tiene WooCommerce 

 

Un Saludo

Respondido : 28/02/2023 11:58 am
Xavier
 Xavier
Usuario activo

Hola Pepe de nuevo,

Perdona que insista pero tengo montados 10 tiendas con Redsys y en todas menos en esta que te estoy comentando funciona todo de manera automática. Significa que Woocommerce cambia el estado del pedido de pendiente de pago a Procesando de forma automática si Redsys envia OK al pago o lo deja en pendiente si Redsys envia KO del pago.

Esto lo hace a través de la URL -> https://www.icsagrupo.com/?wc-api=WC_Gateway_redsys  

Ahora me entiendes? No hace falta ningun Snippet. Te envio una captura de una tienda de otro cliente que SI funciona y como ves es Redsys quien hace el cambio de estado.

Captura de pantalla 2023 02 28 a les 11.30.06

 Muchas gracias

Respondido : 28/02/2023 12:33 pm

Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Xavier.

Probaste lo que te indique ?

Puedes consultarlo con el soporte de RedSys, nosotros te indicamos lo que realmente pasa y cómo solucionarlo pero poco más podemos hacer, es algo de WooCommerce.

Dentro de las opciones del plugin de Redsys puedes indicarle el estado pero nos hemos encontrado instalaciones que esa opción no funciona:

screenshot masquecms.es 2023.02.28 13 43 30

 

Un saludo

 

Respondido : 28/02/2023 12:44 pm
Xavier
 Xavier
Usuario activo

Hola Pepe,

Probaré la solución del snippet mañana pero lo que quiero es no poner el snippet y ver con vosotros porque no lo pone automático Woocommerce cuando Redsys le da el OK. Vuelvo a insistir que es tema Hosting, ya que hemos probado de hacer un Duplicator y llevarlo a otro Hosting y allí ha funcionado perfectamente como te comento. Sin snippet y de forma nativa, por lo tanto, tiene que ser algo de Hosting no de Woocommerce.

Gracias igualmente. 

Respondido : 28/02/2023 4:04 pm

Cursos Gratuitos WordPress

Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Xavier.

Ok, pruebalo y nos comentas.

No es problema de Hosting es el funcionamiento de WooCommerce, el propio WooCommerce ya lo indica en los enlaces que te pase y el snippet que te indique antes es el que ofrece el propio WooCommerce:

-> https://woocommerce.com/document/automatically-complete-orders/

No es que lo digamos nosotros puedes ver que es un tema recurrente y se trata en muchos sitios:

-> https://avada.io/woocommerce/docs/autocomplete-orders.html

-> https://quadlayers.com/autocomplete-woocommerce-orders/

 

Incluso hay plugins específicos para eso.

 

Prueba lo que te indique desde el principio y nos comentas.

 

Un saludo

 

 

Respondido : 28/02/2023 4:27 pm
Xavier
 Xavier
Usuario activo

Hola Pepe,

Si funcionó pero es un poco "parche" ya que si alguien en el periodo de pago de Redsys Redireccion no le da a Continuar, ha pagado pero no se marca como Completado el pedido.

Y por cierto, tenemos otros Woocommerce alojados en Webempresa donde funciona a las mil maravillas el Push de Redsys y lo marca de forma automática sin tener que meter el Snippet.

 

Lo comparto porqué me dijiste: WooCommerce no cambia el estado del pedido automáticamente, la única pasarela de pago que cambia el estado es Paypal si se configura en su plataforma pero Redsys no cambia el estado automáticamente.

Y redsys SI cambia el estado automáticamente :=)

Gracias

Respondido : 03/04/2023 12:04 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Xavier.

Ok gracias por informarnos.

Cerramos el tema.

 

Un saludo

Respondido : 03/04/2023 12:18 pm