API для диллера

Материал из Sunduk TV
Версия от 09:20, 19 мая 2018; Coolman (обсуждение | вклад) (Новая страница: «== Термины == Контент – видео/аудио или текстовая информация. Сервис – программно-аппара…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Термины

Контент – видео/аудио или текстовая информация.

Сервис – программно-аппаратный комплекс предоставления доступа к 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/xml/epg?cid=2&day=260212

http://dealerapi.sunduk.tv/api/json/epg?cid=2&day=260212

http://dealerapi.sunduk.tv/api/jsonp/epg?cid=2&day=260612&callback=process

Все возвращаемые сообщения имеют вид ассоциативного массива.

В случае ошибочного запроса 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>&id=<id>&status=<status>&registertome=<registertome>

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

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

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

id - id абонимента

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

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


Пример ответа по запросу /create_new_aboniment?username=Test&password=test&id=test&status=standart&registertome=true:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <code>OK</code>
    <status>paid</status>
    <data>
      array (size=3)
      'id' => string 'test' (length=5)
      'login' => string 'test' (length=6)
      'pass' => string 'test' (length=6)
    </data>
    <servertime>1423845147</servertime>
</response>

Описание параметров из ответа:

code - Статус ответа

data - Данные возвращаемые пользователю

id - Айди абонимента

login -  Логин абонимента

pass -  Пароль абонимента

status - Статус заказа

reseller_get_list_aboniments

Функция выполняет авторизацию клиента.

Вызов:

/update_aboniment?username=<username>&password=<password>&id=<id>&status=<status>&subscription=<subscription>

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

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

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

id - Айди абонимента

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

subscription - Айди оплаченого абонимента


Пример ответа по запросу /update_aboniment?username=Test&password=test&id=test&status=standart&subscription=test:

<?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).