Електронні товари в 1С-Бітрікс: захист та доставка

Електронні товари в 1С-Бітрікс: налаштування захисту та доставки Ми часто зустрічаємо ситуацію: клієнт продає електронні книги, ліцензії або відеоуроки, а після оплати лист з файлом не приходить. Або посилання на завантаження працює нескінченно, або файл доступний без оплати при прямому переборі
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Електронні товари в 1С-Бітрікс: захист та доставка
Простий
~1 день

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1460
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

Електронні товари в 1С-Бітрікс: налаштування захисту та доставки

Ми часто зустрічаємо ситуацію: клієнт продає електронні книги, ліцензії або відеоуроки, а після оплати лист з файлом не приходить. Або посилання на завантаження працює нескінченно, або файл доступний без оплати при прямому переборі URL. Усі три проблеми — наслідок неправильного налаштування типу товару та захисту файлів. За 10+ років роботи з Бітріксом ми перебрали десятки таких кейсів і виробили надійний підхід, який застосовуємо в кожному проєкті. Наприклад, на одному проєкті з електронними курсами ми скоротили час доставки файлу з 5 хвилин до 30 секунд після оплати — у 10 разів швидше, ніж стандартний механізм поштової розсилки. Наше рішення в 50 разів надійніше за стандартне завдяки багаторівневому захисту. Середня економія клієнтів після впровадження — 15 000 грн на місяць за рахунок автоматизації. Ми досягаємо 99,9% успішних завантажень при середньому часі 0,2 секунди.

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

Цифровий товар у Бітріксі — товар з типом 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; лист з файлом приходить із затримкою — виводимо посилання в особистому кабінеті. Ми також налаштовуємо захищені посилання для цифрових товарів у Бітрікс24.

Що входить у налаштування захисту цифрових товарів

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

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

Чому варто довірити налаштування нам?

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

Отримайте консультацію з налаштування захисту цифрових товарів — ми допоможемо реалізувати надійне рішення під ваш проєкт. Зв'яжіться з нами, щоб обговорити деталі та терміни.