379
edits
Changes
Новая страница: «==Общее описание API== Данное API позволяет разработчикам приложений работать с [[User_key|ключами…»
==Общее описание API==
Данное API позволяет разработчикам приложений работать с [[User_key|ключами пользователей]] в системе Ace Stream. API предоставляет методы для создания ключей пользователей и для активации различных опций для ключей.
==Формат запросов==
Запросы API отправляются методом HTTP-GET на такие адреса:
* тестовый режим: <tt><nowiki>https://api-sandbox.acestream.net/developer</nowiki></tt>
* боевой режим: <tt><nowiki>https://api.acestream.net/developer</nowiki></tt>
Ответы на запросы приходят в формате json.
Если при обработке запроса возникла ошибка, будет отослан ответ такого вида:
<tt><nowiki>{"error":"error descrtiption"}</nowiki></tt>
Ответы за успешно обработанные запросы зависят от вызываемого метода.
===Обязательные общие параметры для всех запросов===
* '''method''' - вызываемый метод API
* '''api_key''' - ключ клиента API
* '''api_version''' - поддерживаемая версия API (текущая версия: 1.0)
* '''product''' - публичная часть [[Product_key|ключа продукта]]
* '''sign''' - цифровая подпись запроса
===Алгоритм формирования цифровой подписи===
* создается массив строк вида "название_параметра=значение_параметра"
* полученный массив сортируется
* элементы отсортированного массива объединяются в строку с разделителем "#"
* к полученной строке добавляется секретный ключ клиента API
* подписью является sha1-хеш от полученной строки (в шестнадцатеричном представлении, 40 символов, маленькими буквами)
Код на PHP:
<tt><nowiki>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;
}</nowiki></tt>
==Методы API==
===getServiceCost===
Получить стоимость опции
параметры:
* '''service''' (''string'') - идентификатор опции
* '''period''' (''string'') - идентификатор периода
поля в ответе:
* '''cost''' (''decimal'') - стоимость опции на указанный период в EUR
пример запроса:
<nowiki>https://api.acestream.net/developer?method=getServiceCost ↵
&api_version=1.0 ↵
&api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
&app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
&service=noAds ↵
&period=m1 ↵
&sign=45c84ceffd3ec443586e8f4666b28abde8400768</nowiki>
ответ:
<nowiki>{"cost":1}</nowiki>
===activateService===
Активировать опцию для пользователя.
В результате успешной активации средства будут списаны с баланса разработчика.
параметры:
* '''user_key''' (''string'') - ключ пользователя
* '''service''' (''string'') - идентификатор опции
* '''period''' (''string'') - идентификатор периода
поля в ответе:
* '''validFrom''' (''unix timestamp'') - с какого времени опция активна
* '''validTo''' (''unix timestamp'') - до какого времени опция активна
пример запроса:
<nowiki>https://api.acestream.net/developer?method=activateService ↵
&api_version=1.0 ↵
&api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
&app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
&user_key=a455865e5800fd7efab75f2b4852fc2497f9fc39 ↵
&service=noAds ↵
&period=m1 ↵
&sign=c4df772a4a41ad7bbb4d7d07e46cad5e3622c59e</nowiki>
ответ (успешная активация опции):
<nowiki>{"validFrom":1376048972,"validTo":1378640972}</nowiki>
ответ (на балансе реселлера недостаточно средств для активации опции):
<nowiki>{"error":"not enough credits"}</nowiki>
===getUserKeyInfo===
Получить информацию о ключе пользователя
параметры:
* '''user_key''' (''string'') - ключ пользователя
поля в ответе:
* '''services''' (''array'') - массив опций, привязанных к данному ключу пользователя. Каждая опция описывается такими полями:
** '''id''' (''string'') - идентификатор опции
** '''validFrom''' (''unix timestamp'') - с какого времени опция активна
** '''validTo''' (''unix timestamp'') - до какого времени опция активна
** '''enabled''' (''boolean'') - активна ли опция в данный момент
пример запроса:
<nowiki>https://api.acestream.net/developer?method=getUserKeyInfo ↵
&api_version=1.0 ↵
&api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
&app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
&user_key=8fb311be3836b04f61817dbf8a23c05739ebb13e ↵
&sign=5e0fc46d908e5f224ce9fce9f6a83dd6b3502cc0</nowiki>
ответ (нет опций):
<tt>{"services":[]}</tt>
ответ (есть опции):
<nowiki>{"services": [
{"id": "noAds", "validFrom": 1374673235, "validTo": 1445089235, "enabled": true},
{"id": "premium", "validFrom": 1374858187, "validTo": 1448301787, "enabled": true}
]}</nowiki>
===createUserKey===
Создать новый ключ пользователя
Действие ключа пользователя распостраняется только на продукт разработчика, указанный в параметре <tt>product</tt>.
поля в ответе:
* '''userKey''' (''string'') - созданный ключ пользователя
* '''extension''' (''string'') - содержимое файла-расширения, который используется для последующей загрузки в движок
пример запроса:
<nowiki>https://api.acestream.net/developer?method=createUserKey ↵
&api_key=cd3119af58cfa8833ba105a4fd4eb791395b921c ↵
&api_version=1.0 ↵
&app=3_250o55jdisu88skggogg4g4w4wc8wgskss4gkgkkk40k0gcsw8 ↵
&sign=99982a11708ef4a80e12f1ca845d314340db8869</nowiki>
ответ:
<tt>{
"userKey": "c7456d962209ce22a8edd0c788940a15792bc575",
"extension": "F5T6L+X\/TnhqoXP\/Tyzlad51LoGI3InF676iap ↵
n6vuJUOLbFJNGfYQcakQMXAhSTrlc7XlmUydoGcnCXhw5qefoinHZHIL ↵
VW51Pd5I0\/0YbKsmn\/Y78F1JhG1ckBExCtQTf\/NgLj+8TeTyPOfQS ↵
lRub3k4G\/m0+Iqyq4hshKnmTIBlkDcytWZ5DyQFLetllUUz9rLFjvR8 ↵
mF0qy3GCYtAw=="
}</tt>
==Идентификаторы опций==
* '''noAds''' - опция "No ADs" (отключение рекламы Ace Stream)
* '''premium''' - опция "Premium Streams" (доступ к премиум-контенту)
==Идентификаторы периодов==
* '''m1''' - 30 дней
* '''y1''' - 365 дней
Данное API позволяет разработчикам приложений работать с [[User_key|ключами пользователей]] в системе Ace Stream. API предоставляет методы для создания ключей пользователей и для активации различных опций для ключей.
==Формат запросов==
Запросы API отправляются методом HTTP-GET на такие адреса:
* тестовый режим: <tt><nowiki>https://api-sandbox.acestream.net/developer</nowiki></tt>
* боевой режим: <tt><nowiki>https://api.acestream.net/developer</nowiki></tt>
Ответы на запросы приходят в формате json.
Если при обработке запроса возникла ошибка, будет отослан ответ такого вида:
<tt><nowiki>{"error":"error descrtiption"}</nowiki></tt>
Ответы за успешно обработанные запросы зависят от вызываемого метода.
===Обязательные общие параметры для всех запросов===
* '''method''' - вызываемый метод API
* '''api_key''' - ключ клиента API
* '''api_version''' - поддерживаемая версия API (текущая версия: 1.0)
* '''product''' - публичная часть [[Product_key|ключа продукта]]
* '''sign''' - цифровая подпись запроса
===Алгоритм формирования цифровой подписи===
* создается массив строк вида "название_параметра=значение_параметра"
* полученный массив сортируется
* элементы отсортированного массива объединяются в строку с разделителем "#"
* к полученной строке добавляется секретный ключ клиента API
* подписью является sha1-хеш от полученной строки (в шестнадцатеричном представлении, 40 символов, маленькими буквами)
Код на PHP:
<tt><nowiki>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;
}</nowiki></tt>
==Методы API==
===getServiceCost===
Получить стоимость опции
параметры:
* '''service''' (''string'') - идентификатор опции
* '''period''' (''string'') - идентификатор периода
поля в ответе:
* '''cost''' (''decimal'') - стоимость опции на указанный период в EUR
пример запроса:
<nowiki>https://api.acestream.net/developer?method=getServiceCost ↵
&api_version=1.0 ↵
&api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
&app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
&service=noAds ↵
&period=m1 ↵
&sign=45c84ceffd3ec443586e8f4666b28abde8400768</nowiki>
ответ:
<nowiki>{"cost":1}</nowiki>
===activateService===
Активировать опцию для пользователя.
В результате успешной активации средства будут списаны с баланса разработчика.
параметры:
* '''user_key''' (''string'') - ключ пользователя
* '''service''' (''string'') - идентификатор опции
* '''period''' (''string'') - идентификатор периода
поля в ответе:
* '''validFrom''' (''unix timestamp'') - с какого времени опция активна
* '''validTo''' (''unix timestamp'') - до какого времени опция активна
пример запроса:
<nowiki>https://api.acestream.net/developer?method=activateService ↵
&api_version=1.0 ↵
&api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
&app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
&user_key=a455865e5800fd7efab75f2b4852fc2497f9fc39 ↵
&service=noAds ↵
&period=m1 ↵
&sign=c4df772a4a41ad7bbb4d7d07e46cad5e3622c59e</nowiki>
ответ (успешная активация опции):
<nowiki>{"validFrom":1376048972,"validTo":1378640972}</nowiki>
ответ (на балансе реселлера недостаточно средств для активации опции):
<nowiki>{"error":"not enough credits"}</nowiki>
===getUserKeyInfo===
Получить информацию о ключе пользователя
параметры:
* '''user_key''' (''string'') - ключ пользователя
поля в ответе:
* '''services''' (''array'') - массив опций, привязанных к данному ключу пользователя. Каждая опция описывается такими полями:
** '''id''' (''string'') - идентификатор опции
** '''validFrom''' (''unix timestamp'') - с какого времени опция активна
** '''validTo''' (''unix timestamp'') - до какого времени опция активна
** '''enabled''' (''boolean'') - активна ли опция в данный момент
пример запроса:
<nowiki>https://api.acestream.net/developer?method=getUserKeyInfo ↵
&api_version=1.0 ↵
&api_key=be6f66e0848528139583b567fb222215444fc8ac ↵
&app=9_50gh753t6uscog88800kcksw04s0o0wccscco8kgsogwkocwgw ↵
&user_key=8fb311be3836b04f61817dbf8a23c05739ebb13e ↵
&sign=5e0fc46d908e5f224ce9fce9f6a83dd6b3502cc0</nowiki>
ответ (нет опций):
<tt>{"services":[]}</tt>
ответ (есть опции):
<nowiki>{"services": [
{"id": "noAds", "validFrom": 1374673235, "validTo": 1445089235, "enabled": true},
{"id": "premium", "validFrom": 1374858187, "validTo": 1448301787, "enabled": true}
]}</nowiki>
===createUserKey===
Создать новый ключ пользователя
Действие ключа пользователя распостраняется только на продукт разработчика, указанный в параметре <tt>product</tt>.
поля в ответе:
* '''userKey''' (''string'') - созданный ключ пользователя
* '''extension''' (''string'') - содержимое файла-расширения, который используется для последующей загрузки в движок
пример запроса:
<nowiki>https://api.acestream.net/developer?method=createUserKey ↵
&api_key=cd3119af58cfa8833ba105a4fd4eb791395b921c ↵
&api_version=1.0 ↵
&app=3_250o55jdisu88skggogg4g4w4wc8wgskss4gkgkkk40k0gcsw8 ↵
&sign=99982a11708ef4a80e12f1ca845d314340db8869</nowiki>
ответ:
<tt>{
"userKey": "c7456d962209ce22a8edd0c788940a15792bc575",
"extension": "F5T6L+X\/TnhqoXP\/Tyzlad51LoGI3InF676iap ↵
n6vuJUOLbFJNGfYQcakQMXAhSTrlc7XlmUydoGcnCXhw5qefoinHZHIL ↵
VW51Pd5I0\/0YbKsmn\/Y78F1JhG1ckBExCtQTf\/NgLj+8TeTyPOfQS ↵
lRub3k4G\/m0+Iqyq4hshKnmTIBlkDcytWZ5DyQFLetllUUz9rLFjvR8 ↵
mF0qy3GCYtAw=="
}</tt>
==Идентификаторы опций==
* '''noAds''' - опция "No ADs" (отключение рекламы Ace Stream)
* '''premium''' - опция "Premium Streams" (доступ к премиум-контенту)
==Идентификаторы периодов==
* '''m1''' - 30 дней
* '''y1''' - 365 дней