commit 6296637a53477bf091e920442fbbd57ab804346c Author: edwardproff Date: Mon Apr 4 18:34:22 2022 +0300 init diff --git a/README.md b/README.md new file mode 100644 index 0000000..d3932a5 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Документация для продуктов Biblio + +В настоящий момент для партнеров мы предлагаем два front-end продукта: + +1. **Ядро плеера аудиокниг** (biblio-player-core) + Модуль предназначен для разработки плеера с кастомным интерфейсов. + [Документация и примеры](biblio-player-core.md) + + +2. **Плеер аудиокниг** (biblio-player-ui) + Модуль для встраивания плеера с готовым UI на сайт через специальный тег или ~~iframe~~ + [Документация и примеры](biblio-player-ui.md) + +## Имеющийся модули для CMS +- Wordpress +- DLE +- Joomla +- Drupal + +## Дополнительная информация + +1. [Как сгенерировать user_key?](user-key.md) +2. [Сервис для поиска ID книги](https://biblio-book-checker.vercel.app) diff --git a/biblio-player-core.md b/biblio-player-core.md new file mode 100644 index 0000000..4788b48 --- /dev/null +++ b/biblio-player-core.md @@ -0,0 +1,89 @@ +# Установка виджета проигрывания и продажи контента реферальной системы Biblio + +### Инициализация JS виджета на странице + +Адрес расположения виджета: https://pub-cdn.bibliovk.ru/referals/wgt.js +Принимает в качестве параметров массив вида: +- **$book_id** - идентификатор книги +- **$referal_key** - авторизационный ключ реферала, выдающийся в личном кабинете +- **$user_key** - авторизационный ключ пользователя реферала, формирующийся в back-end части реферала по алгоритму. При неавторизованном пользователе указываем null. [Как сгенерировать user_key?](user-key.md) + +### Инициализация JS виджета на странице UI +``` +let biblio = new Biblio({ + bookId: 1573, + referalKey: "Ваш ключ реферала", + userKey: "Ключ пользователя" +}) + +biblio.on('init', function (player) { + console.log('init_test') + console.log(player) +}) +``` + +## Методы +`.on(event, callback)` - подписаться на эвенты +bbl-pause +bbl-play +bbl-ended +bbl-stop +bbl-playback-change +bbl-volume +bbl-progress +bbl-widget-init + +`.isWidgetInit()` - булево. Позволяет проверить состояние инициализации виджета. + +`.pause()` - пауза + +`.play(tracks_id)` - проигрывание. для некупленной книги - демо. для купленной, если не задан id трэка - с последней +позиции прослушивания, если задан - с начала трэка + +`.stop()` - остановка проигрывания + +`.seek(seconds)` - перескочить на позицию + +`.isSleepTimerActive()` - возвращает boolean, включен или нет таймер сна + +`.stopSleepTimer()` - остановка таймера сна + +`.isForSubscribers()` - возвращает boolean, доступна ли книга по подписке + +`.getAmount()` - получить стоимость покупки в рублях + +`.startPurchaseBook()` - инициирует процесс покупки. переадресовывает пользователя на форму покупки, после возвращает на +ту страницу с которой уходил покупать + +`.destroy()` - дестоит весь объект + +`.startPurchaseSubscribtion()` - инициирует процесс подписки. пока НЕ используется, т.к. подписки не в проде + +`.getBookPurchaseIsNeed()` - возвращает boolean. констатирует надо ли юзеру купить книгу (или подписку, в будущем) чтобы +слушать всю + +`.setSleepTimer(hours, mins)` - стартует таймер сна + +`.getPlayerState()` - возвращает статут плеера (idle,none,playing,paused) + +`.getPlaybackRate()` - возвращает текущую скорость воспроизведения + +`.setPlaybackRate()` - меняет скорость воспроизведения + +`.ff()` - быстрая перемотна на 15 сек вперед + +`.rw()` - быстрая перемотна на 15 сек назад + +`.getPosition()` - получение текущей позиции в секундах + +`.getCurrentTrack()` - получение текущего track_id + +`.getDuration()` - получение продолжительности трека + +`.getBookMeta()` - получение меты книги + +`.getTracksMeta()` - получение меты треков + +`.getVolume()` - получение текущего уровня звука + +`.setVolume(vol)` - установка уровня звука diff --git a/biblio-player-ui.md b/biblio-player-ui.md new file mode 100644 index 0000000..a48b16d --- /dev/null +++ b/biblio-player-ui.md @@ -0,0 +1,30 @@ +# Ядро плеера аудиокниг (biblio-player-core) + +Модуль предназначен для разработки плеера с кастомным интерфейсов. + +## Подключение скриптов + +**Подключаем VUE 2** +``` + +``` + +**Подключаем виджет** +``` + + +``` + +**Иницализируем виджет** +``` +
+ + +
'; +``` + +Необходимо заменить значения переменных: +- **$book_id** - идентификатор книги +- **$referal_key** - авторизационный ключ реферала, выдающийся в личном кабинете +- **$user_key** - авторизационный ключ пользователя реферала, формирующийся в back-end части реферала по алгоритму. При неавторизованном пользователе указываем null. [Как сгенерировать user_key?](user-key.md) + diff --git a/user-key.md b/user-key.md new file mode 100644 index 0000000..5ac7ee2 --- /dev/null +++ b/user-key.md @@ -0,0 +1,57 @@ +# Как сгенерировать user_key? + +## Формирование user_key (примеры на php) + +Ключ пользователя формируется из массива параметров, которые позволяют однозначно идентифицировать пользователя внутри системы Biblio. + +**Массив имеет следующий вид:** +``` +$ident_array = [ + 'type' => 'email', + 'ident' => 'username@mail.ru' +]; +``` + +**В качестве type в ident массиве могут выступать следующие значения:** +- **email** – электронная почта (предпочтительно) +- **phone** – номер телефона (в международном формате, без + в начале номера) +- **google_id** – идентификатор пользователя у google +- **vk_id** – идентификатор пользователя в Вконтакте +- **apple_id** – идентификатор пользователя в apple id (не email apple id, а именно идентификатор) +- **tg_id** – идентификатор пользователя в Telegram +- **fb_id** – идентификатор пользователя в Facebook + +**Необходимо указать свой ключ реферала:** +``` +$referal_key = 'YOUR_REFERAL_KEY'; +``` + +Далее массив преобразовывается в base64 строку, которая используется в качестве user_key в виджете. + +**Алгоритм преобразования следующий:** +``` +$source_string = json_encode($ident_array); +$ivlen = openssl_cipher_iv_length($cipher = 'AES-256-CBC'); +$iv = mb_substr($referal_key, 0, $ivlen); +$key = mb_substr($referal_key, 10, 35); +$raw = openssl_encrypt($source_string, $cipher, $key, OPENSSL_RAW_DATA, $iv); +$hmac = hash_hmac('sha25', $raw, $key, true); +$user_key = base64_encode($hmac.$raw); +``` + +### Контрольные значения для проверки алгоритма + +Вводные данные: +``` +$ident_array = [ + 'type' => 'email', + 'ident' => 'username@mail.ru' +]; +$referal_key = 'YOUR_REFERAL_KEY'; +``` + +Итоговый ключ: +``` +o91Gup4bGZ11hjsBbIvimOiv5Lg+5kcgfsSoQ9YkPcPB5f/mkYJIo7Tp0TI6piG/lO3aQSeszOzgG05dl8PH3Cyc2J63vJ6slFL0LFV6jhs= +``` +