Разработка 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 товаров. Свяжитесь с нами для оценки вашего проекта.







