// Фильтруем вывод на странице оформления заказа, чтобы поддерживать HTML // Фильтруем вывод в формах оформления заказа, чтобы поддерживать HTML // LIFEPAY CLOUDPRINT ORDER_ GOOGLE GEMINI /** * Полностью заменяем логику фискализации LIFE PAY для точечного отключения. * Этот метод копирует всю логику плагина, чтобы избежать фатальных ошибок * из-за некорректной структуры оригинального плагина. */ // 1. Управляющая функция, которая заменяет оригинальное действие на наше. function my_theme_final_lifepay_replacement() { // Снимаем оригинальную функцию с хука, используя точные параметры. remove_action( 'woocommerce_order_status_processing', 'lifepay_order_status_processing', 10, 2 ); // Добавляем нашу новую, полностью автономную функцию. add_action( 'woocommerce_order_status_processing', 'my_replacement_lifepay_logic', 10, 2 ); } add_action( 'init', 'my_theme_final_lifepay_replacement' ); // 2. Наша новая функция, содержащая всю логику фискализации. function my_replacement_lifepay_logic( $order_id, $order ) { // Проверяем, что объект заказа существует. if ( ! $order ) { return; } // ID вашего шлюза для оплаты с баланса. $internal_wallet_gateway_id = 'woo_gateway_wallet_payment'; // ==> НАША ГЛАВНАЯ ПРОВЕРКА <== // Если способ оплаты - это внутренний баланс, то мы ничего не делаем. if ( $order->get_payment_method() === $internal_wallet_gateway_id ) { return; // Просто выходим из функции, пропуская фискализацию. } // --- ЕСЛИ ЭТО ЛЮБОЙ ДРУГОЙ СПОСОБ ОПЛАТЫ, ВЫПОЛНЯЕМ ЛОГИКУ ФИСКАЛИЗАЦИИ --- // Проверяем, что плагин lifepay вообще активен, чтобы не вызывать ошибок. if ( ! class_exists('LP_Woo') ) { return; } // Шаг 1: Получаем настройки плагина lifepay точно так же, как это делает сам плагин. $lp_woo_id = 'lp_woo'; $data = []; $data['enable'] = get_option('wc_' . $lp_woo_id . '_enable') == 'yes' ? 1 : 0; $data['test'] = get_option('wc_' . $lp_woo_id . '_testMode') == 'yes' ? 1 : 0; $data['mode'] = get_option('wc_' . $lp_woo_id . '_mode'); $data['login'] = get_option('wc_' . $lp_woo_id . '_login'); $data['apikey'] = get_option('wc_' . $lp_woo_id . '_apiKey'); $target_serial = get_option('wc_' . $lp_woo_id . '_targetSerial'); if (!empty($target_serial)) { $data['target_serial'] = $target_serial; } // Шаг 2: Копируем всю логику обработки и отправки запроса из функции lifepay_payment_processing. $data['type'] = 'payment'; // Мы обрабатываем только платеж $data['purchase'] = []; // Собираем товары в заказе foreach ( $order->get_items() as $item_id => $item ) { $product = $item->get_product(); $price_incl_tax = wc_get_price_including_tax($product, ['qty' => 1]); $itemWrapper = []; $itemWrapper['quantity'] = $item->get_quantity(); $itemWrapper['price'] = round($price_incl_tax, 2); $itemWrapper['name'] = $item->get_name(); // Обработка налогов $taxes = $item->get_taxes(); $tax_rate = 0; if (!empty($taxes['total'])) { $tax_rates = WC_Tax::get_rates( $item->get_tax_class() ); if (!empty($tax_rates)) { $rate = reset($tax_rates); $tax_rate = round($rate['rate']); } } $lp_tax_array = [0, 10, 18, 20]; // Добавим 20% на всякий случай if (in_array($tax_rate, $lp_tax_array)) { $itemWrapper['tax'] = "vat" . $tax_rate; } else { $itemWrapper['tax'] = "none"; } $data['purchase']['products'][] = $itemWrapper; } // Добавляем доставку, если она есть if ( $order->get_shipping_total() > 0 ) { $itemShipment = []; $itemShipment['name'] = 'Доставка'; $itemShipment['price'] = round( $order->get_shipping_total() + $order->get_shipping_tax(), 2 ); $itemShipment['quantity'] = 1; // Налог на доставку $shipping_tax_rate = 0; $shipping_taxes = $order->get_shipping_taxes(); if (!empty($shipping_taxes)) { $shipping_tax_rates = WC_Tax::get_shipping_tax_rates(); if (!empty($shipping_tax_rates)) { $rate = reset($shipping_tax_rates); $shipping_tax_rate = round($rate['rate']); } } if (in_array($shipping_tax_rate, $lp_tax_array)) { $itemShipment['tax'] = "vat" . $shipping_tax_rate; } else { $itemShipment['tax'] = "none"; } $data['purchase']['products'][] = $itemShipment; } // Добавляем данные клиента и заказа $customer_phone = preg_replace("/[^0-9]/", '', $order->get_billing_phone()); $data['customer_phone'] = $customer_phone; $data['customer_email'] = $order->get_billing_email(); $data['card_amount'] = $order->get_total(); $data['ext_id'] = (string) $order->get_id(); // Шаг 3: Отправляем cURL запрос (полная копия из плагина) $request = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://sapi.life-pay.ru/cloud-print/create-receipt'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $request); $result = curl_exec($curl); curl_close($curl); $resultJson = @json_decode($result); // Шаг 4: Добавляем примечание к заказу (полная копия из плагина) if (isset($resultJson->code) && $resultJson->code == 0) { $order->add_order_note("Платеж фискализирован через LIFE PAY (кастомная функция)."); } else { $message = isset($resultJson->message) ? $resultJson->message : 'Неизвестная ошибка фискализации LIFE PAY.'; $order->add_order_note($message); } } Страница не найдена - Global.Tier1.shop Телеграм канал Tier1.shop - продажа ссылок с главных страниц

Подписывайтесь на наш телеграм-канал: @tier1shop!

Похоже, что такой страницы не существует. Может быть попробуете поискать?