Sólo a título informativo. El log con error raro que me aparecía es el mismo de este issue. Parece que aún no lo arreglan.
https://github.com/woocommerce/woocommerce/issues/30697
Me stá resultando imposible depurar mi error con el endpoint y puede que este error tenga algo que ver. Esperaré a ver si lo arreglan.
-
This reply was modified 3 years, 8 months ago by
Aitor Méndez.
@jconti, buenas tardes. He estado esperando a que se resolviera el tema del error raro. Parece que ya está solucionado y vuelvo al endpoint.
Para asegurarme de localizar el momento en el que se produce el error, he instalado un WP en local y desde cero. Lo único que he hecho ha sido instalar WP, WC, el plugin de Redsys y configurarlo con los datos que me ha dado el banco. No hay nada más.
En estas condiciones, usando el tema “twenty twenty one” hago una compra en modo test y, tras el pago con éxito, la orden se queda pendiente de pago.
El endpopint funciona porque, si se accede directamente devuelve la nota de error que se espera:
“Notice: Trying to access array offset on value of type null in /srv/www/futurabasura.com/current/web/app/plugins/woo-redsys-gateway-light/includes/apiRedsys7.php on line 134”
El log generado también parece normal:
https://hastebin.com/ogosofeteh.yaml
No hay más logs ni mensages de error.
La configuración del plugin “after payment” tiene “Mark as Processing”:
What to do after payment?
Mark as Processing (default & recomended)
¿Qué es lo siguiente que se puede intentar? Muchas gracias por tu ayuda, como siempre.
Hola @aitormendez,
El dominio que estás enviando a Redsys no es accesible ya que no es real. Redsys debe poder acceder al dominio. Si miras los logs en Redsys, te dirá que no puede acceder al dominio, no se como lo pondrá exactamente, pero es lo que pondrá seguro. Yo he probado sin mirar el dominio que era .test, y me ha mostrado:
No se puede acceder a este sitio web
Comprueba si hay un error de escritura en futurabasura.test.
DNS_PROBE_FINISHED_NXDOMAIN
Exacto, es un dominio en mi entorno de pruebas local. No es accesible desde fuera. No obstante, la compra se ha realizado on éxito y WC me indica “order received”.
Aún así, ¿es de esperar que no pase a estado processing?
En caso afirmativo montaré lo mismo en el servidor de pruebas (es todo mucho más tedioso que en local).
Ok, Funciona en el servidor. No hace falta que respondas. Perdona el ruido.
Hola @aitormendez,
Si, WooCommerce crea el pedido, pero para marcarlo como procesando/completado, Redsys le tiene que decir que se ha pagado, y pora eso tiene que ser capaz de contactar con con el sitio.
Saludos
SOLUCIÓN
@jconti te pongo aquí la solución, por si alguien viene con el mismo problema.
Parece ser un WOSD que se produce específicamente con la versión beta de Sage 10. Hay un issue en el repo de github:
https://github.com/roots/sage/issues/2656
Y está añadido a los milestones:
https://github.com/roots/sage/milestone/7
O sea, que lo arreglarán pronto. Mientras tanto, para solucionar el problema hay que sustituir ThemeServiceProvider.php
en el directorio app del tema por este gist de Carlos Faria:
https://gist.github.com/cfaria/7eb83ca2853cb062fd7f6365c9bd6de2
Saludos.
Gracias @aitormendez,
Entonces lo que sucede es que la librería de Redsys (que no realiza comprobaciones) debe tener algun warning por algún dato que Redsys no envía, así que queda sin definir, y eso provoca la pantalla blanca por el bug del theme y por lo tanto el que no se marquen los pedidos como pagados ya que no puede «escuchar» la notificación de Redsys.
Gracias por la investigación.
Saludos
Exacto, eso es lo que parece. Muchas gracias a ti por tu ayuda constante.
Un saludo.