Orden de revisión de Woocommerce antes del pago

4 minutos de lectura

Estoy tratando de agregar una página de pedido de revisión en mi tienda web Woocommerce. Actualmente, cuando agrego artículos al carrito, puedo proceder a la página de pago donde se requieren y envían las direcciones de facturación y envío, luego, el siguiente paso es la página de Pago (con PayPal). Quiero agregar una página de revisión del pedido antes de que vaya a la página de pago, por lo que después de ingresar las direcciones en la página de pago y el usuario hace clic en continuar, se debe mostrar una página de resumen/revisión del pedido con los totales del pedido y las direcciones ingresadas previamente. , y un enlace para regresar si diez usuarios desean cambiar una dirección. Me gusta una página de confirmación. Luego, una vez que el usuario procede, va a la página de pago.

He investigado esto sin suerte. Intenté esta acción en el functions.phppero no funciona:

add_action( 'woocommerce_review_order_before_submit','woocommerce_order_details_table');

¿Hay alguna manera de hacer esto con woocommerce? Tampoco hay configuración para esto en el panel de administración.

  • ¿Has resuelto tu problema mientras tanto?

    – GDY

    16 oct 2015 a las 6:35

Recientemente me encontré con este problema. Mi solución fue crear una página llamada ‘Revisar pedido’ en el back-end de WordPress e ingresar el código abreviado [woocommerce_checkout] en el editor de contenido. Luego creo un page-review-order.php en la raíz de mi tema hijo.

En mi page-review-order.php, establecí las siguientes definiciones:

if ( ! defined( 'THIS_IS_CHECKOUT' ) )
{
  define( 'THIS_IS_CHECKOUT', true );
}
if ( ! defined( 'THIS_IS_REVIEW') )
{
  define( 'THIS_IS_REVIEW', true);
}

Desde aquí pude pasar por el proceso de pago típico y obtener la información que necesitaba sin mucha molestia, pero podía intercambiar qué partes del proceso podrían pertenecer a la página de pago y qué partes podrían pertenecer a la página de revisión con lo siguiente :

if (defined( 'THIS_IS_REVIEW'))
{
  $reviewPage = true;
}

  • ¿Puedes explicar con más detalle cómo hiciste esto? Quiero hacer lo mismo. ¡Gracias!

    – harinsa

    4 de septiembre de 2015 a las 9:25

Mirando una configuración de WooCommerce que administro, puedo ver que puede configurar una página de ‘Carrito’ en el administrador a través de WooCommerce> Configuración> Pago (pestaña en la parte superior).

Desplácese hacia abajo hasta ‘Páginas de pago’ y asegúrese de tener seleccionada una ‘Página de carrito’. Si no crea una página llamada, por ejemplo, ‘Carrito de la compra’ y le agrega el siguiente código abreviado: [woocommerce_cart]

Una vez que haya hecho eso, regrese a la página de configuración anterior de WooCommerce y seleccione la nueva página que creó.

Esta página se coloca antes de los detalles de facturación en el proceso de pago.

Déjeme saber si esto ayuda.

  • Todo esto está configurado. Solo para aclarar que el sitio funciona, el pago y el pago funcionan. Lo que quiero es agregar una página entre la página de pago y la página de pago que les pida a los usuarios que confirmen sus direcciones de facturación y envío ingresadas en la página de pago, si confirman que avanzan para pagar o regresan a la página de pago. para editar una dirección

    – Probador

    15 de agosto de 2014 a las 13:56

Aunque esta podría no ser la solución perfecta, así es como lo solucioné.

Por favor, eche un vistazo a este hilo de stackoverflow.

Insertamos una entrada oculta confirm-order-flagindicando si está por revisar o ya se revisó.

Luego, después de la validación, usamos woocommerce_after_checkout_validation para comprobar este valor. Si es para ser revisado, agregamos un error falso.

En jQuery comprobamos el número de errores, que será uno si es para revisar y 2 (o más) si tiene errores (Si tiene 0, ya estás en la página de revisión).

    $(document.body).on('checkout_error', function () {
    var error_count = $('.woocommerce-error li').length;
    var url_params = form_parameters_to_url();
    if (error_count == 1) { // Validation Passed (Just the Fake Error I Created Exists)
                window.location = "review_page_url";

            }else{ // Validation Failed (Real Errors Exists, Remove the Fake One)
                $('.woocommerce-error li').each(function(){
                    var error_text = $(this).text();
                    if (error_text == 'custom_notice'){
                        $(this).css('display', 'none');
                    }
                });
            }
        });

En la URL de la página de revisión también inserto el [woocommerce_checkout] shortcode, pero esta vez en un contenedor con una identificación: #confirm_order_page. Uso jQuery nuevamente para establecer el valor de la entrada oculta en 0:

$('#confirmation_form #place_order').click(function () {
    $('#confirm-order-flag').val('');       
});

Entonces no tiene errores y pasa la validación. Oculto el formulario en la página de revisión de css. Puede que no sea la solución perfecta, pero podría ayudarlo a comenzar con este problema.

¿Ha sido útil esta solución?