Difference between revisions of "Reseller API"

From Ace Stream Wiki
Jump to: navigation, search
(Новая страница: «==Общее описание API== Запросы API отправляются на адрес <tt><nowiki>https://api-dev.acestream.net</nowiki></tt> методо…»)
 
Line 1: Line 1:
 
==Общее описание API==
 
==Общее описание API==
Запросы API отправляются на адрес <tt><nowiki>https://api-dev.acestream.net</nowiki></tt> методом HTTP-GET.
+
Запросы API отправляются методом HTTP-GET на такие адреса:
 +
* тестовый режим: <tt><nowiki>https://api.sandbox.acestream.net</nowiki></tt>
 +
* боевой режим: <tt><nowiki>https://api.acestream.net</nowiki></tt>
 +
 
 
Ответы на запросы приходят в формате json.
 
Ответы на запросы приходят в формате json.
  
Line 12: Line 15:
 
* '''api_key''' - ключ клиента API
 
* '''api_key''' - ключ клиента API
 
* '''api_version''' - поддерживаемая версия API (текущая версия: 1.0)
 
* '''api_version''' - поддерживаемая версия API (текущая версия: 1.0)
 +
* '''app''' - идентификатор маркета
 
* '''sign''' - цифровая подпись запроса
 
* '''sign''' - цифровая подпись запроса
  
Line 39: Line 43:
  
 
===getServiceCost===
 
===getServiceCost===
Получить стоимость услуги
+
Получить стоимость опции
  
 
параметры:
 
параметры:
* '''service''' (''string'') - идентификатор услуги
+
* '''service''' (''string'') - идентификатор опции
 
* '''period''' (''string'') - идентификатор периода
 
* '''period''' (''string'') - идентификатор периода
  
 
поля в ответе:
 
поля в ответе:
* '''cost''' (''decimal'') - стоимость услуги на указанный период в EUR
+
* '''cost''' (''decimal'') - стоимость опции на указанный период в EUR
  
 
пример запроса:
 
пример запроса:
  <nowiki>https://api-dev.acestream.net/?method=getServiceCost &crarr;
+
  <nowiki>https://api.acestream.net/?method=getServiceCost &crarr;
 
   &api_version=1.0 &crarr;
 
   &api_version=1.0 &crarr;
 
   &api_key=be6f66e0848528139583b567fb222215444fc8ac &crarr;
 
   &api_key=be6f66e0848528139583b567fb222215444fc8ac &crarr;
Line 61: Line 65:
  
 
===activateService===
 
===activateService===
Активировать услугу для пользователя
+
Активировать опцию для пользователя
  
 
параметры:
 
параметры:
* '''app''' (''string'') - ключ приложения
 
 
* '''user_key''' (''string'') - ключ пользователя
 
* '''user_key''' (''string'') - ключ пользователя
* '''service''' (''string'') - идентификатор услуги
+
* '''service''' (''string'') - идентификатор опции
 
* '''period''' (''string'') - идентификатор периода
 
* '''period''' (''string'') - идентификатор периода
  
 
поля в ответе:
 
поля в ответе:
* '''validFrom''' (''unix timestamp'') - с какого времени услуга активна
+
* '''validFrom''' (''unix timestamp'') - с какого времени опция активна
* '''validTo''' (''unix timestamp'') - до какого времени услуга активна
+
* '''validTo''' (''unix timestamp'') - до какого времени опция активна
  
 
пример запроса:
 
пример запроса:
  <nowiki>https://api-dev.acestream.net/?method=activateService &crarr;
+
  <nowiki>https://api.acestream.net/?method=activateService &crarr;
 
   &api_version=1.0 &crarr;
 
   &api_version=1.0 &crarr;
 
   &api_key=be6f66e0848528139583b567fb222215444fc8ac &crarr;
 
   &api_key=be6f66e0848528139583b567fb222215444fc8ac &crarr;
Line 83: Line 86:
 
   &sign=c4df772a4a41ad7bbb4d7d07e46cad5e3622c59e</nowiki>
 
   &sign=c4df772a4a41ad7bbb4d7d07e46cad5e3622c59e</nowiki>
  
ответ (успешная активация услуги):
+
ответ (успешная активация опции):
 
  <nowiki>{"validFrom":1376048972,"validTo":1378640972}</nowiki>
 
  <nowiki>{"validFrom":1376048972,"validTo":1378640972}</nowiki>
  
ответ (недостаточно средств на балансе партнера):
+
ответ (на балансе реселлера недостаточно средств для активации опции):
 
  <nowiki>{"error":"not enough credits"}</nowiki>
 
  <nowiki>{"error":"not enough credits"}</nowiki>
  
Line 93: Line 96:
  
 
параметры:
 
параметры:
* '''app''' (''string'') - ключ приложения
 
 
* '''user_key''' (''string'') - ключ пользователя
 
* '''user_key''' (''string'') - ключ пользователя
  
 
поля в ответе:
 
поля в ответе:
* '''services''' (''array'') - массив услуг, привязанных к данному ключу пользователя. Каждая услуга описывается такими полями:
+
* '''services''' (''array'') - массив опций, привязанных к данному ключу пользователя. Каждая опция описывается такими полями:
** '''id''' (''string'') - идентификатор услуги
+
** '''id''' (''string'') - идентификатор опции
** '''validFrom''' (''unix timestamp'') - с какого времени услуга активна
+
** '''validFrom''' (''unix timestamp'') - с какого времени опция активна
** '''validTo''' (''unix timestamp'') - до какого времени услуга активна
+
** '''validTo''' (''unix timestamp'') - до какого времени опция активна
** '''enabled''' (''boolean'') - активна ли услуга в данный момент
+
** '''enabled''' (''boolean'') - активна ли опция в данный момент
  
 
пример запроса:
 
пример запроса:
  <nowiki>https://api-dev.acestream.net/?method=getUserKeyInfo &crarr;
+
  <nowiki>https://api.acestream.net/?method=getUserKeyInfo &crarr;
 
   &api_version=1.0 &crarr;
 
   &api_version=1.0 &crarr;
 
   &api_key=be6f66e0848528139583b567fb222215444fc8ac &crarr;
 
   &api_key=be6f66e0848528139583b567fb222215444fc8ac &crarr;
Line 111: Line 113:
 
   &sign=5e0fc46d908e5f224ce9fce9f6a83dd6b3502cc0</nowiki>
 
   &sign=5e0fc46d908e5f224ce9fce9f6a83dd6b3502cc0</nowiki>
  
ответ (нет услуг):
+
ответ (нет опций):
 
  <tt>{"services":[]}</tt>
 
  <tt>{"services":[]}</tt>
  
ответ (есть услуги):
+
ответ (есть опции):
 
  <nowiki>{"services": [
 
  <nowiki>{"services": [
 
     {"id": "noAds", "validFrom": 1374673235, "validTo": 1445089235, "enabled": true},
 
     {"id": "noAds", "validFrom": 1374673235, "validTo": 1445089235, "enabled": true},
Line 120: Line 122:
 
  ]}</nowiki>
 
  ]}</nowiki>
  
==Идентификаторы услуг==
+
==Идентификаторы опций==
* '''noAds''' - услуга "No ADs" (отключение рекламы Ace Stream)
+
* '''noAds''' - опция "No ADs" (отключение рекламы Ace Stream)
* '''premium''' - услуга "Premium Streams" (доступ к премиум-контенту)
+
* '''premium''' - опция "Premium Streams" (доступ к премиум-контенту)
  
 
==Идентификаторы периодов==
 
==Идентификаторы периодов==
 
* '''m1''' - 30 дней
 
* '''m1''' - 30 дней
 
* '''y1''' - 365 дней
 
* '''y1''' - 365 дней

Revision as of 16:38, 9 August 2013

Общее описание API

Запросы API отправляются методом HTTP-GET на такие адреса:

  • тестовый режим: https://api.sandbox.acestream.net
  • боевой режим: https://api.acestream.net

Ответы на запросы приходят в формате json.

Если при обработке запроса возникла ошибка, будет отослан ответ такого вида:

{"error":"error descrtiption"}

Ответы за успешно обработанные запросы зависят от вызываемого метода.

Обязательные общие параметры для всех запросов

  • method - вызываемый метод API
  • api_key - ключ клиента API
  • api_version - поддерживаемая версия API (текущая версия: 1.0)
  • app - идентификатор маркета
  • sign - цифровая подпись запроса

Алгоритм формирования цифровой подписи

  • создается массив строк вида "название_параметра=значение_параметра"
  • полученный массив сортируется
  • элементы отсортированного массива объединяются в строку с разделителем "#"
  • к полученной строке добавляется секретный ключ клиента API
  • подписью является sha1-хеш от полученной строки (в шестнадцатеричном представлении, 40 символов, маленькими буквами)

Код на PHP:

function makeSignature(array $params, $apiSecret)
{
    $checkParams = array();
    foreach($params as $k => $v) {
        $checkParams[] = $k . '=' . $v;
    }
    sort($checkParams);
    
    $payload = join('#', $checkParams);
    $sign = sha1($payload . $apiSecret);
    
    return $sign;
}

Методы API

getServiceCost

Получить стоимость опции

параметры:

  • service (string) - идентификатор опции
  • period (string) - идентификатор периода

поля в ответе:

  • cost (decimal) - стоимость опции на указанный период в EUR

пример запроса:

https://api.acestream.net/?method=getServiceCost ↵
  &api_version=1.0 ↵
  &api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
  &app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
  &service=noAds ↵
  &period=m1 ↵
  &sign=45c84ceffd3ec443586e8f4666b28abde8400768

ответ:

{"cost":1}

activateService

Активировать опцию для пользователя

параметры:

  • user_key (string) - ключ пользователя
  • service (string) - идентификатор опции
  • period (string) - идентификатор периода

поля в ответе:

  • validFrom (unix timestamp) - с какого времени опция активна
  • validTo (unix timestamp) - до какого времени опция активна

пример запроса:

https://api.acestream.net/?method=activateService ↵
  &api_version=1.0 ↵
  &api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
  &app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
  &user_key=a455865e5800fd7efab75f2b4852fc2497f9fc39 ↵
  &service=noAds ↵
  &period=m1 ↵
  &sign=c4df772a4a41ad7bbb4d7d07e46cad5e3622c59e

ответ (успешная активация опции):

{"validFrom":1376048972,"validTo":1378640972}

ответ (на балансе реселлера недостаточно средств для активации опции):

{"error":"not enough credits"}

getUserKeyInfo

Получить информацию о ключе пользователя

параметры:

  • user_key (string) - ключ пользователя

поля в ответе:

  • services (array) - массив опций, привязанных к данному ключу пользователя. Каждая опция описывается такими полями:
    • id (string) - идентификатор опции
    • validFrom (unix timestamp) - с какого времени опция активна
    • validTo (unix timestamp) - до какого времени опция активна
    • enabled (boolean) - активна ли опция в данный момент

пример запроса:

https://api.acestream.net/?method=getUserKeyInfo ↵
  &api_version=1.0 ↵
  &api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
  &app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
  &user_key=8fb311be3836b04f61817dbf8a23c05739ebb13e ↵
  &sign=5e0fc46d908e5f224ce9fce9f6a83dd6b3502cc0

ответ (нет опций):

{"services":[]}

ответ (есть опции):

{"services": [
     {"id": "noAds", "validFrom": 1374673235, "validTo": 1445089235, "enabled": true},
     {"id": "premium", "validFrom": 1374858187, "validTo": 1448301787, "enabled": true}
 ]}

Идентификаторы опций

  • noAds - опция "No ADs" (отключение рекламы Ace Stream)
  • premium - опция "Premium Streams" (доступ к премиум-контенту)

Идентификаторы периодов

  • m1 - 30 дней
  • y1 - 365 дней