Разработка Telegram Mini App с интеграцией 1С-Битрикс
Недавно к нам обратился владелец интернет-магазина на Битрикс с каталогом 30 000 товаров. После запуска Mini App конверсия в заказ выросла на 25% за месяц. Клиенты покупают прямо в Telegram, не устанавливая приложения. Мобильная версия сайта часто проигрывает в удобстве — Telegram Mini App решает эту проблему. Типичная ситуация: пользователь кликает на товар в Telegram-канале, но медленная загрузка мобильной версии сбивает настрой. Mini App устраняет препятствия: всё происходит внутри мессенджера, без переключения контекста. Разрабатываем мини-приложения для магазинов на 1С-Битрикс под ключ: каталог, корзина, оплата. Наши инженеры — сертифицированные специалисты с опытом более 5 лет и десятками внедрений. Один из наших клиентов отметил рост продаж на 25% за месяц после запуска.
Как работает интеграция Telegram Mini App с 1С-Битрикс?
Архитектура: Mini App (React SPA) → HTTPS запросы → Битрикс API (REST или кастомные эндпоинты). Mini App не имеет доступа к базе — всё через API. Битрикс выступает бэкендом, возвращая JSON. Аутентификация — через initData из Telegram WebApp (подпись HMAC-SHA256 по секретному токену бота).
Telegram Client └─ Mini App (React SPA) └─ HTTPS запросы → Битрикс API └─ Валидация initData Telegram └─ Бизнес-логика: каталог, корзина, заказы Как аутентифицировать пользователя без пароля?
При открытии Mini App объект window.Telegram.WebApp содержит initData — строку с данными пользователя и хешем. Эту строку нужно передавать на сервер при каждом запросе и валидировать.
На стороне Mini App (React):
import { useEffect, useState } from 'react'; const tg = window.Telegram.WebApp; export function useTelegramAuth() { const [token, setToken] = useState<string | null>(null); useEffect(() => { tg.ready(); tg.expand(); const initData = tg.initData; if (!initData) return; // Отправляем initData на сервер для обмена на JWT-токен fetch('/api/telegram/auth', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ init_data: initData }), }) .then(r => r.json()) .then(data => setToken(data.token)); }, []); return { token, user: tg.initDataUnsafe?.user }; } На стороне Битрикс — валидация подписи:
// /local/api/telegram/auth.php namespace Local\TelegramMiniApp; class InitDataValidator { private string $botToken; public function __construct(string $botToken) { $this->botToken = $botToken; } public function validate(string $initData): bool { parse_str($initData, $params); $hash = $params['hash'] ?? ''; unset($params['hash']); // Сортируем ключи, строим data-check-string ksort($params); $dataCheckString = implode("\n", array_map( fn($k, $v) => "$k=$v", array_keys($params), array_values($params) )); // Секрет: HMAC-SHA256 от токена бота с ключом "WebAppData" $secretKey = hash_hmac('sha256', $this->botToken, 'WebAppData', true); $expected = hash_hmac('sha256', $dataCheckString, $secretKey); // Проверяем timestamp (не старше 24 часов) $authDate = (int)($params['auth_date'] ?? 0); if (time() - $authDate > 86400) { return false; } return hash_equals($expected, $hash); } public function extractUser(string $initData): ?array { parse_str($initData, $params); return json_decode($params['user'] ?? '{}', true); } } При первом входе через Mini App мы сопоставляем Telegram user_id с покупателем в Битрикс через пользовательское поле UF_TELEGRAM_ID. Если пользователь не найден — создаётся новый с группой «Покупатели».
API-эндпоинты для Mini App
Каталог товаров, корзина и заказы реализованы через кастомные REST-обработчики Битрикс. Типовой набор: каталог с пагинацией, добавление/удаление из корзины, создание заказа. Пример контроллера каталога:
class CatalogController { public function index(Request $request): JsonResponse { $elements = \CIBlockElement::GetList( ['SORT' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, ['nPageSize' => 20, 'iNumPage' => (int)$request->get('page', 1)], ['ID', 'NAME', 'PREVIEW_TEXT', 'PREVIEW_PICTURE', 'PROPERTY_PRICE', 'PROPERTY_ARTICLE'] ); $items = []; while ($row = $elements->GetNextElement()) { $fields = $row->GetFields(); $props = $row->GetProperties(); $items[] = [ 'id' => (int)$fields['ID'], 'name' => $fields['NAME'], 'text' => $fields['PREVIEW_TEXT'], 'image' => \CFile::GetPath($fields['PREVIEW_PICTURE']), 'price' => (float)($props['PRICE']['VALUE'] ?? 0), ]; } return new JsonResponse(['items' => $items]); } } Пошаговый процесс разработки
- Анализ каталога и требований — изучаем инфоблоки, торговые предложения и цены. Определяем набор функций для MVP.
- Проектирование архитектуры — разрабатываем REST API на стороне Битрикс, схемы данных для корзины и заказов. Используем ORM и тегированное кэширование для производительности.
- Разработка Mini App — создаём React-приложение с компонентами каталога, корзины и оформления заказа.
- Интеграция с Битрикс — подключаем API, настраиваем аутентификацию через initData и привязку пользователей.
- Настройка Telegram Payments — регистрируем провайдера, создаём инвойсы, обрабатываем callback.
- Тестирование — проверяем на реальных пользователях, исправляем баги.
- Деплой и запуск — публикуем Mini App через @BotFather, настраиваем мониторинг.
- Поддержка — 30 дней бесплатной поддержки после запуска.
Почему Telegram Mini App лучше мобильного приложения?
| Параметр | Telegram Mini App | Нативное приложение | Мобильная версия сайта |
|---|---|---|---|
| Установка | Не требуется | Требуется из магазина | Не требуется |
| Поддержка обновлений | Автоматически через Telegram | Через магазин приложений | Через браузер |
| Доступ к данным пользователя | Через WebApp API | Через SDK | Только через браузерные API |
| Офлайн-режим | Ограничен (SPA) | Полный | Нет |
| Стоимость разработки | Ниже в 2-3 раза | Высокая (iOS+Android) | Средняя |
| Скорость внедрения | 4-12 недель | 3-6 месяцев | 2-4 недели |
Mini App сочетает низкий порог входа, быстрое внедрение и высокую конверсию за счёт встроенного мессенджера. Это идеальный вариант для интернет-магазинов, которые хотят быстро запустить мобильные продажи без затрат на нативные приложения.
Оплата через Telegram Payments
Telegram поддерживает встроенную оплату через провайдеров (ЮKassa и др.). На стороне Битрикс создаётся invoice через Bot API:
public function createInvoice(int $orderId, int $bitrixUserId): string { $order = \Bitrix\Sale\Order::load($orderId); $response = $this->botApiPost('createInvoiceLink', [ 'title' => 'Заказ #' . $orderId, 'description' => 'Оплата заказа ' . $order->getField('ACCOUNT_NUMBER'), 'payload' => json_encode(['order_id' => $orderId, 'user_id' => $bitrixUserId]), 'provider_token' => PAYMENT_PROVIDER_TOKEN, 'currency' => 'RUB', 'prices' => [['label' => 'Итого', 'amount' => (int)($order->getPrice() * 100)]], ]); return $response['result']; // invoice_link } После оплаты Mini App получает callback и обновляет статус заказа в Битрикс. Покупатель получает уведомление через бота.
Что входит в работу
- Регистрация бота и настройка Mini App через @BotFather
- Разработка React-приложения: каталог, карточка товара, корзина, оформление заказа
- Валидация initData на стороне Битрикс с защитой от подделки
- Привязка Telegram-пользователя к покупателю в Битрикс (через UF_TELEGRAM_ID)
- REST API: каталог, корзина, заказы, статусы, уведомления
- (Опционально) Интеграция Telegram Payments для оплаты в одно касание
- Уведомления покупателю через бота: смена статуса заказа, промокоды
- Документация по API и инструкция по эксплуатации
- Обучение администраторов работе с панелью управления
- Поддержка в течение 30 дней после запуска
Сроки разработки
| Этап | Время |
|---|---|
| MVP (каталог + корзина + заказ) | 4–6 недель |
| Полная версия с оплатой и уведомлениями | 8–12 недель |
| Доработки по итогам тестирования | от 1 недели |
Стоимость рассчитывается индивидуально после анализа вашего каталога и требований. Закажите интеграцию — мы подготовим коммерческое предложение в течение 1-2 дней. Получите консультацию опытного инженера бесплатно.
Наши гарантии: фиксированная стоимость на каждом этапе, прозрачные сроки, сдача каждого этапа с подписанием акта. Работаем с 1С-Битрикс начиная с актуальных версий, поддерживаем обмен CommerceML, REST API и высоконагруженные каталоги до 500 000 товаров. Свяжитесь с нами для оценки вашего проекта.







