This commit is contained in:
edwardproff 2022-04-04 18:34:22 +03:00
commit 6296637a53
4 changed files with 199 additions and 0 deletions

23
README.md Normal file
View File

@ -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)

89
biblio-player-core.md Normal file
View File

@ -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)` - установка уровня звука

30
biblio-player-ui.md Normal file
View File

@ -0,0 +1,30 @@
# Ядро плеера аудиокниг (biblio-player-core)
Модуль предназначен для разработки плеера с кастомным интерфейсов.
## Подключение скриптов
**Подключаем VUE 2**
```
<script src='https://cdn.jsdelivr.net/npm/vue@2.6.14'></script>
```
**Подключаем виджет**
```
<script src='https://167503.selcdn.ru/test/biblio-widget-ui.js'></script>
<link rel='stylesheet' href='https://167503.selcdn.ru/test/biblio-widget-ui.css'/>
```
**Иницализируем виджет**
```
<div id="bblpl">
<biblio-player referal-key="$referal_key" user-key="$user_key" book-id="$book_id"/>
<script>new Vue({ components: { biblioPlayer } }).$mount("#bblpl")</script>
</div>';
```
Необходимо заменить значения переменных:
- **$book_id** - идентификатор книги
- **$referal_key** - авторизационный ключ реферала, выдающийся в личном кабинете
- **$user_key** - авторизационный ключ пользователя реферала, формирующийся в back-end части реферала по алгоритму. При неавторизованном пользователе указываем null. [Как сгенерировать user_key?](user-key.md)

57
user-key.md Normal file
View File

@ -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=
```