Soporte » Plugins y Hacks » WooCommerce » Envío de session_id a web service externo

  • Una duda, llevo varios días intentando hacer algo pero no lo consigo, os cuento por si me echáis una manita.

    En la empresa se quiere montar una tienda online, pero sólo hasta el carrito, cuando se hace clic en el carrito se tiene que hacer una llamada a una dirección donde hay un web service que importa los datos de la tabla wp_woocommerce_sessions pero no soy capaz de hacer la llamada con el campo session_id o el session_key que permita al servicio externo identificar el carrito.

    Por lo pronto he creado una acción que llama a una función cuando se pulsa el botón de Finalizar Compra del tipo:
    add_action( 'woocommerce_before_checkout_form', 'funcion_que_envia_el_id_del_carrito' );

    Nunca se debe llegar al checkout, de modo que lo que hago es un header('Location: http://direccion');

    Lo que no consigo es hacer que haga una llamada del tipo http://la-direccion-del-web-service/session_id

    Estoy algo desesperado y no encuentro información de cómo hacer esto.

    Gracias de antemano

Viendo 1 respuesta (de un total de 1)
  • Iniciador del debate materron

    (@materron)

    El problema que se planteaba es que se querían tener tiendas en 17 países pero el checkout se necesitaba centralizar en una intranet.

    El Checkout se ha desarrollado por completo en angular y no encontraba la manera de enviar el session_id al web service que se ha desarrollado para importar datos del mysql de woocommerce.

    Al pulsar el botón de Finalizar Compra había que saltar a la intranet donde se finalizaría la compra. Le llamo intranet aunque se que no lo es, porque va a estar visible desde fuera, pero son servidores externos.

    No se si me he explicado, pero lo importante es que había que sacar el session_key y enviarlo.

    Me di cuenta que había una cookie cuyo nombre comenzaba por wp_woocommerce_session_ con un hash detrás dentro de cuyo valor se encontraba en primera posición el session_key, pues bien, he creado este trozo de código que he metido en plugin para cada país y solucionado el problema:

    add_action( 'genesis_before', 'my_function' );
    
    function my_function($session_id) {
     // Si estamos en la página de checkout 
     if (is_page('checkout')){
        // Buscamos una coockie que comience con wp_commerce_session
        foreach($_COOKIE as $key => $value){
          if (substr($key,0,22) == 'wp_woocommerce_session' ){
            // Extraemos el valor de session_key y lo enviamos al web service, con el nombre del pais
            header("Location: http://[dirección del webservice que importa los datos]/#/app/carritoCompra/es/".substr($value,0,strpos($value,'|')));
          }
        }
     }
    }
Viendo 1 respuesta (de un total de 1)
  • El debate ‘Envío de session_id a web service externo’ está cerrado a nuevas respuestas.