Как настроить отправку своих почтовых событий в 1С-Битрикс при оформлении заказа

В 1С-Битрикс привязка своих почтовых событий при оформлении заказа, покупке, оплате и других действиях реализуется через стандартный функционал почтовых событий и обработчиков событий (событийное API). Это позволяет интегрировать кастомные процессы отправки email или изменять шаблоны уведомлений.

Отправка своих почтовых событий в при оформлении заказа

Вот пошаговая инструкция, как это сделать:

1. Создание собственного почтового события

Прежде чем отправлять письмо, необходимо создать новое почтовое событие:

1.1. Добавление типа события:

  1. Перейдите в административной панели в меню: Настройки → Почтовые события → Типы почтовых событий.
  2. Нажмите «Добавить тип» или используйте уже существующий.
  3. В форме укажите код, например: MY_CUSTOM_ORDER_EVENT.
  4. Пропишите имя (например: «Уведомление о новом заказе»), описание и список параметров, которые вы будете передавать.

1.2. Настройка шаблона:

  1. Перейдите в Настройки → Почтовые события → Почтовые шаблоны.
  2. Нажмите «Добавить шаблон» и привяжите его к созданному типу.
  3. В самом шаблоне пропишите текст письма, используя ранее указанные параметры (например, #ORDER_ID#, #USER_EMAIL# и т.д.).

Теперь ваш почтовый шаблон готов к применению.


2. Привязка события через событийное API

Чтобы отправлять письма при определённых действиях, необходимо привязать обработчики к соответствующим событиям.

2.1. Использование обработчика заказов

Для оформления заказов, оплаты, изменения статуса и других действий в модуле интернет-магазина (sale) используются различные события. В основном это события из модуля SALE.

Пример событий:

  • OnOrderAdd — вызывается при создании нового заказа.
  • OnSalePayOrder — вызывается при успешной оплате заказа.
  • OnSaleStatusOrder — вызывается при изменении статуса заказа.

Пример кода для привязки:

// регистрируем обработчик в init.php
AddEventHandler("sale", "OnOrderAdd", "SendCustomMailOnOrderAdd");

function SendCustomMailOnOrderAdd($orderId, $fields) {
    // Получение данных заказа
    $arOrder = CSaleOrder::GetByID($orderId);

    // Формирование параметров для почтового события
    $arFields = array(
        "ORDER_ID" => $orderId,
        "USER_EMAIL" => $arOrder["USER_EMAIL"],
        "PRICE" => $arOrder["PRICE"],
        "DATE_INSERT" => $arOrder["DATE_INSERT"],
    );
    
    // Отправка почтового события
    CEvent::Send("MY_CUSTOM_ORDER_EVENT", SITE_ID, $arFields);
}

В этом примере используется метод CEvent::Send для отправки почтового события, созданного ранее.


3. Возможные события для обработки

Вы можете привязаться к разным событиям и реализовать собственные сценарии. Например:

  • Оформление заказа: OnOrderAdd.
  • Оплата заказа: OnSalePayOrder или более новый API события для платежей \Bitrix\Sale\Payment::OnAfterPaymentPaid.
  • Изменение статуса заказа: OnSaleStatusOrder.
  • Добавление продукции в корзину: OnBeforeBasketAdd или OnBasketAdd.

4. Как работать с современным API + обработка в D7

Если вы хотите использовать более современный подход через пространство имён D7, можно зарегистрировать обработчик в классе событий:

use \Bitrix\Main\EventManager;

EventManager::getInstance()->addEventHandler(
    "sale", 
    "OnOrderAdd", 
    "MyNamespace\\OrderHandler::onOrderAdd"
);

class OrderHandler {
    public static function onOrderAdd($orderId, $fields) {
        $arOrder = CSaleOrder::GetByID($orderId);

        // Формируем данные для письма
        $arFields = array(
            "ORDER_ID" => $orderId,
            "USER_EMAIL" => $arOrder["USER_EMAIL"],
            "PRICE" => $arOrder["PRICE"],
            "DATE_INSERT" => $arOrder["DATE_INSERT"],
        );

        // Отправляем письмо
        \Bitrix\Main\Mail\Event::send(array(
            "EVENT_NAME" => "MY_CUSTOM_ORDER_EVENT",
            "LID" => SITE_ID,
            "C_FIELDS" => $arFields,
        ));
    }
}

D7 и EventManager предоставляют более гибкий подход для работы с событиями.


5. Тестирование

  1. Убедитесь, что ваше почтовое событие корректно создано в административной панельной системе.
  2. Проверьте логи в настройках модуля почтовых событий, чтобы убедиться, что письма отправляются.
  3. Для отладки используйте запись в лог-файлы или отладчики.

Теперь ваш сайт на Битриксе будет отправлять кастомные уведомления пользователям при выполнении указанных действий!

Теги:  события, почта

Интернет-магазин от 120 000 руб., срок от 4 недель

Платформа для продажи товаров или услуг. Включает интерактивные формы обратной связи в каждой карточке товара, а также множество статичных и динамичных разделов.

Корпоративный сайт от 60 000 руб., срок от 3 недель

Готовый информационный ресурс, включающий лицензию на 1С-Битрикс «Стандарт», технологию «Композитный сайт».

Лендинг от 25 000 руб., срок от 2 недель

Компактный сайт, идеально подходящий для старта. На одной странице можно представить ключевые преимущества вашей компании и разместить форму для обратной связи.