Soporte » Plugins y Hacks » WooCommerce » Escribir en un archivo txt el importe total al abrir checkout

  • Hola, soy nuevo en este foro y agradecería si me pudieseis ayudar con algo que llevo tiempo intentando. Se trata de guardar el importe total de un pedido en un txt cuando alguien se encuentra en la ultima ventana antes de confirmar la compra usando por ejemplo:
    `$fp = fopen(«archivo.txt»,»a»);
    fwrite($fp, «precio-total-pedido» . PHP_EOL);
    fclose($fp);

    El caso es que no se como integrar esto para que cada vez que se abra la pagina de confirmación de pedido automaticamente se escriba el precio el correspondiente txt (el archivo txt se encuentra en el mismo servidor de la web que contiene el woocommerce).

    Por otro lado, me gustaría tambien integrar otra función en la misma pagina final, que fuera comprobando otro archivo txt cada 2 segundos y si el valor fuera igual a x abriera automaticamente otra pagina web de confirmación del pago y si pasado 60 segundos el valor del txt no es igual al que indicamos que vaciara el carro y redirija a la pagina principal de la tienda.

    Todo esto lo necesito para una especie de kiosco interactivo que estoy intentando crear y tiene de base woocommerce. Muchas gracias de antemano y ojala alguien me pueda ayudar a solucionarlo, gracias!!

Viendo 7 respuestas - 1 de 7 (de 7 total)
  • Moderador Mariano Perez

    (@mpcdigital)

    Hola,

    tienes que lanzar esas ordenes enganchándolas al hook correspondiente. Aquí tienes enlaces para aprender a usar los hooks, es fácil:

    https://es.wordpress.org/support/topic/hooks-woocommerce/

    Hola Mariano, muchas gracias por tu ayuda!
    No conocía los hook y la verdad es que están genial. Ya he conseguido abrir un txt y guardar texto en el antes de finalizar la compra. Lo que no logro ahora es coger el valor del importe total y guardarlo en el txt. Te indico a continuación lo que tengo hecho hasta ahora:

    
    //* WooCommerce: PRUEBA GUARDADO IMPORTE COMPRA
    function guardar_importe_txt () {
    
    $file = "Precio.txt";
    $texto = "Prueba guardado ok";
    $fp = fopen($file, "w");
    fwrite($fp, $texto);
    fclose($fp);
    }
    add_action( 'woocommerce_review_order_after_payment', 'guardar_importe_txt');
    
    

    Si le doy a inspeccionar puedo ver que el dato que quiero esta aqui:
    <span class=»woocommerce-Price-amount amount»>15,95<span class=»woocommerce-Price-currencySymbol»>€</span></span>

    Pero lo he puesto y me da error.
    Agradeceria si me pudieras echar una mano con esto.. GRACIAS!!

    Ya logro coger el valor y guardarlo correctamente, me faltaba definir como global:
    global $woocommerce;

    Ahora me estoy peleando con la segunda parte:
    Funcion que fuera comprobando otro archivo txt cada 2 segundos y si el valor fuera igual a x abriera automaticamente otra pagina web de confirmación del pago y si pasado 60 segundos el valor del txt no es igual al que indicamos que vaciara el carro y redirija a la pagina principal de la tienda.

    En esta parte estoy un poco mas perdido, no se cual es la función exacta que llama cuando presionamos el boton de realizar el pedido, y no se como hacer que verifique cada 1 o 2 segundos el estado del txt.
    Gracias!!

    Moderador Mariano Perez

    (@mpcdigital)

    Hola,

    quizás puede ser más fácil guardar esa información en la base de datos en vez de un txt pero no sé si luego usas el archivo para algo más.

    Aquí tienes un ejemplo de como cambiar el estado de un pedido una vez hecho y consultar su estado: https://woodemia.com/cambiar-estado-del-pedido-en-woocommerce-automaticamente/

    Respecto a hacer cada x tiempo, WordPress tiene un sistema de cron que te puede servir: https://martin.click/wordpress/el-cron-de-wordpress/

    Hola, lo de guardar la información me es mas cómodo en el txt por el momento, esa parte ya la logro hacer y funciona bien (en el futuro es posible que lo haga con una base de datos).

    Lo que no consigo hacer ahora es el ultimo punto:

    Me gustaría que lo que sucede cuando presionamos el botón de realizar el pedido (se crea el pedido y redirecciona a pagina de gracias), sucediera automaticamente cuando en un txt el contenido fuera igual a «OK» (por ejemplo).
    Para hacer esto la parte de leer el txt con php la tengo controlada, lo que no se es como lanzar la función que se lanza cuando presionamos el boton de realizar el pedido (y tambien desconozco cual es la funcion que se lanza al presionar ese botón).

    No se si me he explicado todo lo bien que debería, si no es así preguntame las dudas que pudieras tener.
    Gracias!!

    También me podría valer como solución ocultar el botón de realizar la compra hasta que en el txt no hubiera un «OK», para que no se pudiera presionar el mismo antes de la confirmación.
    Esta opción también me valdría, aunque sería mejor la otra ya que así el proceso sería automatico.
    Gracias!!

    Moderador Mariano Perez

    (@mpcdigital)

    Se me ocurre que con el cron podrías lanzar la función que comprobara eso cada minuto o con la frecuencia que quieras, ¿no?

Viendo 7 respuestas - 1 de 7 (de 7 total)
  • Debes estar registrado para responder a este debate.