Enviar datos de Woocommerce después de hacer clic en el botón Realizar Pedido

22 ene 2018, 05:32:50
Vistas: 55.3K
Votos: 3

Estoy buscando la manera de añadir un hook a mi página de checkout de WooCommerce (http://localhost/checkout). Mi intención es enviar los artículos del carrito, la dirección de facturación y la información del usuario a otra página como http://localhost/hooking después de hacer clic en el botón Realizar Pedido para otros propósitos posteriores, ¿es esto posible y cómo se puede hacer?

2
Comentarios

Lo mejor sería hacerlo cuando el pedido esté completado

Mederic Mederic
22 ene 2018 05:34:26

Porque tengo otro método de pago, que necesita los items del carrito de Woocommerce para comenzar el pago. @@. Cosas muy confusas @@.

Gracias por responder, @Mederic.

bonjourimcam bonjourimcam
22 ene 2018 05:41:00
Todas las respuestas a la pregunta 1
5

Para estas tres posibilidades:

Si realmente deseas hacerlo al momento de crear el pedido, tendrías que usar el hook:

woocommerce_new_order

Sin embargo, te recomendaría que uses el hook:

woocommerce_order_status_completed

Esto aseguraría que el pedido esté finalizado cuando envíes la información.

Para capturar la información antes de la facturación siempre podrías usar:

woocommerce_before_checkout_billing_form

Si esto todavía no funciona, podrías revisar la lista de hooks:

https://docs.woocommerce.com/wc-apidocs/hook-docs.html

Entonces tendrías algo como:

add_action( 'woocommerce_order_status_completed', 'wc_send_order_to_mypage' );
function wc_send_order_to_mypage( $order_id ) {
$shipping_add = [
            "firstname" => $order->shipping_first_name,
            "lastname" => $order->shipping_last_name,
            "address1" => $order->shipping_address_1,
            "address2" => $order->shipping_address_2,
            "city" => $order->shipping_city,
            "zipcode" => $order->shipping_postcode,
            "phone" => $order->shipping_phone,
            "state_name" => $order->shipping_state,
            "country" => $order->shipping_country
        ];
//desde $order puedes obtener toda la información de los artículos, etc.
//arriba hay solo un ejemplo simple de cómo funciona
//tu código para enviar los datos
}

Como el objetivo final es tener tu propio sistema de pago, te recomendaría que revises este tutorial que explica cómo integrar tu propia pasarela de pago:

https://www.skyverge.com/blog/how-to-create-a-simple-woocommerce-payment-gateway/

22 ene 2018 05:42:03
Comentarios

¿Qué tal si usas este hook: woocommerce_review_order_after_submit? El problema es que mi http://localhost/hooking es una página php, he intentado poner algún código como global $woocommerce; $items = $woocommerce->cart->get_cart(); function process_payment($order_id) { $order = new WC_Order($order_id); return array('result' => 'success', 'redirect' => $order->get_checkout_payment_url( true )); } pero parece que no funciona

bonjourimcam bonjourimcam
22 ene 2018 05:49:13

El código que te di debería estar en un plugin o en el functions.php de tu tema y en esa función wc_send_order_to_mypage haces una petición POST a tu página php, por ejemplo

Mederic Mederic
22 ene 2018 05:56:41

Gracias, pero ¿cómo puedo obtener la lista de artículos y llevarla a mypage?

bonjourimcam bonjourimcam
22 ene 2018 06:01:00

Si no sabes cómo hacer una redirección en PHP, no deberías estar codificando algo así. Mira esto: https://www.skyverge.com/blog/how-to-create-a-simple-woocommerce-payment-gateway/

Mederic Mederic
22 ene 2018 06:03:53

Sí, voy a revisarlo, gracias por tu ayuda, compañero. ¡Muchas gracias!

bonjourimcam bonjourimcam
22 ene 2018 06:33:17