Интеграция
Запуск игры
Запуск игры создаёт сессию игрока и возвращает ссылку на клиент игры. Этот метод нужен для каждого игрока, открывающего игру.
Режимы#
gametype определяет, как оплачивается сессия:
"demo"— режим с кошельком: игра идёт на ваш кошелёк через колбэки кошелька. Значение называетсяdemoпо историческим причинам."fun"— демо-режим (поведение описано в разделе Демо-режим): бесплатная игра на изолированном демо-кошельке. Ваш кошелёк не вызывается, в отчёты ничего не попадает.
Любое другое значение отклоняется с REAL_MODE_DISABLED.
POST /playGame.do#
POST
/playGame.doСоздаёт сессию (или возвращает существующую при незавершённом раунде) и ссылку для открытия в браузере игрока.
Request#
curl -X POST https://notell-api.com/playGame.do \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: launch-player-1024-0001' \
-d '{"provider":"own","partner":"demo-casino","api_key":"YOUR_API_KEY","player_id":"player-1024","symbol":"gates-of-olympus","currency":"EUR","gametype":"demo","lang":"de","client_platform":"mobile"}'{
"provider": "own",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"player_id": "player-1024",
"symbol": "gates-of-olympus",
"currency": "EUR",
"gametype": "demo",
"lang": "de",
"client_platform": "mobile"
}{
"provider": "own",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"symbol": "gates-of-olympus",
"currency": "EUR",
"gametype": "fun",
"demo_balance": "100000.00",
"lang": "en"
}Необязательный заголовок: Idempotency-Key (Соглашения).
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
provider | string | да | Всегда "own". |
partner | string | да | Идентификатор вашего проекта. |
api_key | string | да | API-ключ вашего проекта. |
player_id | string | с gametype "demo" | Ваш идентификатор игрока, 1–128 печатных ASCII-символов. С "fun" необязателен и лишь определяет демо-кошелёк. |
symbol | string | да | Идентификатор игры: game_id из каталога или списка игр. |
currency | string | да | Один из 157 фиатных кодов ISO 4217 в верхнем регистре (Валюты). Криптовалюты отклоняются. |
gametype | enum | да | "demo" (режим с кошельком) или "fun" (демо-режим). |
lang | string | нет | Стандартный код языка, например en, de, pt-BR, zh-Hant (Языки). По умолчанию: язык проекта по умолчанию, он должен поддерживаться игрой, иначе UNSUPPORTED_LANGUAGE. |
client_platform | enum | нет | desktop или mobile. По умолчанию: desktop. Выбирает сборку клиента игр Pragmatic Play; на других провайдеров не влияет. |
region | enum | нет | RU или NONE. Принимается для совместимости; сессию не меняет. |
demo_balance | money | нет | Только с gametype "fun": начальный демо-баланс, 1.00–10 000 000.00, десятичная строка или число не более чем с двумя знаками. По умолчанию: 100000.00. |
demo_reset | boolean | нет | Только с gametype "fun" и player_id: пополнить демо-кошелёк этого игрока до demo_balance при данном запуске. |
Любое другое поле приводит к INVALID_REQUEST; устаревшее поле freespins отклоняется с PROMO_UNSUPPORTED, используйте фриспины через /gameActions.do. Параметров лобби или URL возврата нет: возврат на ваш сайт организуйте на своей странице вокруг игры.
Response#
{
"status": "ok",
"link": "https://notell-api.com/gs2c/html5Game.do?symbol=vs20olympgate&mgckey=4c9e1f0a7b3d58e2a6c4d09f13b87e5a2d6f40c8b1e97a35d0f2c64b8e1a93d7",
"meta": {
"session_id": "9d0c3f7e-41b8-4a52-9c0e-6d3f5a7b8c21",
"currency": "EUR",
"language": "de"
}
}| Поле | Тип | Описание |
|---|---|---|
status | string | "ok". |
link | string | URL для открытия в браузере игрока (или в iframe). Вид зависит от игры: считайте его непрозрачным. Содержит токен сессии: передавайте только этому игроку и не логируйте. |
meta.session_id | string | Идентификатор сессии; он же встречается в колбэках вашего кошелька. |
meta.currency | string | Валюта сессии. |
meta.language | string | Стандартный код языка сессии. |
meta.gametype | string | "fun" только в демо-режиме. |
meta содержит и информационные поля о сборке игры; неизвестные игнорируйте.
Errors#
| Код | HTTP | Когда |
|---|---|---|
UNAUTHORIZED | 401 | Неизвестный partner или неверный api_key. |
INVALID_REQUEST | 400 | Поле отсутствует или некорректно: неизвестное поле, неверная currency, пустой player_id или длиннее 128, неверные client_platform или region, demo_reset не boolean, demo_balance / demo_reset с gametype "demo". |
REAL_MODE_DISABLED | 400 | gametype не равен ни demo, ни fun. |
UNSUPPORTED_GAME | 404 | symbol не указан или отсутствует в каталоге. |
PROMO_UNSUPPORTED | 400 | Передано устаревшее поле freespins. |
INVALID_IDEMPOTENCY_KEY | 400 | Некорректный Idempotency-Key. |
IDEMPOTENCY_CONFLICT | 400 | Тот же ключ использован с другим телом. |
UNSUPPORTED_LANGUAGE | 400 | lang некорректен или не поддерживается игрой (также для языка проекта по умолчанию, если lang не указан). |
INVALID_DEMO_BALANCE | 400 | demo_balance вне диапазона 1.00–10 000 000.00 или более чем с двумя знаками. |
DEMO_UNAVAILABLE | 503 | Демо-режим не подготовлен на этом сервере. |
ROUND_IN_PROGRESS | 400 | Незавершённый раунд этого игрока в этой игре идёт в другой валюте. |
BALANCE_UNAVAILABLE | 400 | Ваш кошелёк ответил на session_info со "status":"error". |
CALLBACK_HTTP_ERROR | 400 | Ваш кошелёк ответил на session_info HTTP-статусом не 2xx. |
INVALID_CALLBACK_RESPONSE | 400 | Ответ на session_info недопустим (правила ответа кошелька). |
WALLET_IDENTITY_MISMATCH | 400 | Сохранённые настройки кошелька проекта (URL колбэка, флаг идемпотентного кошелька) не совпадают с конфигурацией платформы; обратитесь к менеджеру. |
REQUEST_FAILED | 400 | Некорректный JSON, отсутствующий или неподдерживаемый тип содержимого, таймаут или сбой соединения с кошельком. Тело больше 128 КиБ до API не доходит: веб-сервер отвечает HTTP 413. |
RATE_LIMITED | 429 | Превышена квота запуска (Соглашения). |
Что происходит при запуске#
- Проверяется ключ и валидируется тело.
- В режиме с кошельком платформа вызывает ваш кошелёк с
session_infoдля игрока. Если кошелёк не ответил успешно, запуск завершается одним из кодов кошелька выше, сессия не создаётся. В демо-режиме вместо этого используется изолированный демо-кошелёк. - Сессия сохраняется (истекает через 2 часа после создания), и возвращается ссылка.
Повторный запуск и незавершённые раунды#
- Игрок с незавершённым раундом в той же игре всегда продолжает его: запуск возвращает ссылку на сессию, которой принадлежит раунд (истёкшая сессия возобновляется с новым токеном и сроком), и
session_infoне отправляется. - Если вы запускаете игру на другом языке, пока раунд не завершён, сессия переключается на новый язык.
- Если незавершённый раунд идёт в другой валюте, запуск отвечает
ROUND_IN_PROGRESS; запускайте в исходной валюте. - Повтор вызова с тем же
Idempotency-Keyи телом возвращает тот же ответ.