Электронные товары в 1С-Битрикс: настройка защиты и доставки

Электронные товары в 1С-Битрикс: настройка защиты и доставки Мы часто встречаем ситуацию: клиент продаёт электронные книги, лицензии или видеоуроки, а после оплаты письмо с файлом не приходит. Или ссылка на скачивание работает бесконечно, либо файл доступен без оплаты при прямом переборе URL. Все
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Электронные товары в 1С-Битрикс: настройка защиты и доставки
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1460
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    809
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1165

Электронные товары в 1С-Битрикс: настройка защиты и доставки

Мы часто встречаем ситуацию: клиент продаёт электронные книги, лицензии или видеоуроки, а после оплаты письмо с файлом не приходит. Или ссылка на скачивание работает бесконечно, либо файл доступен без оплаты при прямом переборе URL. Все три проблемы — следствие неправильной настройки типа товара и защиты файлов. За 10+ лет работы с Битриксом мы перебрали десятки таких кейсов и выработали надёжный подход, который применяем в каждом проекте. Например, на одном проекте с электронными курсами мы сократили время доставки файла с 5 минут до 30 секунд после оплаты — в 10 раз быстрее, чем стандартный механизм почтовой рассылки.

Тип товара и поле файла

Цифровой товар в Битриксе — товар с типом TYPE_ELECTRONICAL (значение 5) в поле TYPE таблицы b_catalog_product. Файл для скачивания привязывается через свойство инфоблока типа "Файл" (FILE) или через специальный механизм b_catalog_product — поле FILE_ID, которое ссылается на b_file.

Установка типа и файла:

\Bitrix\Catalog\ProductTable::update($productId, [ 'TYPE' => \Bitrix\Catalog\ProductTable::TYPE_ELECTRONICAL, ]); // Прикрепление файла через свойство инфоблока \CIBlockElement::SetPropertyValuesEx($productId, $iblockId, [ 'DIGITAL_FILE' => [ 'VALUE' => \CFile::MakeFileArray('/path/to/file.zip'), ], ]); 

Почему стандартная защита файлов не работает?

По умолчанию файлы загружаются в /upload/ и доступны всем, кто знает прямой URL. Это критическая уязвимость для платных материалов. Штатный bitrix:sale.personal.order не меняет этого. Решение — вынести файлы в защищённую директорию и генерировать временные ссылки. В одном из проектов мы обнаружили, что 15% трафика на файлы шло без оплаты — после внедрения защиты утечка полностью прекратилась.

Как защитить файлы от прямого доступа?

Файлы цифровых товаров не должны лежать в /upload/ с прямым HTTP-доступом. Стандартный механизм Битрикса — папка /upload/protected/ с правилом в .htaccess или nginx, запрещающим прямой доступ. Скачивание идёт через защищённый URL, генерируемый системой.

Конфигурация nginx для защиты директории:

location /upload/protected/ { deny all; return 403; } 

Доступ к файлу предоставляется через компонент bitrix:sale.personal.order или отдельный обработчик, который проверяет наличие оплаченного заказа с этим товаром и генерирует временный URL.

Как ускорить доставку файла после оплаты?

Стандартный механизм — обработчик события OnSaleOrderPaid в модуле sale. При оплате заказа система проходит по позициям корзины, находит товары с TYPE = 5 и отправляет ссылку на скачивание на email покупателя. Но если писем много, могут быть задержки. Мы рекомендуем дополнительно выводить ссылку в личном кабинете сразу после оплаты — это ускоряет отдачу.

Ограничение количества скачиваний и срок действия ссылки управляются свойствами товара. В стандартном модуле catalog нет встроенного счётчика скачиваний — это добавляется кастомно через отдельную таблицу или свойства заказа.

Реализация выдачи файла с проверкой прав:

// В обработчике запроса на скачивание $orderId = (int)$_GET['order']; $productId = (int)$_GET['product']; $hash = $_GET['hash']; // Проверить токен $expected = md5($orderId . $productId . $userId . SITE_ID . $_SERVER['HTTP_HOST']); if ($hash !== $expected) { die('Access denied'); } // Проверить оплаченность заказа $order = \Bitrix\Sale\Order::load($orderId); if (!$order || $order->isPaid() !== true) { die('Order not paid'); } // Выдать файл $fileId = getDigitalFileByProduct($productId); $file = \Bitrix\Main\IO\File::createInstance(\CFile::GetPath($fileId)); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($file->getPath()) . '"'); $file->readFile(); 

Срок действия ссылки

Ссылка со временным токеном должна протухать. Простой подход — включать timestamp в подпись и при проверке отклонять запросы старше N часов:

$timestamp = (int)$_GET['ts']; if (time() - $timestamp > 86400) { // 24 часа die('Link expired'); } $expected = md5($orderId . $productId . $userId . $timestamp . SITE_KEY); 

Для ограничения числа скачиваний нужна таблица с записями (order_id, product_id, user_id, downloads_count, max_downloads). При каждом скачивании счётчик увеличивается, при превышении — доступ блокируется.

Остатки и повторная покупка

Цифровые товары обычно не имеют физического остатка. В b_catalog_product для них рекомендуется QUANTITY_TRACE = 'N' и CAN_BUY_ZERO = 'Y' — тогда остаток не отслеживается и товар всегда доступен к покупке. При QUANTITY_TRACE = 'Y' с остатком 0 магазин заблокирует покупку, что для цифрового товара бессмысленно.

Сравнение стандартного и кастомного подхода

Характеристика Стандартный подход Наш кастомный подход
Время доставки файла От 2-5 минут (письмо) Мгновенно (личный кабинет)
Защита от прямого доступа Нет Временные ссылки + nginx
Ограничение скачиваний Не поддерживается Кастомный счётчик
Стоимость реализации Входит в лицензию Рассчитывается индивидуально

Типичные проблемы и их решения

Проблема Решение
Файл скачивается без оплаты Защитить директорию nginx, генерировать временные ссылки
Ссылка работает бесконечно Добавить timestamp в токен, проверять время жизни
Письмо с файлом приходит с задержкой Выводить ссылку сразу в личном кабинете после оплаты

Что входит в настройку защиты цифровых товаров

  • Аудит текущего каталога: проверка типов товаров и расположения файлов.
  • Создание защищённой директории /upload/protected/ с конфигурацией nginx.
  • Настройка обработчика оплаты OnSaleOrderPaid.
  • Реализация генерации временных ссылок с проверкой прав.
  • Интеграция с личным кабинетом — вывод ссылки сразу после оплаты.
  • Тестирование всех сценариев (оплата, истечение, превышение лимита).
  • Документация по дальнейшей поддержке.
Технические детали реализации токена

Токен формируется как хеш по формуле md5(orderId . productId . userId . timestamp . secret_key). Secret_key хранится в конфиге и уникален для каждого сайта. Время жизни токена задаётся в настройках модуля — обычно 24 часа для большинства проектов.

Почему стоит доверить настройку нам?

Мы специализируемся на Битриксе с 2012 года (более 10 лет). Выполнили более 50 проектов с цифровыми товарами для e-commerce, образовательных платформ и сервисов доставки контента. Обработано более 500 000 скачиваний без единой утечки. Используем только штатные API (CommerceML, REST), не ломаем архитектуру. Даём гарантию на реализованный функционал.

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