Полоса Woocommerce взимает с пользователя плату после покупки дополнительных товаров в рамках допродажи ⇐ Php
Полоса Woocommerce взимает с пользователя плату после покупки дополнительных товаров в рамках допродажи
У меня есть код, который вместо перенаправления пользователя на страницу благодарности сначала перенаправляет его на страницу допродажи, где он может изменить существующий заказ, добавив дополнительные элементы. В первоначальном заказе, который они разместили, запрос на оплату (списание средств) также происходит, но дело в том, что мне нужно взимать с пользователя плату, если он решит купить дополнительный товар за счет дополнительной продажи. Я действительно не знаю, как это сделать. У них есть учетная запись клиента, и платежные реквизиты сохраняются в их учетной записи.
add_action('woocommerce_checkout_order_created', 'set_wc_session_original_order_id'); функция set_wc_session_original_order_id($order) { WC()->session->set('original_order_id', $order->get_id()); } add_action('template_redirect', 'custom_shop_order_process_redirects'); функция custom_shop_order_process_redirects() { if ( is_page('upsell-1') && isset($_GET['woocommerce_checkout_place_order'])) ) { $order_id = WC()->session->get('original_order_id'); $selected_product_id = isset($_GET['selected_product_id']) ? sanitize_text_field($_GET['selected_product_id']) : ''; if ($order_id > 0 && !empty($selected_product_id)) { $order = wc_get_order($order_id); $order->add_product(wc_get_product($selected_product_id)); $order->calculate_totals(); WC()->session->set('upsell-1-viewed', true); wp_redirect('/upsell-2'); Выход; } } elseif ( is_page('upsell-2') && isset($_GET['woocommerce_checkout_place_order'])) ) { $order_id = WC()->session->get('original_order_id'); $selected_product_id = isset($_GET['selected_product_id']) ? sanitize_text_field($_GET['selected_product_id']) : ''; if ($order_id > 0 && !empty($selected_product_id)) { $order = wc_get_order($order_id); $order->add_product(wc_get_product($selected_product_id)); $order->calculate_totals(); WC()->session->set('upsell-2-viewed', true); wp_redirect('/upsell-3'); Выход; } } elseif ( is_page('upsell-3') && isset($_GET['woocommerce_checkout_place_order'])) ) { $order_id = WC()->session->get('original_order_id'); $selected_product_id = isset($_GET['selected_product_id']) ? sanitize_text_field($_GET['selected_product_id']) : ''; if ($order_id > 0 && !empty($selected_product_id)) { $order = wc_get_order($order_id); $order->add_product(wc_get_product($selected_product_id)); $order->calculate_totals(); WC()->session->set('upsell-3-viewed', true); WC()->session->__unset('original_order_id'); wp_redirect($order->get_checkout_order_received_url()); Выход; } } if ( is_page('upsell-1') && isset($_GET['upsell_decline_offer'])) ) { $order_id = WC()->session->get('original_order_id'); если ($order_id > 0) { WC()->session->set('upsell-1-viewed', true); wp_redirect('/upsell-2'); Выход; } } elseif(is_page('upsell-2') && isset($_GET['upsell_decline_offer'])){ $order_id = WC()->session->get('original_order_id'); если ($order_id > 0) { WC()->session->set('upsell-2-viewed', true); wp_redirect('/upsell-3'); Выход; } } elseif(is_page('upsell-3') && isset($_GET['upsell_decline_offer'])){ $order_id = WC()->session->get('original_order_id'); если ($order_id > 0) { $order = wc_get_order($order_id); WC()->session->set('upsell-3-viewed', true); WC()->session->__unset('original_order_id'); wp_redirect($order->get_checkout_order_received_url()); Выход; } } } add_action('woocommerce_thankyou', 'check_if_upsell_was_viewed', 20); функция check_if_upsell_was_viewed(){ if ( is_wc_endpoint_url('заказ получен')) { if(WC()->session->__isset('original_order_id')){ wp_redirect('/upsell-1'); if(WC()->session->__isset('upsell-1-viewed')){ wp_redirect('/upsell-2'); Выход; } elseif(WC()->session->__isset('upsell-2-viewed')){ wp_redirect('/upsell-3'); Выход; } elseif(WC()->session->__isset('upsell-3-viewed')){ $order_id = WC()->session->get('original_order_id'); wp_redirect($order->get_checkout_order_received_url()); Выход; } } } } Правильен ли приведенный ниже код?
if ( class_exists('WC_Stripe') ) { $wc_stripe = WC_Stripe::get_instance(); // Получаем информацию о заказе и клиенте $order = wc_get_order($order_id); $customer = новый WC_Customer($customer_id); // Устанавливаем текущий порядок для экземпляра Stripe $wc_stripe->set_current_order($order); // Обработка платежа $result = $wc_stripe->process_pay($order->get_id()); если ( is_wp_error($result)) { // Обработка ошибок эхо 'Ошибка: '. $result->get_error_message(); } еще { // Платеж успешно обработан echo 'Платеж успешно обработан'; }
У меня есть код, который вместо перенаправления пользователя на страницу благодарности сначала перенаправляет его на страницу допродажи, где он может изменить существующий заказ, добавив дополнительные элементы. В первоначальном заказе, который они разместили, запрос на оплату (списание средств) также происходит, но дело в том, что мне нужно взимать с пользователя плату, если он решит купить дополнительный товар за счет дополнительной продажи. Я действительно не знаю, как это сделать. У них есть учетная запись клиента, и платежные реквизиты сохраняются в их учетной записи.
add_action('woocommerce_checkout_order_created', 'set_wc_session_original_order_id'); функция set_wc_session_original_order_id($order) { WC()->session->set('original_order_id', $order->get_id()); } add_action('template_redirect', 'custom_shop_order_process_redirects'); функция custom_shop_order_process_redirects() { if ( is_page('upsell-1') && isset($_GET['woocommerce_checkout_place_order'])) ) { $order_id = WC()->session->get('original_order_id'); $selected_product_id = isset($_GET['selected_product_id']) ? sanitize_text_field($_GET['selected_product_id']) : ''; if ($order_id > 0 && !empty($selected_product_id)) { $order = wc_get_order($order_id); $order->add_product(wc_get_product($selected_product_id)); $order->calculate_totals(); WC()->session->set('upsell-1-viewed', true); wp_redirect('/upsell-2'); Выход; } } elseif ( is_page('upsell-2') && isset($_GET['woocommerce_checkout_place_order'])) ) { $order_id = WC()->session->get('original_order_id'); $selected_product_id = isset($_GET['selected_product_id']) ? sanitize_text_field($_GET['selected_product_id']) : ''; if ($order_id > 0 && !empty($selected_product_id)) { $order = wc_get_order($order_id); $order->add_product(wc_get_product($selected_product_id)); $order->calculate_totals(); WC()->session->set('upsell-2-viewed', true); wp_redirect('/upsell-3'); Выход; } } elseif ( is_page('upsell-3') && isset($_GET['woocommerce_checkout_place_order'])) ) { $order_id = WC()->session->get('original_order_id'); $selected_product_id = isset($_GET['selected_product_id']) ? sanitize_text_field($_GET['selected_product_id']) : ''; if ($order_id > 0 && !empty($selected_product_id)) { $order = wc_get_order($order_id); $order->add_product(wc_get_product($selected_product_id)); $order->calculate_totals(); WC()->session->set('upsell-3-viewed', true); WC()->session->__unset('original_order_id'); wp_redirect($order->get_checkout_order_received_url()); Выход; } } if ( is_page('upsell-1') && isset($_GET['upsell_decline_offer'])) ) { $order_id = WC()->session->get('original_order_id'); если ($order_id > 0) { WC()->session->set('upsell-1-viewed', true); wp_redirect('/upsell-2'); Выход; } } elseif(is_page('upsell-2') && isset($_GET['upsell_decline_offer'])){ $order_id = WC()->session->get('original_order_id'); если ($order_id > 0) { WC()->session->set('upsell-2-viewed', true); wp_redirect('/upsell-3'); Выход; } } elseif(is_page('upsell-3') && isset($_GET['upsell_decline_offer'])){ $order_id = WC()->session->get('original_order_id'); если ($order_id > 0) { $order = wc_get_order($order_id); WC()->session->set('upsell-3-viewed', true); WC()->session->__unset('original_order_id'); wp_redirect($order->get_checkout_order_received_url()); Выход; } } } add_action('woocommerce_thankyou', 'check_if_upsell_was_viewed', 20); функция check_if_upsell_was_viewed(){ if ( is_wc_endpoint_url('заказ получен')) { if(WC()->session->__isset('original_order_id')){ wp_redirect('/upsell-1'); if(WC()->session->__isset('upsell-1-viewed')){ wp_redirect('/upsell-2'); Выход; } elseif(WC()->session->__isset('upsell-2-viewed')){ wp_redirect('/upsell-3'); Выход; } elseif(WC()->session->__isset('upsell-3-viewed')){ $order_id = WC()->session->get('original_order_id'); wp_redirect($order->get_checkout_order_received_url()); Выход; } } } } Правильен ли приведенный ниже код?
if ( class_exists('WC_Stripe') ) { $wc_stripe = WC_Stripe::get_instance(); // Получаем информацию о заказе и клиенте $order = wc_get_order($order_id); $customer = новый WC_Customer($customer_id); // Устанавливаем текущий порядок для экземпляра Stripe $wc_stripe->set_current_order($order); // Обработка платежа $result = $wc_stripe->process_pay($order->get_id()); если ( is_wp_error($result)) { // Обработка ошибок эхо 'Ошибка: '. $result->get_error_message(); } еще { // Платеж успешно обработан echo 'Платеж успешно обработан'; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как включить случайную сортировку товаров для категорий товаров WooCommerce?
Anonymous » » в форуме Php - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как включить случайную сортировку товаров для категорий товаров WooCommerce?
Anonymous » » в форуме Php - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Корзина Woocommerce взимает налог за доставку отдельно, а не от общего заказа.
Anonymous » » в форуме Php - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-