Назад

Битрикс API – Сгенерировать купон на скидку

Главная
Блог
Битрикс API – Сгенерировать купон на скидку

Промо-купоны — эффективный инструмент маркетинга, повышающий вовлечённость клиентов. В 1С-Битрикс их можно создавать вручную через административную панель, но для автоматизации процессов удобнее использовать API.

В этой статье рассмотрим, как программно генерировать купоны, настраивать их параметры и избегать распространённых ошибок.

1. Подготовка и проверка модулей

Перед работой с купонами необходимо убедиться, что в системе подключены модули sale и catalog.

if (!CModule::IncludeModule("sale") || !CModule::IncludeModule("catalog")) {
    die("Не удалось подключить необходимые модули Битрикс");
}

2. Генерация уникального кода купона

1С-Битрикс предоставляет функцию CatalogGenerateCoupon(), но она не всегда гарантирует уникальность. Лучше использовать свой генератор с проверкой:

do {
    $couponCode = "PROMO" . rand(1000, 9999); // или uniqid()
    $coupon = Bitrix\Sale\Internals\DiscountCouponTable::getList([
        "filter" => ["COUPON" => $couponCode]
    ])->fetch();
} while ($coupon); // Повторяем, пока не найдём уникальный код

3. Создание купона через DiscountCouponTable

Основные параметры купона:

  • DISCOUNT_ID – ID правила корзины, к которому привязывается купон.

  • TYPE – тип купона (0 – одноразовый, 1 – для одного заказа, 2 – многоразовый).

  • MAX_USE – максимальное число применений (0 – без ограничений).

  • ACTIVE – активность (Y/N).

  • DATE_APPLY – срок действия (опционально).

Пример создания:

use Bitrix\Sale\Internals\DiscountCouponTable;

$fields = [
    "DISCOUNT_ID" => 6,          // ID правила скидки
    "COUPON"      => $couponCode, // Сгенерированный код
    "TYPE"        => 2,           // Многоразовый купон
    "MAX_USE"     => 100,         // Лимит использований
    "ACTIVE"      => "Y",         // Активировать сразу
    "DATE_APPLY"  => "2025-12-31 23:59:59", // Срок действия
    "DESCRIPTION" => "Акция 2025", // Описание
];

$result = DiscountCouponTable::add($fields);

if ($result->isSuccess()) {
    echo "Купон успешно создан: " . $couponCode;
} else {
    echo "Ошибка: " . implode(", ", $result->getErrorMessages());
}

4. Массовая генерация купонов

Если нужно создать несколько купонов, используем цикл:

for ($i = 0; $i < 10; $i++) {
    // Генерация уникального кода
    do {
        $couponCode = "BATCH" . rand(1000, 9999);
        $exists = DiscountCouponTable::getList([
            "filter" => ["COUPON" => $couponCode]
        ])->fetch();
    } while ($exists);

    // Создание купона
    DiscountCouponTable::add([
        "DISCOUNT_ID" => 6,
        "COUPON"      => $couponCode,
        "TYPE"        => 1, // Одноразовый
        "ACTIVE"      => "Y",
    ]);
}

5. Интеграция с CRM и маркетингом

Привязка купонов к пользователям

Можно указать USER_ID при создании:

$fields["USER_ID"] = 123; // ID пользователя в Битрикс

Отправка купонов по email

Используем CEvent::Send():

CEvent::Send("NEW_COUPON", "s1", [
    "EMAIL"   => "client@example.com",
    "COUPON"  => $couponCode,
    "MESSAGE" => "Ваш промокод: " . $couponCode,
]);

6. Возможные ошибки и решения

Ошибка Причина Решение
DISCOUNT_ID не найден Неправильный ID скидки Проверить в marketing > Правила работы с корзиной
Купон уже существует Дублирование кода Использовать проверку на уникальность
Модуль sale не подключён Отсутствует модуль Проверить в Настройки > Модули
Недостаточно прав У пользователя нет доступа Проверить права доступа к API

Заключение

Программное создание купонов в 1С-Битрикс позволяет автоматизировать маркетинговые кампании, раздавать промокоды клиентам и интегрировать скидки с CRM.

Рекомендации:

  • Используйте проверку уникальности кодов.

  • Ограничивайте срок действия (DATE_APPLY).

  • Для массовой генерации применяйте транзакции (startTransaction()).

Теперь вы можете гибко управлять купонами в 1С-Битрикс без ручного ввода!

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи