לאחר תשלום מקוון, הקונה מקבל קבלה אלקטרונית בדוא"ל כנדרש לפי 54-FZ. הבעיה: עד 20% מהודעות כאלה מגיעות לספאם — במיוחד עם שירותי דוא"ל המוניים כמו Gmail ו-Yandex. המשתמש אינו רואה את הקבלה, והחנות מסתכנת בקנסות מצד שירות המס הפדרלי על כל קבלה שלא נמסרה. שליחת הקבלה דרך מסנג'ר — Telegram או WhatsApp — פותרת את בעיית המסירה: מסנג'רים נקראים לעתים קרובות יותר ובמהירות רבה יותר, עם אחוז מסירה המגיע ל-99%. אנו נגדיר תהליך זה עבור ה-Bitrix שלך: נצרף מטפל אירועים לאירוע התשלום, נשלוף את כתובת הקבלה ממודול הקופה, ונשלח אותה למשתמש במסנג'ר הנבחר. בנוסף, אנו מגדירים גיבוי SMS אם המסנג'ר אינו זמין. חיסכון בקנסות והגדלת נאמנות הלקוחות הם התוצאות המעשיות של אינטגרציה כזו.
יתרונות המסנג'רים על פני דוא"ל
| מאפיין | דוא"ל | מסנג'ר (Telegram/WhatsApp) |
|---|---|---|
| אחוז מסירה | 70-80% | 98-99% |
| זמן קריאה ממוצע | 2-3 שעות | 1-2 דקות |
| נוחות | דורש חיפוש בתיבת הדואר | תמיד בצ'אט |
לפי מכתב שירות המס הפדרלי מס' ED-4-20/12470@, אי שליחת קבלה גוררת קנס. מסנג'רים פותרים בעיה זו.
כיצד להגדיר שליחת קבלה ל-Telegram?
הקבלה הפיסקלית נוצרת על ידי מודול הקופה ברגע אישור התשלום. Bitrix עובד עם קופות אונליין דרך מודולים: atol.online, evotor.kassa, orangedata ודומים. לאחר הפיסקליזציה, המודול שומר את כתובת הקבלה בטבלת b_sale_pay_system_action או בשדה המותאם אישית של התשלום.
האירוע OnSaleOrderPaid (מודול sale) — עד לרגע זה הקבלה אמורה כבר להיווצר. בהתאם למודול הקופה, זה עשוי להיות סינכרוני או עם עיכוב של עד 30 שניות.
קבלת כתובת הקבלה ממודול ATOL
// Читаем 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],
],
],
]),
]; כיצד לקבל את כתובת הקבלה ממודול אסינכרוני?
מודולים אסינכרוניים (ATOL עם תור, Evotor עם עיכוב) אינם מחזירים את כתובת הקבלה מיד לאחר התשלום. במקום // Читаем 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 всегда отправляется стандартным механизмом Битрикс } ); עבור ATOL. זה מבטיח שהכתובת כבר נשמרה במסד הנתונים. אם אירוע כזה חסר, אנו מארגנים סקירה תקופתית דרך סוכן: כל 5 שניות אנו בודקים אם הקבלה הופיעה, עד 10 ניסיונות.
הוראות הגדרה
- התקן והפעל את מודול הקופה האונליין (ATOL, Evotor, Orange Data).
- הוסף שדות מותאמים אישית לאחסון מזהה הצ'אט של Telegram ומספר הטלפון עבור WhatsApp.
- יישם את מטפל אירועי התשלום כפי שמוצג לעיל.
- הגדר את ה-API של בוט Telegram ושל WhatsApp Business.
- בדוק את התרחיש בסביבת בדיקה: שלם עבור הזמנה ובדוק את מסירת הקבלה.
סביבת בדיקה
אנו פורסים עותק של האתר שלך עם הקופה האונליין במצב ניפוי שגיאות. לאחר בדיקות מוצלחות, אנו מעבירים לסביבת הייצור.מה כלול בעבודה
| שלב | תיאור | משך |
|---|---|---|
| ניתוח | בחינת מודול הקופה הנוכחי, שדות משתמש, APIs של מסנג'רים | 1-2 שעות |
| יישום | כתיבת המטפל, הגדרת שליחה | 4-8 שעות |
| בדיקות | אימות בסביבת בדיקה עם קבלה אמיתית | 1-2 שעות |
| תיעוד | הוראות הפעלה, תיאורי אירועים | שעה אחת |
| הדרכה | הדגמת פעולה, מענה על שאלות | 0.5 שעה |
זמן הגדרה: מיום עבודה אחד עד 3 ימי עבודה בהתאם למורכבות.
אנו מבטיחים שהקבלה תימסר למסנג'ר תוך 1-2 דקות לאחר התשלום. במקרה של פיסקליזציה אסינכרונית, לא יותר מ-30 שניות לאחר הופעת הכתובת.
השוואת ערוצי מסירה
| מאפיין | Telegram | |
|---|---|---|
| אחוז מסירה | 99% | 98% |
| מהירות קריאה | 30-60 שניות | 1-2 דקות |
| תמיכה בכפתורים | כן (InlineKeyboard) | כן (דרך WhatsApp Business API) |
| מורכבות הגדרה | נמוכה | בינונית (דורש Business API) |
| מגבלות | אין מגבלות | 1000 הודעות ביום עבור Business API |
בחירת הערוץ תלויה בקהל: Telegram קל יותר להגדרה, WhatsApp פופולרי יותר ב-B2C. אנו ממליצים להגדיר את שניהם עם עדיפות למשתמש.
המומחיות שלנו
- מומחי 1C-Bitrix מוסמכים עם ניסיון של למעלה מ-5 שנים.
- ביצענו בהצלחה יותר מ-50 אינטגרציות של קופות אונליין עם Bitrix ו-Bitrix24.
- תמיכה בכל המודולים הפופולריים: ATOL, Evotor, Orange Data, וכן מודולים מותאמים אישית.
- ייעוץ ראשוני וחודש תמיכה לאחר ההשקה.
צור קשר כדי לדון בפרטים. הזמינו הגדרה במפתח פתוח, והלקוחות שלכם תמיד יקבלו קבלות בזמן.

