Документация по интеграции веб игр
Документация по интеграции партнера с игровым сервисом веб-игр.
Изменения
| Дата | Версия | Описание |
|---|---|---|
| 18.05.17 | 0.1 | Создание документации |
| 20.04.26 | 0.2 | Документация обновлена: удалены неподдерживаемые методы, убран live_slot, обновлен GetListGames, уточнен параметр language, добавлены поддерживаемые валюты |
Введение
В этом документе описан процесс интеграции партнера с сервисом веб-игр.
Документация включает методы, необходимые для получения списка игр, запуска демо-режима и запуска игры на реальные деньги через партнерскую авторизацию.
Общее
- Протокол:
HTTPS - Публичные методы сервиса вызываются через
GET - Методы API партнера вызываются через
POST - Формат тела
POST-запросов:application/json - Успешный ответ:
code = 0
Базовый сценарий интеграции
- Партнер запрашивает список доступных игр через
GET /GetListGames - Партнер открывает игру через
GET /game - Для запуска игры на реальные деньги на стороне партнера должен быть доступен метод
POST /Authorization
Подпись запросов
Все подписи считаются через md5.
Строка для подписи собирается по правилу:
<MethodName>/ + <value1> + <value2> + ... + <api_key>Важно:
- между значениями нет разделителей
- слеш после имени метода обязателен
- порядок значений должен строго соответствовать описанию метода
Пример вспомогательной функции:
function calcSignature(method, data, apiKey) {
let sign = method + '/';
for (const key in data) {
sign += data[key];
}
sign += apiKey;
return crypto.createHash('md5').update(sign).digest('hex');
}1. GetListGames
Возвращает список игр, доступных партнеру.
Запрос
GET /GetListGames
Параметры:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
partner_id | int | Да | Идентификатор партнера |
type | string | Да | Тип игр. Поддерживаемое значение: web_slot |
hash | string | Да | md5("GetListGames/" + partner_id + type + api_key) |
Пример:
GET /GetListGames?partner_id=<partner_id>&type=web_slot&hash=<md5_signature>Успешный ответ
{
"code": 0,
"message": "Ok",
"games": [
{
"id": 11,
"title": "Chicago Deluxe",
"url": "/game",
"icon": "/icon/novomatic-deluxe/206x206/chicago_deluxe.jpg",
"class": "Novomatic Deluxe"
}
]
}Поля ответа:
| Поле | Тип | Описание |
|---|---|---|
code | int | Код результата |
message | string | Описание результата |
games | array | Список игр |
games[].id | int | Идентификатор игры |
games[].title | string | Название игры |
games[].url | string | URL запуска игры |
games[].icon | string | URL иконки игры |
games[].class | string | Категория или класс игры |
Коды ответа
| Код | Описание |
|---|---|
0 | Успешно |
10 | Hash mismatch |
15 | Unavailable type |
101 | Partner is not found |
1 | Internal Error |
2. Запуск игры
Для запуска игры используется метод GET /game.
Запрос
GET /game
Параметры:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
partner_id | int | Да | Идентификатор партнера |
game_id | int | Да | Идентификатор игры |
language | string | Нет | Язык игры. Параметр опционален |
currency | string | Да | Валюта игрока |
player_id | `int | string` | Для игры на реальные деньги |
token | string | Для игры на реальные деньги | Одноразовый токен игрока |
Запуск в браузере и на мобильных устройствах
В браузерной версии игра обычно открывается внутри iframe.
На мобильных устройствах рекомендуется открывать прямую ссылку на игру.
Демо-режим
Для запуска demo-версии используйте валюту DMO.
Пример:
GET /game?partner_id=<partner_id>&game_id=<game_id>&language=eng¤cy=DMOИгра на реальные деньги
Пример:
GET /game?partner_id=<partner_id>&player_id=<player_id>&game_id=<game_id>&language=eng¤cy=<currency>&token=<token>Для запуска игры на реальные деньги партнер должен передавать player_id и token.
Результат
При успешном запросе сервис возвращает HTML страницы игры.
Коды ответа
| Код | Описание |
|---|---|
12 | Game is not found |
13 | Partner API return null |
101 | Partner is not found |
102 | Currency is not found |
1 | Internal Error |
3. Authorization
Метод должен быть реализован на стороне партнера для запуска игры на реальные деньги.
Запрос
POST <partner_api_url>/Authorization
Тело запроса:
{
"player_id": "<player_id>",
"game_id": "<game_id>",
"token": "<token>",
"hash": "<md5_signature>"
}Подпись:
md5("Authorization/" + player_id + game_id + token + api_key)Успешный ответ
{
"code": 0,
"message": "Ok",
"player_id": 42,
"currency": "RUB",
"nick": "Player42",
"balance": 10000.12,
"external_session": "session-123"
}Поля ответа:
| Поле | Тип | Описание |
|---|---|---|
code | int | Код результата |
message | string | Описание результата |
player_id | `int | string` |
currency | string | Валюта игрока |
nick | string | Ник игрока |
balance | number | Баланс игрока |
external_session | string | Необязательный идентификатор внешней сессии |
Коды ответа
| Код | Описание |
|---|---|
0 | Успешно |
10 | Hash mismatch |
11 | Player not found |
14 | Non-valid token |
1 | Internal Error |
4. Поддерживаемые валюты
Сейчас поддерживается 122 валютных кода:
AED, ALL, AMD, AOA, ARS, AUD, AZN, BAM, BDT, BGN, BHD, BOB, BRL, BSX, BTC, BYN, CAD, CDF, CFA, CHF, CLP, CNY, COP, CZK, DASH, DEEX, DKK, DMO, DOP, DTC, DZD, EGP, ETB, ETH, EUR, FAU, FBu, GAME, GBP, GEL, GHS, GMC, GMD, GNF, HC, HKD, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JOD, JPY, KES, KGS, KM, KRW, KWD, KZT, LBP, LTC, MAD, MDL, MKD, MMK, MNT, MVR, MXN, MYR, MZN, NGN, NIS, NOK, NZD, OMR, PEN, PHP, PICK, PKR, PLN, PRB, PYG, QAR, RON, RSD, RUB, RUR, SAR, SDG, SEK, SGD, THB, TJS, TMT, TND, TRY, TWD, TZS, UAH, UGX, USD, USDC, USDT, UYU, UZS, VEF, VND, XAF, XEM, XMR, XOF, ZAR, ZEC, ZMW, ZWL, mBT, mETH, uBTC
Примечания:
DMOиспользуется для запуска демо-режима- при необходимости можно добавить дополнительные валюты по запросу