Хук и отправка данных Woocommerce после нажатия кнопки "Разместить заказ"

22 янв. 2018 г., 05:32:50
Просмотры: 55.3K
Голосов: 3

Я ищу способ добавить хук на страницу оформления заказа WooCommerce (http://localhost/checkout). Я хочу отправлять товары корзины, адрес доставки и информацию о пользователе на другую страницу, например http://localhost/hooking, после нажатия кнопки "Разместить заказ" для дальнейших целей. Возможно ли это и как это сделать?

2
Комментарии

Лучше всего сделать это при завершении заказа

Mederic Mederic
22 янв. 2018 г. 05:34:26

Потому что у меня есть другой способ оплаты, который требует элементы корзины Woocommerce для начала оплаты. @@. Очень запутанная штука @@.

Спасибо за ответ, @Mederic.

bonjourimcam bonjourimcam
22 янв. 2018 г. 05:41:00
Все ответы на вопрос 1
5

Для этих трех возможностей:

Если вы действительно хотите сделать это при оформлении заказа, вам нужно использовать хук:

woocommerce_new_order

Однако я рекомендую использовать хук:

woocommerce_order_status_completed

Это гарантирует, что заказ будет завершен перед отправкой информации.

Чтобы получить информацию перед оформлением платежа, вы всегда можете использовать:

woocommerce_before_checkout_billing_form

Если это все еще не работает, вы можете проверить список хуков:

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

Тогда у вас будет что-то вроде:

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
        ];
//из объекта $order вы можете получить всю информацию о товарах и т.д.
//выше приведен простой пример работы
//ваш код для отправки данных
}

Поскольку конечная цель - иметь собственную платежную систему, я рекомендую ознакомиться с этим руководством, которое объясняет, как интегрировать собственный платежный шлюз:

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

22 янв. 2018 г. 05:42:03
Комментарии

Как насчет использования этого хука: woocommerce_review_order_after_submit. Проблема в том, что моя страница http://localhost/hooking — это php-страница. Я пробовал добавить код типа 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 )); } но, кажется, это не работает

bonjourimcam bonjourimcam
22 янв. 2018 г. 05:49:13

Код, который я вам дал, должен быть в плагине или в functions.php вашей темы, и в этой функции wc_send_order_to_mypage вы делаете POST-запрос на свою php-страницу, например

Mederic Mederic
22 янв. 2018 г. 05:56:41

Спасибо, но как я могу получить список товаров и передать его на mypage?

bonjourimcam bonjourimcam
22 янв. 2018 г. 06:01:00

Если вы не знаете, как сделать редирект в php, вам не стоит кодить что-то подобное. Посмотрите вот это: https://www.skyverge.com/blog/how-to-create-a-simple-woocommerce-payment-gateway/

Mederic Mederic
22 янв. 2018 г. 06:03:53

Даа, я проверю, спасибо за помощь, приятель. Огромное спасибо!!!!.

bonjourimcam bonjourimcam
22 янв. 2018 г. 06:33:17