Добавить в корзинуПозвонить
Найти в Дзене

Как добавить IP адрес покупателя в информацию о заказе и в письмо на сайте на 1С-Битрикс. Пошаговая инструкция

Этот код добавит IP адрес в заказ админке сайта Скопировать весь код use Bitrix\Main\EventManager; use Bitrix\Main\Service\GeoIp\Manager; EventManager::getInstance()->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'saveBuyerIpToOrder'); function saveBuyerIpToOrder(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); // Получаем реальный IP-адрес покупателя с учетом прокси $ip = Manager::getRealIp(); if (empty($ip)) { return; } // Получаем коллекцию свойств заказа $propertyCollection = $order->getPropertyCollection(); // ID созданного свойства, замените на свой $buyerIpPropertyId = 22; // <-- Укажите реальный ID вашего свойства // Ищем свойство по ID $property = $propertyCollection->getItemByOrderPropertyId($buyerIpPropertyId); if (!$property) { // Альтернативный поиск по символьному коду, если не нашли по ID foreach ($propertyCollection as $prop) { if ($prop->getField('CODE') == 'BUYER_IP') { $property = $prop; break; } } } // Если свойство найдено, сохраняем IP if
Оглавление

Получаем IP адрес покупателя

Этот код добавит IP адрес в заказ админке сайта Скопировать весь код use Bitrix\Main\EventManager; use Bitrix\Main\Service\GeoIp\Manager; EventManager::getInstance()->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'saveBuyerIpToOrder'); function saveBuyerIpToOrder(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); // Получаем реальный IP-адрес покупателя с учетом прокси $ip = Manager::getRealIp(); if (empty($ip)) { return; } // Получаем коллекцию свойств заказа $propertyCollection = $order->getPropertyCollection(); // ID созданного свойства, замените на свой $buyerIpPropertyId = 22; // <-- Укажите реальный ID вашего свойства // Ищем свойство по ID $property = $propertyCollection->getItemByOrderPropertyId($buyerIpPropertyId); if (!$property) { // Альтернативный поиск по символьному коду, если не нашли по ID foreach ($propertyCollection as $prop) { if ($prop->getField('CODE') == 'BUYER_IP') { $property = $prop; break; } } } // Если свойство найдено, сохраняем IP if ($property) { $property->setValue($ip); } }
Теперь в админке сайта в информации о заказе появится IP адрес покупателя

Добавляем IP адрес в письмо о новом заказе

Не забудьте в почтовый шаблон добавить вывод

Почтовые шаблоны в админке сайта находятся вот тут: "Рабочий стол - Настройки- Настройки продукта -Почтовые и СМС события - Почтовые шаблоны"

IP-адрес покупателя: #BUYER_IP#


Этот код добавит IP адрес в письмо о заказе Скопировать весь код AddEventHandler("sale", "OnOrderNewSendEmail", "AddBuyerIpToEmail"); function AddBuyerIpToEmail($orderId, &$eventName, &$arFields) { // Загружаем заказ if (\Bitrix\Main\Loader::includeModule('sale')) { $order = \Bitrix\Sale\Order::load($orderId); if ($order) { // Получаем коллекцию свойств заказа $propertyCollection = $order->getPropertyCollection(); // Ищем свойство с кодом BUYER_IP (или используйте ID 22 как в вашем коде) $ipProperty = $propertyCollection->getItemByOrderPropertyCode('BUYER_IP'); // Если не нашли по коду, ищем по ID if (!$ipProperty) { $buyerIpPropertyId = 22; // Укажите ваш ID свойства $ipProperty = $propertyCollection->getItemByOrderPropertyId($buyerIpPropertyId); } // Если свойство найдено и имеет значение, добавляем его в письмо if ($ipProperty) { $ipValue = $ipProperty->getValue(); if (!empty($ipValue)) { // Добавляем IP в массив полей письма $arFields["BUYER_IP"] = $ipValue; $arFields["BUYER_IP_FORMATTED"] = "IP-адрес покупателя: " . $ipValue; } } } } }
В письме о заказе IP адрес придет в таком виде