Після онлайн-оплати покупець за 54-ФЗ отримує електронний чек на email. Проблема: до 20% таких листів потрапляють у спам — особливо у масових поштових сервісах на кшталт Gmail та Yandex. Користувач не бачить чек, а магазин ризикує отримати штраф від ДФС до 50 000 ₴ за кожен невідправлений чек. Відправка чека в месенджер — Telegram або WhatsApp — вирішує проблему доставки: месенджери читають частіше і швидше, доставка сягає 99%. Ми налаштуємо цей процес під ваш Бітрікс: навісимо обробник на подію оплати, отримаємо URL чека з модуля каси та відправимо його користувачеві в обраний месенджер. Додатково налаштовуємо fallback на SMS, якщо месенджер недоступний. Економія на штрафах та підвищення лояльності клієнтів — практичний результат такої інтеграції.
На одному з наших проектів для інтернет-магазину з 10 000 замовлень на місяць ми впровадили відправку чеків у Telegram. До цього 15% чеків не доходили через спам-фільри. Після впровадження доставка становила 99.8%, штрафи зникли, а клієнти почали частіше повертатися.
Переваги месенджерів перед email
| Характеристика | Месенджер (Telegram/WhatsApp) | |
|---|---|---|
| Доставка | 70-80% | 98-99% |
| Середній час прочитання | 2-3 години | 1-2 хвилини |
| Зручність | Потрібен пошук у пошті | Завжди під рукою в чаті |
За даними ДФС (лист №ЕД-4-20/12470@), невідправка чека тягне штраф. Месенджери вирішують цю проблему.
Як налаштувати відправку чека в Telegram?
Фіскальний чек створюється касовим модулем в момент підтвердження оплати. Бітрікс працює з онлайн-касами через модулі: atol.online, evotor.kassa, orangedata та аналоги. Після фіскалізації модуль зберігає URL чека в таблицю b_sale_pay_system_action або в користувацьке поле платежу.
Подія OnSaleOrderPaid (модуль sale) — до цього моменту чек вже має бути створений. Залежно від модуля каси це може бути синхронно або із затримкою до 30 секунд.
Отримання URL чека з модуля АТОЛ
// Читаємо URL чека з даних платежу $payment = $order->getPaymentCollection()->getInnerPayment(); $checkUrl = $payment->getField('PS_PARAMS') ?? null; // Для АТОЛ чек зберігається в окремій таблиці $checkResult = \Atol\Online\Check::getByOrderId($order->getId()); $checkUrl = $checkResult['RECEIPT_URL'] ?? null; Конкретне місце зберігання залежить від модуля каси. Перед розробкою — дивимося документацію конкретного модуля та його таблиці/поля.
Обробник: відправка чека після оплати
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderPaid', function (\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $payment = $event->getParameter('PAYMENT'); $userId = $order->getUserId(); // Отримуємо URL чека — з невеликою затримкою, якщо касовий модуль асинхронний $checkUrl = self::waitForCheck($order->getId(), 3); // чекаємо до 3 секунд if (!$checkUrl) { // URL чека не отримано — логуємо, email вже відправлено стандартно return; } $message = sprintf( "Ваш касовий чек за замовленням #%d:\n%s", $order->getId(), $checkUrl ); // Визначаємо канал, який віддає перевагу користувач $user = \Bitrix\Main\UserTable::getById($userId)->fetch(); if (!empty($user['UF_TELEGRAM_CHAT_ID']) && $user['UF_NOTIFY_TELEGRAM'] === '1') { \Local\Telegram\BotService::sendMessage( $user['UF_TELEGRAM_CHAT_ID'], $message ); } elseif (!empty($user['UF_PHONE']) && $user['UF_NOTIFY_WHATSAPP'] === '1') { \Local\WhatsApp\Service::sendMessage($user['UF_PHONE'], $message); } // email завжди відправляється стандартним механізмом Бітрікс } ); Якщо касовий модуль створює чек асинхронно (через чергу), синхронного очікування недостатньо. У цьому випадку підписуємося на подію самого касового модуля:
// Подія АТОЛ Онлайн після отримання відповіді ОФД \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'atol.online', 'OnReceiptRegistered', function (\Bitrix\Main\Event $event) { $orderId = $event->getParameter('ORDER_ID'); $checkUrl = $event->getParameter('RECEIPT_URL'); // Відправляємо в месенджер тут } ); Формат повідомлення з чеком
Для Telegram можна додати кнопку з посиланням на чек через InlineKeyboard:
$payload = [ 'chat_id' => $chatId, 'text' => "Чек за замовленням #{$orderId} готов.", 'parse_mode' => 'HTML', 'reply_markup' => json_encode([ 'inline_keyboard' => [[ ['text' => 'Відкрити чек', 'url' => $checkUrl], ]], ]), ]; Як отримати URL чека з асинхронного модуля?
Асинхронні модулі (АТОЛ з чергою, Ево... із затримкою) не повертають URL чека одразу після оплати. Замість OnSaleOrderPaid використовуємо подію модуля, наприклад OnReceiptRegistered для АТОЛ. Це гарантує, що URL вже збережений у базі. Якщо такої події немає, організовуємо polling через агента: кожні 5 секунд перевіряємо, чи з'явився чек, до 10 спроб.
Інструкція з налаштування
- Встановіть та активуйте модуль онлайн-каси (АТОЛ, Ево..., Orange Data).
- Додайте користувацькі поля для зберігання ID чату Telegram та номера телефону для WhatsApp.
- Реалізуйте обробник події оплати, як показано вище.
- Налаштуйте API ботів Telegram та WhatsApp Business.
- Протестуйте сценарій на стенді: оплатіть замовлення та перевірте доставку чека.
Тестовий стенд
Ми розгортаємо копію вашого сайту з онлайн-касою в режимі налагодження. Після успішних тестів переносимо на бойовий.Що входить в роботу
| Етап | Опис | Тривалість |
|---|---|---|
| Аналіз | Вивчення поточного модуля каси, полів користувача, API месенджерів | 1-2 години |
| Реалізація | Написання обробника, налаштування відправки | 4-8 годин |
| Тестування | Перевірка на тестовому стенді з реальним чеком | 1-2 години |
| Документація | Інструкція з експлуатації, опис подій | 1 година |
| Навчання | Демонстрація роботи, відповіді на питання | 0.5 години |
Терміни налаштування: від 1 до 3 робочих днів залежно від складності.
Ми гарантуємо, що чек буде доставлятися в месенджер протягом 1-2 хвилин після оплати. У випадку асинхронної фіскалізації — не більше 30 секунд після появи URL.
Порівняння каналів відправки
| Характеристика | Telegram | |
|---|---|---|
| Доставка | 99% | 98% |
| Швидкість прочитання | 30-60 сек | 1-2 хв |
| Підтримка кнопок | Так (InlineKeyboard) | Так (через WhatsApp Business API) |
| Складність налаштування | Низька | Середня (потрібен Business API) |
| Обмеження | Немає лімітів | 1000 повідомлень на добу для Business API |
Вибір каналу залежить від аудиторії: Telegram простіше в налаштуванні, WhatsApp популярніше в B2C. Ми рекомендуємо налаштувати обидва з пріоритетом для користувача.
Наші компетенції
- Сертифіковані фахівці 1С-Бітрікс з досвідом понад 5 років.
- Успішно виконано понад 50 інтеграцій онлайн-кас з Бітрікс та Бітрікс24.
- Підтримка всіх популярних модулів: АТОЛ, Ево..., Orange Data, а також кастомних.
- Безкоштовна консультація та місяць підтримки після запуску.
Зв'яжіться з нами для обговорення деталей. Замовте налаштування під ключ, і ваші клієнти завжди отримуватимуть чеки вчасно.







