Антон Долганин веб-разработчик +7 (962) 255-86-13 Написать сообщение
Продажа контента

Продажа контента

Любой процесс продажи закрытой информации решается данным модулем. По вопросам выбора подходящей редакции Битрикс, а также консультированию по выгодному приобретению, пожалуйста, обращайтесь ко мне.
8900 Р
Купить ?
Задать вопрос по модулю

О модуле

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

Модуль решает следующие задачи:

После покупки модуль, как и его последующие обновления, будет доступен через систему обновлений 1С-Битрикс. Рассмотрим его возможности и настройки подробнее.

Важно: Настройка магазина и платежных систем не входит в пакет модуля и вы должны будете произвести ее самостоятельно.

Важно: Для полноценной работы модуля в настройках модуля Интернет-магазин (не текущего модуля) включите опцию «Включить обработку устаревших событий».

Отгрузка кодов

Одной из отличительных особенностей модуля является возможность динамической генерации текстовых ключей. Вы можете задать маску ключа (например, PIN-##########) и при покупке ключ будет автоматически сгенерирован и отправлен пользователю. Это избавляет от необходимости генерировать ключи и самостоятельно загружать их в базу. И как правило, требуется при продаже статей на вашем сайте (доступ к материалу предоставляется после ввода ключа в специальное поле). С модулем поставляется публичный компонент для организации продажи доступа.

генерация ключей

Если же база ключей строго определена, то перед началом работы в базу модуля загружается определенное количество ключей, которые привязываются к товарам.

Модуль дает возможность работать со следующими типами ключей :

  • Тип «строка», применяется для текстовых PIN-кодов, паролей доступа и так далее.
  • Тип «файл». Особенность данного типа ключа в том, что файл отправляется приложением к письму.
  • Тип «персональный». Например, именная лицензия. В этом случае, отправка ключа осуществляется вручную администратором.

Вы можете протестировать данный функционал на демо-сайтах: продажа PIN-кодов, продажа платных статей.

Как происходит отгрузка кодов:

После того как пользователь оплатил заказ (т.е. у заказа сменился флаг на «оплачено» или произошел переход в заранее определенный статус), происходит отгрузка ключа. И пользователю приходит письмо на его e-mail, указанный при оформлении заказа (или взятый из его профиля, если такое свойство в заказе отсутствует).

письмо клиенту

А ключ попадает в секцию отгруженных.

shipped_keys.png

В случае, когда загруженные ключи заканчиваются, администратор получает уведомление об этом (причем, вы можете настроить при каком остатке ключей высылать предупреждение), а ключ попадет в очередь. Далее администратор может добавить необходимые ключи и произвести отправку.

key_trick_blok.png

Также у данной части модуля есть возможность массового импорта ключей из CSV-файла:

import_keys.png

Или пакетная загрузка для конкретного товара (подойдет, когда товаров мало, а ключей много). Варианты загрузки: несколько текстовых ключей; текстовый файл с ключами; несколько файловых ключей; архив с файловыми ключами:

key_pak.png

Отгрузка файлов

Функционал этого раздела модуля позволяет продавать все, что передается по сети Интернет и может иметь какую-либо ценность, например MP3-файлы, PDF или даже изображения.

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

После оплаты товара пользователем (у заказа сменился статус на «оплачено») ему приходит письмо с уникальной ссылкой для скачивания файла. Время жизни ссылки, а также ее уникальность настраиваются в модуле.

letter_file.png
А отгруженный товар попадает в соответствующий раздел.
shipment.png

Вы можете протестировать данный функционал на демо-сайтах: продажа МР3, продажа клипартов.

Публичная часть

С модулем поставляется два публичных компонента:

Ключи пользователя

  • Ключи пользователя — компонент, который, будучи размещен в личном кабинете пользователя, позволяет ему ознакомиться с оплаченными ключами или скачать свои файлы.

    Для получения данного функционала перейдите в режим правки на странице, на которой планируете разместить данный компонент и выберите «Измените страницу в редакторе».
    В дереве перейдите к компоненту Магазин — Персональный раздел — Ключи пользователя и мышью перетащите его в любое место на странице.
    В результате пользователь получит доступ к списку сделанных им заказов.

Организация продажи доступа к отдельным статьям

Внимание! Есть более упрощенная схема в том плане, что вы просто настраиваете штатный каталог Битрикс, а потом вносите некоторые коррективы. Читать по ссылке. Описанный ниже подход тоже имеет право на реализацию, но является уже устаревшим.

Компонент Организация продажи доступа к отдельным статья (isale.news.detail) полностью идентичен стандартному компоненту 1С-Битрикс news.detail, за тем лишь исключением, что для получения детальной информации о статье, нужно будет ввести купленный до этого ключ.

Разместите компонент на странице: перейдите в режим правки и выберите «Измените страницу в редакторе». В дереве перейдите к компоненту Контент — Статьи и новости — Новость детально (закрытый раздел) — и мышью перетащите его в любое место на странице.

Настройте параметры компонента:
public_isale_det.png
isale_detail.png

Шаблон компонента - выберите шаблон для вашего компонента

Основные параметры - выберите тип и код инфоблока, в котором расположен платный контент, а также ID или код новости

Источник данных - выберите поля и свойства, которые планируется отображать. Укажите, какие свойства будут доступны только после покупки

Остальные параметры настроек установите в соответствии с принятыми на вашем сайте политиками.


Настройки

Перед тем как перейти к настройкам модуля убедитесь, что у на Вашем сайте создан как минимум один инфоблок, который будет использоваться для продажи электронного контента (если такого инфоблока нет - создайте его). А также убедитесь, что данный инфоблок является Торговым каталогом, для этого перейдите в Администрирование - Контент - "имя_инфоблока" - Настройки инфоблока - Торговый каталог - и поставьте галочку Является Торговым каталогом.
Выведите инфоблок на страницу в публичном разделе.

Далее произведите настройку модуля в соответствии и вашими задачами:

Общие настройки

setting_com.png

Отправлять товар не при оплате, а при переводе в статус — иногда бывает необходимо отправлять товар не при оплате заказа, а при переводе в определенный статус. С помощью этой настройки вы можете сделать это. Указать можно как один, так и несколько статусов.

После отдачи файла переводить заказ в статус — если данная опция активирована (указан какой-либо статус), то, после того как файл будет отдан пользователю на скачивание, будет произведена автоматическая смена статуса заказа на указанный.

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

При успешной отправке всех ключей переводить заказ в статус — в случае успешной отправки всех ключей (весь заказ был в наличии и не произошло системного сбоя) можно автоматически перевести заказ в указанный статус.

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

Настройки, касающиеся продажи PIN-кодов, ключей

setting_pin.png

Минимальное число оставшихся ключей для одного товара — при достижении этого количества для каждого ключа администратору будет отправлено уведомление о том, что количество ключей определенного товара достигло минимального остатка. Важно: Если ключи закончатся, то при покупке товара они будут помещаться в очередь. Не учитывается при динамической генерации ключей (см. ниже).

При загрузке ключей проверять очередь — если данная опция активирована, то при добавлении новых ключей любым способом (в том числе и через импорт) будет происходить проверка очереди и заполнение ее в случае совпадения по полю "товар".

В списке ключей показывать пути до файлов ключей — данная опция под рядом с каждым файловым ключом выводит физический путь до файла.

Только ручная отправка ключей — функция, которая отключает отправку ключей (но не электронных товаров), все ключи попадают в очередь и требуют ручной отправки.

Запрещать отгрузку товара, при неполной комплектации ключей — если вы не хотите отправлять заказ, если каких-то ключей не оказалось в наличии - включите данную опцию.

Инфоблоки товаров для отгрузки ключей — инфоблоки, в которых содержатся товары, ключи к которым вы будете продавать на своем сайте.

Инфоблоки товаров для автоматической генерации ключей — выделите здесь те инфоблоки, товары из которых допускают динамически генерируемый ключ. Обратите внимание, что ключ будет генерироваться только в том случае, если для данного товара нет доступных к отгрузке ключей.

Шаблон ключа для генерации — шаблон для динамической генерации ключа.

Путь для хранения ключей — защищенная директория на сервере, где будут храниться файловые ключи (не путать с электронным товаром). К таким файлам может относиться файл активации какой-либо программы.

Настройки, касающиеся продажи электронных товаров

Инфоблоки электронных товаров — инфоблоки, в которых находится электронный контент. При оплате товаров из данных инфоблоков будет происходить отправка уникальной ссылки на скачивание файлов.

Коды свойств, где содержится продаваемый файл — коды (инфоблоков может быть несколько) свойств, в которых находятся файлы, являющиеся электронным контентом. Код свойства можно узнать в настройках соответствующих инфоблоков.

Время жизни в днях для ссылки скачивания — при покупке электронного товара пользователю выдается ссылка, по которой он сможет скачать файл. Данная настройка устанавливает "время жизни" данной ссылки. По прошествии указанного количества дней, файл будет более недоступен.

Делать ссылки уникальным для одного компьютера/браузера — при активировании данной опции каждая ссылка привязывается к пользователю и он уже не сможет ею воспользоваться на другом компьютере.

Сделанные настройки необходимо сохранить.

Частные решения

Модуль поставляется в открытых кодах, поэтому Вы можете доработать его с учетом специфики своего бизнеса. Ниже представлены несколько частных решений, позволяющих реализовать ту или иную схему, не включенную в модуль стандартно.
Все решения основаны на базе обработчиков событий. Разместите нужный вам пример кода в файле /bitrix/php_interface/init.php (если файла нет, то создайте его)

1. Необходимо сделать, если товар ключа находится в определенной секции (категории) инфоблока, то не производить никаких действий. Например, пригодится, если у вас электронные и физические товары находятся в одном инфоблоке и разделить их нельзя. AddEventHandler("asd.isale""OnBeforeCheckBasketItem""IsaleOnBeforeCheckBasketItemHandler");
function 
IsaleOnBeforeCheckBasketItemHandler(&$arElement)
{
    
$arDeniedSects = array(2,3);

    if (!empty(
$arDeniedSects) && CModule::IncludeModule("iblock"))
    {
        
$rsSect CIBlockElement::GetElementGroups($arElement["ID"]);
        while (
$arSect $rsSect->Fetch())
            if (
in_array($arSect["ID"], $arDeniedSects))
                return 
false;
    }
}

В данном примере, если товар находится в категории с ID равным 2 или 3, то отгрузка происходить не будет. Важный момент, что не учитываются вложенные категории.

2. Необходимо кастомизировать список товаров (ключей), в почтовом шаблоне при пакетной отправке ключей.
AddEventHandler("asd.isale""OnBuildOrderListItem""IsaleOnBuildOrderListItemHandler");
function 
IsaleOnBuildOrderListItemHandler(&$itemList$arFields)
{
    if (
$arFields["K_TYPE"] == "S")
        
$itemList $arFields["PRODUCT_NAME"] .': '$arFields["K_VALUE"]." (http://sitename.ru/detail.php?id=".$arFields["PRODUCT_ID"].")\n";
}
Вот какой результат будет приходить на почту (добавлена ссылка на детальный просмотр товара):

Кастомизированный список товаров в письме

3. Много товаров привязаны к одним и тем же ключам. Необходимо, чтобы после отправки ключа удалялись все-такие же ключи из базы доступных.
AddEventHandler("asd.isale""OnAfterSendKeys""IsaleOnAfterSendKeysHandler");
function 
IsaleOnAfterSendKeysHandler($arFields)
{
    
$dbKey = new CIsaleKeys();

    foreach (
$arFields as $key)
    {
        if ((
$key["K_TYPE"]=="S" || $key["K_TYPE"]=="F") && $key["K_VALUE"]!="")
        {
            
$dbKeyList CIsaleKeys::GetKeys(
                                            array(),
                                            array(
"SHIPPED" => "N","TURN_REASON" => "N",
                                                
"K_VALUE_EXACT" => $key["K_VALUE"],"K_TYPE" => $key["K_TYPE"]),
                                            array(
"ID"));
            while (
$arKeyList $dbKeyList->Fetch())
                
$dbKey->Delete($arKeyList["ID"]);
        }
    }
}

4. Необходимо, чтобы автоматически генерируемый купон создавался по маске, которая хранится в свойстве с кодом COUPON_MASK продаваемого товара.
<?
AddEventHandler("asd.isale", "OnBeforeCheckBasketItem", "IsaleOnBeforeCheckBasketItemHandler");
function IsaleOnBeforeCheckBasketItemHandler(&$arElement$arOrder, &$arBasketItem)
{
    if (
CModule::IncludeModule('iblock') && CModule::IncludeModule('asd.isale'))
    {
        if (
$arProp CIBlockElement::GetList(array(), array('ID' => $arElement['ID']))->GetNextElement()->GetProperties())
        {
            
$key = new CIsaleKeys();
            
$arFields = array(
                            
'K_VALUE' => $key->GeneratePin($arProp['COUPON_MASK']['VALUE']),
                            
'K_TYPE' => 'S',
                            
'PRODUCT_ID' => $arElement['ID'],
                            
'PRODUCT_PRICE' => $arBasketItem['PRICE'],
                            
'PRODUCT_DISCOUNT' => $arBasketItem['DISCOUNT_PRICE'],
                            
'PRODUCT_CURRENCY' => $arBasketItem['CURRENCY'],
                            
'ORDER_ID' => $arOrder['ID'],
                            
'OWNER_ID' => $arOrder['USER_ID'],
                            );
            
$newkeyID $key->Add($arFields);
        }
    }
}
?>

В данном случае уберите нужный вам инфоблок из автоматически генерируемых ключей в настройках модуля. Фактически мы сэмулировали эту автоматическую генерацию.

Требования

Технические требования модуля:

  • Редакция «1С-Битрикс» «Малый Бизнес», «Бизнес» или «Бизнес веб-кластер».
  • Установленный модуль «Интернет-магазин».
  • Если будут отгружаться тяжелые файлы на скачивание, то требуется наличие сервера NGINX.
  • Желательно, но не обязательно, установленная библиотека PHP для работы с ZIP-архивами.*

* — библиотека необходима для распаковки ZIP-архивов при импорте ключей. В модуле присутствует «кустарный» класс для распаковки ZIP-архивов и разработчик не дает гарантий в корректной его работе.