API для диллера — различия между версиями

Материал из Sunduk TV
Перейти к: навигация, поиск
(Новая страница: «== Термины == Контент – видео/аудио или текстовая информация. Сервис – программно-аппара…»)
 
 
(не показаны 4 промежуточные версии этого же участника)
Строка 51: Строка 51:
 
Примеры вызовов:
 
Примеры вызовов:
  
http://dealerapi.sunduk.tv/api/xml/epg?cid=2&day=260212
+
http://dealerapi.sunduk.tv/api/json/reseller_get_list_aboniments?username=<username>&password=<password>
 
+
http://dealerapi.sunduk.tv/api/json/epg?cid=2&day=260212
+
 
+
http://dealerapi.sunduk.tv/api/jsonp/epg?cid=2&day=260612&callback=process
+
  
 
Все возвращаемые сообщения имеют вид ассоциативного массива.
 
Все возвращаемые сообщения имеют вид ассоциативного массива.
Строка 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>&id=<id>&status=<status>&registertome=<registertome>'''
+
'''/create_new_aboniment?username=<username>&password=<password>&tarifid=<tarifid>&status=<status>&registertome=<registertome>'''
  
 
Входные параметры:
 
Входные параметры:
Строка 203: Строка 199:
 
'''''password'''''      - пароль юзера
 
'''''password'''''      - пароль юзера
  
'''''id'''''            - id абонимента
+
'''''tarifid'''''            - Номер пакета, абонимент с функции reseller_get_list_aboniments
  
 
'''''status'''''        - Условное обозначения пакета(packet) и абонимента(standart)
 
'''''status'''''        - Условное обозначения пакета(packet) и абонимента(standart)
Строка 210: Строка 206:
  
  
Пример ответа по запросу /create_new_aboniment?username=Test&password=test&id=test&status=standart&registertome=true:
+
Пример ответа по запросу /create_new_aboniment?username=Test&password=test&tarifid=1&status=standart&registertome=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)
      'id' => string 'test' (length=5)
 
 
       'login' => string 'test' (length=6)
 
       'login' => string 'test' (length=6)
 
       'pass' => string 'test' (length=6)
 
       'pass' => string 'test' (length=6)
Строка 231: Строка 226:
 
''data'' - Данные возвращаемые пользователю
 
''data'' - Данные возвращаемые пользователю
  
''id''  - Айди абонимента
+
''login''-  Логин абонимента
 
+
''login'' -  Логин абонимента
+
  
 
''pass'' -  Пароль абонимента
 
''pass'' -  Пароль абонимента
Строка 239: Строка 232:
 
''status'' - Статус заказа
 
''status'' - Статус заказа
  
=== reseller_get_list_aboniments ===
+
=== update_aboniment ===
  
 
Функция выполняет авторизацию клиента.
 
Функция выполняет авторизацию клиента.
Строка 245: Строка 238:
 
Вызов:  
 
Вызов:  
  
'''/update_aboniment?username=<username>&password=<password>&id=<id>&status=<status>&subscription=<subscription>'''
+
'''/update_aboniment?username=<username>&password=<password>&tarifid=<tarifid>&status=<status>&subscription=<subscription>'''
  
 
Входные параметры:
 
Входные параметры:
Строка 253: Строка 246:
 
'''''password'''''      - пароль юзера
 
'''''password'''''      - пароль юзера
  
'''''id'''''            - Айди абонимента
+
'''''tarifid'''''            - Номер пакета, абонимент с функции reseller_get_list_aboniments
  
 
'''''status'''''        - Условное обозначения пакета(packet) и абонимента(standart)
 
'''''status'''''        - Условное обозначения пакета(packet) и абонимента(standart)
  
'''''subscription'''''  - Айди оплаченого абонимента
+
'''''subscription'''''  - Номер(логин) оплаченого пакета, абонимент
  
  
Пример ответа по запросу /update_aboniment?username=Test&password=test&id=test&status=standart&subscription=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"?>

Текущая версия на 14: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&param2=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>&registertome=<registertome>

Входные параметры:

username - username пользователя который был зарегестриррован

password - пароль юзера

tarifid - Номер пакета, абонимент с функции reseller_get_list_aboniments

status - Условное обозначения пакета(packet) и абонимента(standart)

registertome - привязка абонимента к диллеру


Пример ответа по запросу /create_new_aboniment?username=Test&password=test&tarifid=1&status=standart&registertome=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).