Si Stripe completa 3D Secure pero WooCommerce deja el pedido pendiente, sigue una sola transacción entre el retorno del navegador, PaymentIntent y webhook. La página de vuelta puede funcionar aunque el evento servidor que confirma el cobro nunca actualice el pedido.
Reúne un conjunto de correlación
Conserva ID de pedido, PaymentIntent/cargo de Stripe, hora del retorno y event ID. No registres datos de tarjeta.
Lee la entrega del evento en Stripe
Comprueba si se envió el evento, respuesta HTTP, reintentos y endpoint. Un 2xx solo confirma recepción: verifica que el handler encontró el pedido correcto.
Compara notas del pedido y estado de pasarela
Si Stripe dice pagado y no existe una nota equivalente en WooCommerce, centra el diagnóstico en ruta del webhook, firma, errores del plugin o búsqueda del pedido.
Controla eventos tardíos o duplicados
El webhook puede llegar después del retorno o repetirse. El procesamiento debe ser idempotente y reconciliar una confirmación tardía sin crear otro pedido.
Verifica de extremo a extremo
Haz un pago 3DS controlado y exige una autenticación, un cobro, un pedido, estado correcto y una sola reducción de stock.
Consulta cómo rastrear un pago sin exponer tarjeta y compáralo con un pago correcto que deja el pedido pendiente.
Conserva un paquete de evidencia del intento 3DS
El paquete útil es pequeño pero concreto: ID de pedido, PaymentIntent, event ID, resultado de entrega del evento, nota del pedido antes/después y estado final del stock. Con eso puedes demostrar si falló autenticación, cobro, notificación o actualización de estado sin recopilar información sensible de tarjeta.