API для диллера — различия между версиями
Coolman (обсуждение | вклад) (Новая страница: «== Термины == Контент – видео/аудио или текстовая информация. Сервис – программно-аппара…») |
Coolman (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 51: | Строка 51: | ||
Примеры вызовов: | Примеры вызовов: | ||
− | + | http://dealerapi.sunduk.tv/api/json/reseller_get_list_aboniments?username=<username>&password=<password> | |
− | + | ||
− | http://dealerapi.sunduk.tv/api/json/ | + | |
− | + | ||
− | + | ||
Все возвращаемые сообщения имеют вид ассоциативного массива. | Все возвращаемые сообщения имеют вид ассоциативного массива. | ||
Строка 177: | Строка 173: | ||
''data'' - Данные возвращаемые пользователю | ''data'' - Данные возвращаемые пользователю | ||
− | ''bye'' -  Блок данных для покупки | + | ''bye'' -  Блок данных для покупки |
− | ''id'' - | + | ''id'' - Номер пакета, абонимента |
''name'' -  Название пакета, абонимента | ''name'' -  Название пакета, абонимента | ||
Строка 185: | Строка 181: | ||
''reseller_price'' - Цена для диллера | ''reseller_price'' - Цена для диллера | ||
− | ''status'' - Условное обозначения пакета(packet) и абонимента(standart) | + | ''status'' - Условное обозначения пакета(packet) и абонимента(standart) |
''renewal'' - Абонименты и пакеты на продление | ''renewal'' - Абонименты и пакеты на продление | ||
Строка 195: | Строка 191: | ||
Вызов: | Вызов: | ||
− | '''/create_new_aboniment?username=<username>&password=<password>& | + | '''/create_new_aboniment?username=<username>&password=<password>&tarifid=<tarifid>&status=<status>®istertome=<registertome>''' |
Входные параметры: | Входные параметры: | ||
Строка 203: | Строка 199: | ||
'''''password''''' - пароль юзера | '''''password''''' - пароль юзера | ||
− | ''''' | + | '''''tarifid''''' - Номер пакета, абонимент с функции reseller_get_list_aboniments |
'''''status''''' - Условное обозначения пакета(packet) и абонимента(standart) | '''''status''''' - Условное обозначения пакета(packet) и абонимента(standart) | ||
Строка 210: | Строка 206: | ||
− | Пример ответа по запросу /create_new_aboniment?username=Test&password=test& | + | Пример ответа по запросу /create_new_aboniment?username=Test&password=test&tarifid=1&status=standart®istertome=true: |
<nowiki /><pre><?xml version="1.0" encoding="UTF-8"?> | <nowiki /><pre><?xml version="1.0" encoding="UTF-8"?> | ||
Строка 218: | Строка 214: | ||
<data> | <data> | ||
array (size=3) | array (size=3) | ||
− | |||
'login' => string 'test' (length=6) | 'login' => string 'test' (length=6) | ||
'pass' => string 'test' (length=6) | 'pass' => string 'test' (length=6) | ||
Строка 231: | Строка 226: | ||
''data'' - Данные возвращаемые пользователю | ''data'' - Данные возвращаемые пользователю | ||
− | + | ''login''-  Логин абонимента | |
− | + | ||
− | ''login'' -  Логин абонимента | + | |
''pass'' -  Пароль абонимента | ''pass'' -  Пароль абонимента | ||
Строка 239: | Строка 232: | ||
''status'' - Статус заказа | ''status'' - Статус заказа | ||
− | === | + | === update_aboniment === |
Функция выполняет авторизацию клиента. | Функция выполняет авторизацию клиента. | ||
Строка 245: | Строка 238: | ||
Вызов: | Вызов: | ||
− | '''/update_aboniment?username=<username>&password=<password>& | + | '''/update_aboniment?username=<username>&password=<password>&tarifid=<tarifid>&status=<status>&subscription=<subscription>''' |
Входные параметры: | Входные параметры: | ||
Строка 253: | Строка 246: | ||
'''''password''''' - пароль юзера | '''''password''''' - пароль юзера | ||
− | ''''' | + | '''''tarifid''''' - Номер пакета, абонимент с функции reseller_get_list_aboniments |
'''''status''''' - Условное обозначения пакета(packet) и абонимента(standart) | '''''status''''' - Условное обозначения пакета(packet) и абонимента(standart) | ||
− | '''''subscription''''' - | + | '''''subscription''''' - Номер(логин) оплаченого пакета, абонимент |
− | Пример ответа по запросу /update_aboniment?username=Test&password=test& | + | Пример ответа по запросу /update_aboniment?username=Test&password=test&tarifid=1&status=standart&subscription=1: |
<nowiki /><pre><?xml version="1.0" encoding="UTF-8"?> | <nowiki /><pre><?xml version="1.0" encoding="UTF-8"?> |
Текущая версия на 13:53, 21 мая 2018
Содержание
Термины
Контент – видео/аудио или текстовая информация.
Сервис – программно-аппаратный комплекс предоставления доступа к IPTV как к услуге.
Клиент – приложение или устройство, получающее доступ к Сервису посредством учет- ной записи.
Абонент – физический пользователь сервиса SUNDUK.TV
Абонемент – учетная запись клиента. Логин и пароль цифровые – для удобства набора со стандартного пульта управления устройства (settopbox).
Сервер вещания – программно-аппаратный комплекс для организации трансляции потокового видео и радиосигнала.
Ссылка вещания – URL, по адресу которого сервер вещания транслирует контент.
Middleware – комплекс технологического программного обеспечения для авторизации и обеспечения взаимодействия между различными приложениями, системами, компонентами.
API – интерфейс Middleware для программного взаимодействия с клиентом.
Описание принципов работы с API
Провайдер транслирует видеопотоки телевизионных и радио каналов в сети Интернет через сеть своих серверов по протоколу HLS. Видео в формате H.264 и звук AAC/AC3 URL являются динамическими привязанными к конкретной сессии, с ограниченным сроком жизни (устаревающие). Для начала работы с сервисом необходимо авторизоваться в системе и ввести дополнительные параметры. Схема работы приложения:
1. Авторизация на сервере и получения списка абониментов для покупки и продления абонемента /reseller_get_list_aboniments
2. Добавление абонемента (оплата с внутреннего счета) /create_new_aboniment
3. Продление абонемента (оплата с внутреннего счета) /update_aboniment
Как использовать этот API
Вы можете использовать любой язык программирования при работе с данным API. Работа с API осуществляется по протоколу HTTP, обмен данными происходит в формате XML или JSON, Вам понадобятся эти библиотеки. В формате JSON удобнее работать с HASH массивами и мы рекомендуем этот формат. Запросив один раз, старайтесь кешировать у себя данные HASH, URL или EPG, пока они не устареют. Этим вы ускорите работу клиента, и не создадите лишнюю нагрузку на сервера
Все запросы к API происходят по протоколу http, и имеют следующий вид:
http://dealerapi.sunduk.tv/api/<тип ответа>/<имя функции>?param1=value¶m2=value...
<тип ответа> задает формат выходных данных. Данные могут быть типов: XML, JSON, JSONP
Примеры вызовов:
http://dealerapi.sunduk.tv/api/json/reseller_get_list_aboniments?username=<username>&password=<password>
Все возвращаемые сообщения имеют вид ассоциативного массива.
В случае ошибочного запроса API возвращает XML-пакет следующего содержания:
<?xml version="1.0" encoding="UTF-8"?> <response> <error> <message>ERROR_MESSAGE</message> <code>ERROR_CODE</code> </error> <servertime>SERVER_TIME</servertime> </response>
message - сообщение об ошибке
code - код ошибки
servertime - время на сервере (формат unixtime)
Формат времени
Все данные, обозначающие дату и время, представлены в формате unixtime. Каждый ответ серве- ра имеет отпечаток времени сервера (для синхронизации) с тегом <servertime>
Функции API
reseller_get_list_aboniments
Функция выполняет авторизацию клиента.
Вызов:
/reseller_get_list_aboniments?username=<username>&password=<password>
Входные параметры:
username - username пользователя который был зарегестриррован
password - пароль юзера
Пример ответа по запросу /reseller_get_list_aboniments?username=Test&password=test:
<?xml version="1.0" encoding="UTF-8"?> <response> <code>OK</code> <data> <bye> 0 => array (size=4) 'id' => string '26' (length=2) 'name' => string '12 месяцев' (length=17) 'reseller_price' => string '96.00' (length=5) 'status' => string 'standart' (length=8) 1 => array (size=4) 'id' => string '27' (length=2) 'name' => string '24 месяца' (length=15) 'reseller_price' => string '168.00' (length=6) 'status' => string 'standart' (length=8) 2 => array (size=4) 'id' => string '5' (length=1) 'name' => string '1 месяц' (length=12) 'reseller_price' => float 14.5 'status' => string 'standart' (length=8) 3 => array (size=4) 'id' => string '6' (length=1) 'name' => string '6 месяцев' (length=16) 'reseller_price' => int 72 'status' => string 'standart' (length=8) 4 => array (size=4) 'id' => string '7' (length=1) 'name' => string '12 месяцев' (length=17) 'reseller_price' => int 120 'status' => string 'standart' (length=8) 5 => array (size=4) 'id' => string '23' (length=2) 'name' => string '24 месяца' (length=15) 'reseller_price' => int 210 'status' => string 'standart' (length=8) </bye> <renewal> 0 => array (size=4) 'id' => string '5' (length=1) 'name' => string '1 месяц' (length=12) 'reseller_price' => float 14.5 'status' => string 'standart' (length=8) 1 => array (size=4) 'id' => string '6' (length=1) 'name' => string '6 месяцев' (length=16) 'reseller_price' => int 72 'status' => string 'standart' (length=8) 2 => array (size=4) 'id' => string '7' (length=1) 'name' => string '12 месяцев' (length=17) 'reseller_price' => int 120 'status' => string 'standart' (length=8) 3 => array (size=4) 'id' => string '23' (length=2) 'name' => string '24 месяца' (length=15) 'reseller_price' => int 210 'status' => string 'standart' (length=8) </renewal> </data> <servertime>1423845147</servertime> </response>
Описание параметров из ответа:
code - Статус ответа
data - Данные возвращаемые пользователю
bye -  Блок данных для покупки
id - Номер пакета, абонимента
name -  Название пакета, абонимента
reseller_price - Цена для диллера
status - Условное обозначения пакета(packet) и абонимента(standart)
renewal - Абонименты и пакеты на продление
create_new_aboniment
Функция выполняет авторизацию клиента.
Вызов:
/create_new_aboniment?username=<username>&password=<password>&tarifid=<tarifid>&status=<status>®istertome=<registertome>
Входные параметры:
username - username пользователя который был зарегестриррован
password - пароль юзера
tarifid - Номер пакета, абонимент с функции reseller_get_list_aboniments
status - Условное обозначения пакета(packet) и абонимента(standart)
registertome - привязка абонимента к диллеру
Пример ответа по запросу /create_new_aboniment?username=Test&password=test&tarifid=1&status=standart®istertome=true:
<?xml version="1.0" encoding="UTF-8"?> <response> <code>OK</code> <status>paid</status> <data> array (size=3) 'login' => string 'test' (length=6) 'pass' => string 'test' (length=6) </data> <servertime>1423845147</servertime> </response>
Описание параметров из ответа:
code - Статус ответа
data - Данные возвращаемые пользователю
login-  Логин абонимента
pass -  Пароль абонимента
status - Статус заказа
update_aboniment
Функция выполняет авторизацию клиента.
Вызов:
/update_aboniment?username=<username>&password=<password>&tarifid=<tarifid>&status=<status>&subscription=<subscription>
Входные параметры:
username - username пользователя который был зарегестриррован
password - пароль юзера
tarifid - Номер пакета, абонимент с функции reseller_get_list_aboniments
status - Условное обозначения пакета(packet) и абонимента(standart)
subscription - Номер(логин) оплаченого пакета, абонимент
Пример ответа по запросу /update_aboniment?username=Test&password=test&tarifid=1&status=standart&subscription=1:
<?xml version="1.0" encoding="UTF-8"?> <response> <code>OK</code> <servertime>1423845147</servertime> </response>
Описание параметров из ответа:
code - Статус ответа
Коды ошибок
0 - Unknown error - Неизвестная ошибка
1 - Incorrect request - Неверный запрос
2 - Wrong login or password - Неправильный логин или пароль
3 - Access denied - Доступ запрещен
4 - Login incorrect - Неправильный логин
5 - Your balance is less than our amount - Ваш балнс меньше чем баланс заказа
6 - Enter type of product - Введите тип продукта
7 - Package with id is not found - Пакет с данным айди не найден
8 - This aboniment can continue only by aboniment - Этот абонимент(пакетом) может быт продолжен только абониментом(пакетом)
9 - This order not you or your referal - Этот заказ не ващего диллера
10 - Not found this aboniment with this id - Не найден абонимент с этим айди
11 - Enter subscription id - Введите айди оплаченого абонимента
12 - This package not for this reseller - Этот пакет не для этого продавца
Ограничения
Существует ограничение на 5 запроса в секунду для одной сессии. Это вынужденная мера, введенная для защиты системы от избыточных перегрузок. В случае превышения этого лимита возвращается стандартный ответ ошибки с кодом 31 (Query limit exceeded).