init
This commit is contained in:
		
						commit
						6296637a53
					
				
							
								
								
									
										23
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								README.md
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										89
									
								
								biblio-player-core.md
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										30
									
								
								biblio-player-ui.md
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										57
									
								
								user-key.md
									
									
									
									
									
										Normal 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=
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user