Un checkout roto es el fallo más caro que puede tener una tienda: el tráfico llega, los clientes llenan el carrito y la venta no se completa. Lo complicado es que el síntoma casi nunca dice dónde está el problema. «No funciona el pago» puede ser un error de JavaScript, una regla de envío, la caché del servidor o una pasarela que no recibe la confirmación del banco.

Antes de cambiar de pasarela o reinstalar plugins, conviene reproducir la compra de principio a fin y anotar en qué paso exacto se interrumpe. Este es el orden que seguimos.

1. Reproduce la compra como un cliente

Abre una ventana de incógnito, agrega un producto real al carrito y avanza hasta el final. Hazlo también desde un teléfono. Anota exactamente qué ocurre:

  • El botón «Realizar el pedido» no hace nada, o se queda cargando.
  • Aparece un mensaje de error en rojo, aunque sea genérico.
  • No aparecen métodos de envío o de pago.
  • El pago se cobra, pero el pedido queda en «Pendiente de pago» o no llega el correo.
  • Funciona en computadora y falla en móvil, o al revés.

Cada síntoma apunta a una capa distinta. Un botón que no responde casi siempre es JavaScript; un pedido cobrado pero pendiente casi siempre es la comunicación con la pasarela.

2. Abre la consola del navegador

Con la página de pago abierta, pulsa F12 y entra en la pestaña «Consola». Repite el intento de compra. Si aparecen errores en rojo, fíjate en el archivo que los provoca: el nombre de la carpeta suele delatar al plugin responsable.

En la pestaña «Red», filtra por wc-ajax o por checkout y revisa la respuesta del servidor al pulsar el botón. Una respuesta con código 500 indica un error de PHP en el servidor; una respuesta 403 suele apuntar a un firewall o a un plugin de seguridad que está bloqueando la petición.

3. Revisa los registros de WooCommerce

WooCommerce guarda sus propios registros en WooCommerce → Estado → Registros. Busca los archivos con fecha de hoy: fatal-errors reúne los errores fatales de PHP y la mayoría de las pasarelas escriben un registro propio cuando activas su modo de depuración.

Si el registro muestra un error con nombre de plugin, ya tienes un sospechoso concreto. Si no hay nada, el problema probablemente está antes de llegar al servidor (JavaScript, caché, firewall) o después (la pasarela).

4. Descarta la caché

Las páginas de carrito, checkout y «Mi cuenta» nunca deben guardarse en caché, porque su contenido es distinto para cada cliente. Los plugins de caché más conocidos las excluyen de forma automática, pero no siempre ocurre lo mismo con la caché del hosting o con una CDN configurada a mano.

Una señal clara de caché mal configurada: un cliente ve el carrito de otra persona, o los totales no se actualizan al cambiar la cantidad. Revisa que esas tres páginas y las peticiones a wc-ajax queden fuera de toda capa de caché, incluida la del servidor.

5. Comprueba qué tipo de checkout usa tu tienda

Desde la versión 8.3, las instalaciones nuevas de WooCommerce usan por defecto el checkout de bloques, mientras que muchas tiendas anteriores siguen usando el checkout clásico basado en el shortcode [woocommerce_checkout]. Son dos implementaciones distintas, y algunos plugins de pago, de campos personalizados o de envíos solo funcionan bien con una de ellas.

Si instalaste recientemente un plugin que modifica el checkout y la página de pago usa bloques, revisa en su documentación si es compatible. Para confirmar qué versión tienes, edita la página de Finalizar compra: si ves un bloque llamado «Finalizar compra», usas el checkout de bloques.

6. Revisa envíos e impuestos

Si el cliente no ve ningún método de envío, el problema rara vez es técnico: suele ser una configuración. Revisa en WooCommerce → Ajustes → Envío que exista una zona que cubra la dirección del cliente (estado y código postal incluidos) y que tenga al menos un método activo. Lo mismo ocurre con las clases de envío: un producto con una clase sin tarifa definida puede dejar el carrito sin opciones.

Con los impuestos, un error de configuración no suele bloquear la compra, pero sí produce totales incorrectos que hacen que el cliente abandone.

7. Verifica la confirmación de la pasarela

Cuando el cobro aparece en la cuenta de la pasarela pero el pedido sigue en «Pendiente de pago», el fallo está en el regreso de la información. Pasarelas como Stripe, PayPal o Mercado Pago confirman el pago mediante una notificación a tu sitio (webhook o IPN). Si esa notificación no llega, WooCommerce nunca se entera de que el cliente pagó.

Revisa en el panel de la pasarela el historial de notificaciones: si aparecen como fallidas, verás el código de error. Las causas habituales son un firewall que bloquea la petición, una URL de notificación antigua tras una migración o un cambio de dominio, un certificado SSL mal instalado o claves de prueba mezcladas con claves de producción.

8. Prueba sin plugins en un entorno de pruebas

Si nada de lo anterior señala al culpable, la forma fiable de aislarlo es una copia de la tienda (staging) en la que se desactivan todos los plugins excepto WooCommerce y la pasarela, y se activa un tema por defecto. Si la compra funciona, se van reactivando plugins hasta que vuelve a fallar.

Hazlo siempre en una copia, nunca en la tienda en vivo: desactivar plugins en producción puede afectar pedidos en curso, suscripciones y la sincronización con otros sistemas.

Qué información reunir antes de pedir ayuda

Si necesitas apoyo técnico, estos datos acortan mucho el diagnóstico:

  • El síntoma exacto y desde cuándo ocurre.
  • Qué cambió poco antes: actualizaciones, plugins nuevos, cambio de hosting o de dominio.
  • Capturas de los errores de la consola y del registro de WooCommerce.
  • La pasarela de pago y si el cobro aparece o no en su panel.

En nuestro soporte WooCommerce reproducimos la compra completa, aislamos la capa que falla y te confirmamos el alcance y el costo antes de intervenir en la tienda.