
Изменения
| Дата | Версия | Описание |
|---|---|---|
| 01.12.22 | 1.0 | Создание документации |
| 25.10.24 | 1.1 | Добавлен параметр gameId в запросы. Удален метод rollback |
| 28.05.25 | 1.2 | Добавлен метод для запуска тестирования интеграции |
| 11.07.25 | 1.3 | Добавлены методы для работы с фриспинами |
| 15.10.25 | 1.4 | Замена всех integer на bigint |
| 10.12.25 | 1.5 | Добавлен параметр freebet в ответ списка игр. Добавлен параметр finished в запросы bet/win/refund |
1. Введение
В данном документе описывается процесс взаимодействия процессинга pixmove-games, с процессингом партнера. Представлено описание методов необходимых для реализации на стороне клиента.
Транспортный протокол - HTTPS.
Методы - GET/POST.
Формат данных - JSON.
В заголовках запроса Content-Type установить - application/json.
После подписания договора Вам сообщается:
- url - сервера pixmove-games (далее <server-pixmove-games>)
- partnerId - уникальный идентификатор партнера
- apiKey - секретный ключ для формирования hash
Клиент должен предоставить url (далее <server-partner>) по которому можно будет выполнять необходимые запросы (описание методов см. ниже), а также список IP адресов своих серверов для добавления их в белый список.
2. Формирование подписи запроса
Подпись формируется следующим образом
requestType + param1 + param2 + … + paramN + apiKey
requestType - тип запроса (bet, win, balance и т.д.) param1 - первый параметр передаваемый в запрос ... paramN - N параметр передаваемый в запрос apiKey - секретный ключ партнера
Для шифрования используется алгоритм hmac-sha256, вместе с apiKey в качестве key для шифрования.
Пример
apiKey: test_key
requestType: bet
Параметры:
amount: '10.00',
currency: 'USD',
partnerId: 1,
playerId: '432',
roundId: 7562,
sessionId: '123',
transactionId: 33,
Формируется следующая строка для шифрования:
bet10.00USD1432756212333test_key
Совершаем шифрование с ключом, получаем hash.
47226afaf96b699b71d1942ede85a6867b668f21f4bb8928db3b52a7410f29aa
INFO
Сайт для проверки подписи
TIP
Пример реализации NodeJS
const crypto = require('crypto');
const apiKey = 'test_key';
const result = 'bet10.00USD1432756212333test_key';
const cryptoHash = crypto.createHmac('sha256', apiKey);
const hash = cryptoHash.update(result).digest('hex');
console.log(hash);3. Формат возврата данных
При возврате данных с сервера провайдера и с сервера клиента используется следующая структура данных.
В случае успешного запроса возвращается структура:
{
status: 'success'
data: {
field1: value1,
field2: value2,
...
fieldN: valueN,
}
}В случае ошибки запроса возвращается структура:
{
status: 'error',
error: {
message: 'ValueNotFound',
details: {
field1: value1,
field2: value2,
...
fieldN: valueN,
}
}
}TIP
message - сообщение об ошибке, для каждого метода будет предоставлен возможный перечень ошибок.
details - данные позволяющие детализировать ошибку.
4 Описание методов
4.1 Получение списка игр
Url: https://<server-pixmove-games>/game/list
Тип запроса: GET
Метод позволяет получить актуальный список игр. Запрос выполняет клиент.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| partnerId | bigint | Уникальный идентификатор партнера |
| class* | string | Класс игры (instant, slot, table, fast) |
| hash | string | sha256 от строки (“game_list” + partnerId + class + apiKey) |
| icons** | boolean | Флаг, указывающий на необходимость возврата всех размеров иконок игр (по умолчанию - 'false') |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash (“game_list” + partnerId + apiKey)
** - Необязательные поля: они никогда не используются в расчете hash
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| games | array | Массив с играми |
| Параметры игры в массиве | ||
| id | bigint | Уникальный идентификатор игры |
| title | string | Название игры |
| class | string | Класс игры (instant, slot, table) |
| icon | string | URL для иконки игры |
| icons | array | Массив с иконками игры |
| freebet | boolean | Флаг, показывающий доступны ли фриспины в игре |
Пример запроса:
{
partnerId: 1,
hash: 'f01729f278481b7934b9c859fdbf030195e924e2e17d99b925ec2bff4655dfc2'
}hash формируется из строки "game_list1test_key"
Пример ответа:
{
status: 'success'
data: {
games: [{
id: 1,
title: 'Pirate dice',
class: 'instant,
icon: '.../icon/1.png',
icons: {
'128x128': '.../icon/1.png',
'256x256': '.../icon/2.png'
},
freebet: true
}]
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| PartnerNotFound | Партнер с таким partnerId не найден |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
4.2 Получение демо игры
Url: https://<server-pixmove-games>/game/demo
Тип запроса: GET
Метод позволяет получать ссылку для открытия игры в iFrame. Запрос выполняет клиент.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| partnerId | bigint | Уникальный идентификатор партнера |
| gameId | bigint | Уникальный идентификатор игры |
| language* | string | Язык локализации игры (en, ru и т.д.) |
| returnUrl* | string | Сссылка для возврата из игры обратно на сайт клиента |
| hash | string | sha256 от строки (“demo”+ partnerId + gameId + language + returnUrl + apiKey) |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash (“demo” + partnerId + gameId + apiKey)
Параметры ответа:
| Нащвание | Тип | Описание |
|---|---|---|
| gameUrl | string | Ссылка для открытия игры в iFrame |
Пример запроса:
{
partnerId: 1,
gameId: 1,
hash: '504b47948ff3efe5247b9e369502e9e20b19752eaf3c6eb7f7354e75b09c61ac'
}hash формируется из строки "demo11test_key".
Пример ответа:
{
status: 'success'
data: {
gameUrl: '\<server-pixmove-games\>/pirate\_dice/?token=rzcvPWua8zjMw2'
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| PartnerNotFound | Партнер с таким partnerId не найден |
| GameNotFound | Игра с таким gameId не найдена |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
4.3 Получение игры
Url: https://<server-pixmove-games>/game/init
Тип запроса: GET
Метод позволяет получать ссылку для открытия игры в iFrame. Запрос выполняет клиент
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| currency | string | Валюта, в которой будет осуществляться игра (USD, EUR и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| gameId | bigint | Уникальный идентификатор игры |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента, в дальнейшем будет передаваться во все запросы, необязательное поле, можно не передавать |
| language* | string | Язык локализации игры (en, ru, и тд) |
| returnUrl* | string | Ссылка для возврата из игры обратно на сайт клиента |
| hash | string | sha256 от строки ("game" + currency + partnerId + gameId + playerId + sessionId + language + returnUrl + apiKey) |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash ("game" + currency + partnerId + gameId + playerId + apiKey)
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| gameUrl | string | Ссылка для открытия игры в iFrame |
Пример запроса:
{
currency: 'USD',
partnerId: 1,
gameId: 1,
playerId: '132',
sessionId: '123',
hash: '5ac72c7cec4949fc3d268dee6bff0394c3378a3a0ed21727d5523d272638a430'
}hash_string = 'gameUSD11132123test_key'
Пример ответа:
{
status: 'success'
data: {
gameUrl: '\<server-pixmove-games\>/pirate\_dice/?token=rzcvPWua8zjMw2'
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| CurrencyNotFound | Валюта с таким кодом не найдена |
| PartnerNotFound | Партнер с таким partnerId не найден |
| GameNotFound | Игра с таким gameId не найдена |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
4.4 Получение баланса игрока
Url: https://<server-partner>/balance
Тип запроса: GET
Метод позволяет получить актуальный баланс игрока. Запрос выполняет провайдер.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| currency | string | Валюта, в которой осуществляется игра (USD, EUR и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента |
| hash | string | sha256 от строки (“balance” + currency + partnerId + playerId + sessionId + apiKey) |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash (“balance” + currency + partnerId + playerId + apiKey)
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| balance | string | Актуальный баланс игрока |
Пример запроса:
{
currency: 'USD',
partnerId: 1,
playerId: '432',
sessionId: '123',
hash: 'bafb050a6f04d30d6b684f024a5e38c97f8de84b7c957bbd357e6da867cf2f3c'
}Пример ответа:
{
status: 'success'
data: {
balance: '10103.63'
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| CurrencyNotFound | Валюта с таким кодом не найдена |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
4.5 Совершение ставки игроком
Url: https://<server-partner>/bet
Тип запроса: POST
Метод позволяет совершить ставку игроку. Запрос выполняет провайдер.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| amount | string | Сумма транзакции |
| currency | string | Валюта, в которой будет осуществляться игра (USD, EUR и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| gameId | bigint | Уникальный идентификатор игры |
| roundId | bigint | Уникальный идентификатор раунда ставки |
| transactionId | bigint | Уникальный идентификатор транзакции ставки провайдера |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента |
| finished** | boolean | Флаг, показывающий завершен ли раунд |
| hash | string | sha256 от строки ("bet" + amount + currency + partnerId + playerId + gameId + roundId + transactionId + sessionId + apiKey) |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash ("bet" + amount + currency + partnerId + playerId + gameId + roundId + transactionId + apiKey)
** - Необязательные поля: они никогда не используются в расчете hash
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| balance | string | Актуальный баланс игрока |
| transactionId | string | Уникальный идентификатор транзакции ставки в системе клиента. |
Пример запроса:
{
amount: '10.00',
currency: 'USD',
partnerId: 1,
playerId: '432',
gameId: 3,
roundId: 7665,
transactionId: 35,
sessionId: '123',
finished: false,
hash: '433e73d9de350fdae70a85634de4eedb2923868ea09f8e35423b25ec2b0a3762'
}Пример ответа:
{
status: 'success'
data: {
balance: '10113.63',
transactionId: '1333882828'
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| PlayerLowBalance | Недостаточно средств на балансе игрока |
| CurrencyNotFound | Валюта с таким кодом не найдена |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
4.6 Начисление выигрыша игроку
Url: https://<server-partner>/win
Тип запроса: POST
Метод позволяет совершить зачисление выигрыша игроку. Запрос выполняет провайдер.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| amount | string | Сумма транзакции |
| currency | string | Валюта, в которой будет осуществляться игра (USD, EUR и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| gameId | bigint | Уникальный идентификатор игры |
| roundId | bigint | Уникальный идентификатор раунда ставки |
| betTransactionId | string | Уникальный идентификатор транзакции ставки в системе клиента |
| transactionId | bigint | Уникальный идентификатор транзакции выигрыша провайдера |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента |
| finished** | boolean | Флаг, показывающий завершен ли раунд |
| hash | string | sha256 от строки ("win" + amount + currency + partnerId + playerId + gameId + roundId + betTransactionId + transactionId + sessionId + apiKey) |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash ("win" + amount + currency + partnerId + playerId + gameId + roundId + betTransactionId + transactionId + apiKey)
** - Необязательные поля: они никогда не используются в расчете hash
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| balance | string | Актуальный баланс игрока |
| transactionId | string | Уникальный идентификатор транзакции выигрыша в системе клиента |
Пример запроса:
{
amount: '20.00',
currency: 'USD',
partnerId: 1,
playerId: '432',
gameId: 3,
roundId: 7665,
betTransactionId: '1333882827',
transactionId: 36,
sessionId: '123',
finished: true,
hash: 'd919a11d4cb1b0dc4cc0d5f880c6970fd160d434b3a779a66a9a7f6451d108fd'
}Пример ответа:
{
status: 'success'
data: {
balance: '10123.63',
transactionId: '1333882829'
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| CurrencyNotFound | Валюта с таким кодом не найдена |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
4.7 Отмена ставки игроку
Url: https://<server-partner>/refund
Тип запроса: POST
Метод позволяет совершить возврат ставки игроку. Запрос выполняет провайдер.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| amount | string | Сумма транзакции |
| currency | string | Валюта, в которой будет осуществляться игра (USD, EUR и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| gameId | bigint | Уникальный идентификатор игры |
| roundId | bigint | Уникальный идентификатор раунда ставки |
| betTransactionId | string | Уникальный идентификатор транзакции ставки в системе клиента |
| transactionId | bigint | Уникальный идентификатор транзакции возврата провайдера |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента |
| finished** | boolean | Флаг, показывающий завершен ли раунд |
| hash | string | sha256 от строки ("refund" + amount + currency + partnerId + playerId + gameId + roundId + betTransactionId + transactionId + sessionId + apiKey) |
* - Необязательные поля: если они не передаются, то они не учитываются при расчете hash ("refund" + amount + currency + partnerId + playerId + gameId + roundId + betTransactionId + transactionId + apiKey)
** - Необязательные поля: они никогда не используются в расчете hash
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| balance | string | Актуальный баланс игрока |
| transactionId | string | Уникальный идентификатор транзакции возврата в системе клиента |
Пример запроса:
{
amount: '10.00',
currency: 'USD',
partnerId: 1,
playerId: '432',
gameId: 3,
roundId: 7686,
betTransactionId: '1333882828',
transactionId: 37,
sessionId: '123',
finished: false,
hash: '3d304f5134260424a0777a91745565cf3e8b80226d0e1aa66bb0835ffe59839a'
}Пример ответа:
{
status: 'success'
data: {
balance: '10113.63',
transactionId: '1333882830'
}
}Возможные сообщения ошибок
| Сообщение | Описание |
|---|---|
| RequiredParamsNotFound | Некорректное количество параметров в запросе |
| InvalidParamType | Некорректный тип параметра |
| CurrencyNotFound | Валюта с таким кодом не найдена |
| IncorrectHash | Некорректно рассчитан hash |
| ServerError | Ошибка сервера |
5. Тестирование интеграции
Наше API предоставляет возможность проверить корректность интеграции с помощью POST-запроса, запускающего различные игровые сценарии. В ответ вы получите итоговый статус (success или error) и подробную информацию по каждому тестовому кейсу. Успешное прохождение всех тестов означает, что интеграция выполнена корректно.
В тестах мы ожидаем, что на любой запрос /bet с transactionId: 999999999 будет возвращаться ошибка, чтобы мы могли отправить /refund на этот bet.
Url: https://<server-pixmove-games>/test/self-validate
Тип запроса: POST
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| partnerId | bigint | Уникальный идентификатор партнера |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| currency* | string | Валюта, в которой будут осуществлятся запросы (по умолчанию USD) |
| gameId* | bigint | Уникальный идентификатор игры (по умолчанию 1) |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента (если не передан в запросе - не будет передаваться в тестах) |
| hash | string | sha256 от строки (“self_validate” + partnerId + playerId + apiKey) |
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| failedTests | array | Массив с данными по тестам, которые не прошли |
Пример запроса:
{
partnerId: 1,
playerId: '1',
hash: 'f01729f278481b7934b9c859fdbf030195e924e2e17d99b925ec2bff4655dfc2'
}Пример ответа:
{
"status": "success",
"data": {
"success": true,
"failedTests": []
},
"serverTime": 1748437219129,
"duration": 334
}6. Фриспины
Общие положения
В реализации фриспинов используются две основные сущности - кампания фриспинов и фриспины.
Кампания фриспинов - это общая промоакция, которую может создать партнер и по параметрам которой игрокам будут присвоены бесплатные вращения (фриспины).
Фриспины - это бесплатные вращения, которые будут начисляться игрокам при заходе в игру.
В рамках одной кампании фриспинов пользователю могут быть начислены только одни фриспины.
6.1 Создание кампании фриспинов
Для того, чтобы выдать игрокам фриспины, необходимо создать кампанию фриспинов, по параметрам которой будут выдаваться бесплатные вращения игрокам.
При заходе в игру, если игрок подходит под параметры кампании фриспинов (нужная валюта/нужная игра/нужный игрок) - ему будут начислены фриспины.
Если в запросе создания кампании фриспинов не указывать параметры currencies/gameIds/playerIds - то фриспины будут выдаваться всем игрокам.
Например, если в запросе на создание кампании указать только gameIds = [1], то фриспины будут выдаваться всем игрокам, на любых валютах, которые зайдут в игру с id = 1.
Параметр strictBetLevel: если он указан как true - это гарантирует, что игроку будут выданы фриспины именно по тому betLevel, который указан при создании. Если в игре отсутствует точно такой же betLevel - игроку будут недоступны фриспины в этой игре. Если использовать значение по умолчанию для этого параметра - false - то в случае отсутствия нужного betLevel в игре - будет использован ближайший
Url: https://<server-pixmove-games>/freespins/create
Тип запроса: POST
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| campaignExtId | string | Уникальный идентификатор кампании фриспинов в системе клиента |
| spinCount | bigint | Количество фриспинов |
| partnerId | bigint | Уникальный идентификатор партнера |
| betLevel | bigint | Размер желаемой ставки (из доступных, полученных в запросе 6.2) |
| strictBetLevel* | boolean | Включение обязательного совпадения размера ставки для фриспинов (по умолчанию false ) |
| startTime | string | Время начала кампании фриспинов в формате ISO 8601 |
| endTime | string | Время окончания кампании фриспинов в формате ISO 8601 |
| betLevelCurrency* | string | Валюта ставки (по умолчанию USD) |
| maxWin* | bigint | Максимальная выигрышная сумма в валюте betLevelCurrency (по умолчанию - не ограничен) |
| currencies* | array | Массив с валютами для которых будут выдаваться фриспины (пример - ["USD", "EUR"]) |
| gameIds* | array | Массив с уникальными идентификаторами игр для которых будут выдаваться фриспины (пример - [1, 2, 3]) |
| playerIds* | array | Массив с уникальными идентификаторами игроков для которых будут выдаваться фриспины (пример - ["playerId1", "playerId2"]) |
| hash | string | sha256 от строки (“freespins_create” + campaignExtId + spinCount + partnerId + betLevel + apiKey) |
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| id | bigint | Уникальный идентификатор кампании фриспинов |
Пример запроса:
{
campaignExtId: 1,
spinCount: 20,
betLevel: 8,
betLevelCurrency: 'USD',
strictBetLevel: true,
maxWin: 10000000,
partnerId: 1,
startTime: '2025-07-01T15:04:32.384Z',
endTime: '2025-07-07T15:04:32.384Z',
currencies: ['RUB', 'USD', 'EUR'],
playerIds: ['1', '2', '3'],
gameIds: [1, 2, 3, 4, 5],
hash: '123'
}Пример ответа:
{
"status": "success",
"data": {
"id": 713
},
"serverTime": 1748437219129,
"duration": 334
}6.2 Получение списка доступных ставок
Данный метод позволяет получить доступные betLevels для создания кампании фриспинов, исходя из переданных параметров. Из полученных данных можно выбрать betLevel, на котором будет создаваться кампания фриспинов.
Url: https://<server-pixmove-games>/freespins/bet-levels
Тип запроса: GET
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| currency | string | Валюта betLevel`а (USD, EUR, RUB и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| hash | string | sha256 от строки (“freespins_bet_levels” + currency + partnerId + apiKey) |
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| betLevels | array | Массив с доступными betLevels |
Пример запроса:
{
currency: 'USD',
partnerId: 1,
hash: '123'
}Пример ответа:
{
"status": "success",
"data": {
"betLevels": [
10,
20,
30,
40,
50,
100,
200,
300,
400,
500
]
},
"serverTime": 1748437219129,
"duration": 334
}6.3 Получение списка кампаний фриспинов
Все параметры в этом запросе кроме partnerId - опциональные, если они передаются - то используются в фильтрации получаемых кампаний фриспинов.
Флаг withFreespins определяет, будет ли в ответе содержаться информация о текущих фриспинах для кампаний.
Url: https://<server-pixmove-games>/freespins/list
Тип запроса: GET
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| partnerId | bigint | Уникальный идентификатор партнера |
| campaignExtId* | string | Уникальный идентификатор кампании фриспинов в системе клиента |
| currencies* | array | Массив с валютами для которых будут выдаваться фриспины (пример - ["USD", "EUR"]) |
| gameIds* | array | Массив с уникальными идентификаторами игр для которых будут выдаваться фриспины (пример - [1, 2, 3]) |
| playerIds* | array | Массив с уникальными идентификаторами игроков для которых будут выдаваться фриспины (пример - ["playerId1", "playerId2"]) |
| status* | string | Статус кампании фриспинов ("active", "completed", "canceled") |
| closed* | boolean | Флаг, определяющий, будут ли возвращаться только закрытые кампании фриспинов |
| startTimeFrom* | string | Фильтр по времени действия кампании фриспинов, в формате ISO 8601 |
| startTimeTo* | string | Фильтр по времени действия кампании фриспинов, в формате ISO 8601 |
| endTimeFrom* | string | Фильтр по времени действия кампании фриспинов, в формате ISO 8601 |
| endTimeTo* | string | Фильтр по времени действия кампании фриспинов, в формате ISO 8601 |
| limit* | bigint | Количество кампаний фриспинов, которое будет возвращено в ответе |
| offset* | bigint | Смещение, определяющее, с какой кампании фриспинов начнется возвращение |
| withFreespins* | boolean | Флаг, определяющий, будет ли в ответе содержаться информация о текущих фриспинах для кампаний |
| hash | string | sha256 от строки (“freespins_list” + partnerId + apiKey) |
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| campaigns | array | Массив с кампаниями фриспинов |
Пример запроса:
{
partnerId: 1,
campaignExtId: 1,
currencies: ['USD', 'EUR'],
gameIds: [1, 2, 3],
playerIds: ['1', '2', '3'],
status: 'active',
closed: false,
startTimeFrom: '2025-07-01T15:04:32.384Z',
startTimeTo: '2025-07-07T15:04:32.384Z',
endTimeFrom: '2025-07-01T15:04:32.384Z',
endTimeTo: '2025-07-07T15:04:32.384Z',
limit: 10,
offset: 0,
withFreespins: true,
hash: '123'
}Пример ответа:
{
"status": "success",
"data": {
"campaigns": [
{
"id": 11,
"extId": "22",
"spinCount": 20,
"betLevel": 8,
"closed": false,
"maxWin": null,
"startTime": "2025-07-01T15:04:32.384Z",
"endTime": "2025-08-25T15:05:16.592Z",
"partnerId": 1,
"Freespins": [
{
"id": 23,
"campaignId": 11,
"playerId": 164,
"gameId": 17,
"currencyId": 1,
"status": "active",
"currentSpins": 0,
"currentWin": 0,
"closed": false
}
]
}
]
},
"serverTime": 1752245215266,
"duration": 182
}6.4 Отмена кампании фриспинов
Этот запрос позволяет отменить и завершить кампанию фриспинов.
Внимание! Данный метод так же отменяет и закрывает все текущие фриспины, его использование нежелательно, если кто-то из клиентов их уже получил
Url: https://<server-pixmove-games>/freespins/cancel
Тип запроса: POST
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| campaignExtId | string | Уникальный идентификатор кампании фриспинов в системе клиента |
| partnerId | bigint | Уникальный идентификатор партнера |
| hash | string | sha256 от строки (“freespins_cancel” + partnerId +campaignExtId + apiKey) |
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| id | bigint | Уникальный идентификатор кампании фриспинов |
Пример запроса:
{
campaignExtId: 1,
partnerId: 1,
hash: '123'
}Пример ответа:
{
"status": "success",
"data": {
"id": 11
},
"serverTime": 1752245215266,
"duration": 182
}6.5 Начисление выигрыша по фриспинам игроку
Url: https://<server-partner>/finish
Тип запроса: POST
Метод позволяет совершить зачисление бонусного выигрыша игроку. Запрос выполняет провайдер.
Параметры запроса:
| Название | Тип | Описание |
|---|---|---|
| amount | string | Сумма транзакции |
| currency | string | Валюта, в которой будет осуществляться игра (USD, EUR и т.д.) |
| partnerId | bigint | Уникальный идентификатор партнера |
| playerId | string | Уникальный идентификатор игрока в системе клиента |
| gameId | bigint | Уникальный идентификатор игры |
| roundId | bigint | Уникальный идентификатор раунда ставки |
| sessionId* | string | Уникальный идентификатор игровой сессии в системе клиента |
| transactionId | bigint | Уникальный идентификатор транзакции выигрыша провайдера |
| freespinId | string | Уникальный идентификатор фриспина |
| campaignExtId | string | Уникальный идентификатор кампании фриспинов в системе клиента |
| hash | string | sha256 от строки (“finish” + amount + currency + partnerId + playerId + gameId + roundId + transactionId + freespinId + campaignExtId + sessionId + apiKey) |
Необязательные поля: если они не передаются, то они не учитываются при расчете hash (“finish” + amount + currency + partnerId + playerId + gameId + roundId + transactionId + freespinId + campaignExtId + apiKey)
Параметры ответа:
| Название | Тип | Описание |
|---|---|---|
| balance | string | Актуальный баланс игрока |
| transactionId | string | Уникальный идентификатор транзакции выигрыша в системе клиента |
Пример запроса:
{
amount: '20.00',
currency: 'USD',
partnerId: 1,
playerId: '432',
gameId: 3,
roundId: 7665,
sessionId: '123',
transactionId: 36,
freespinId: '123',
campaignExtId: '1',
hash: 'd919a11d4cb1b0dc4cc0d5f880c6970fd160d434b3a779a66a9a7f6451d108fd'
}Пример ответа:
{
status: 'success'
data: {
balance: '10103.63',
transactionId: '1234567890'
}
}7. Доступные валюты
| id | code |
|---|---|
| 1 | USD |
| 2 | UAH |
| 3 | AZN |
| 4 | TMT |
| 5 | GEL |
| 6 | KGS |
| 7 | MDL |
| 8 | KZT |
| 9 | RUB |
| 10 | EUR |
| 11 | AMD |
| 12 | TJS |
| 13 | PRB |
| 14 | GBP |
| 15 | TRY |
| 16 | MNT |
| 17 | µBT |
| 18 | COP |
| 19 | mBT |
| 20 | XAF |
| 21 | XOF |
| 22 | BRL |
| 23 | CNY |
| 24 | IRR |
| 25 | CLP |
| 26 | PEN |
| 27 | ARS |
| 28 | VEF |
| 29 | MXN |
| 30 | UYU |
| 31 | HTG |
| 32 | PLN |
| 33 | CHF |
| 34 | BGN |
| 35 | CZK |
| 36 | DKK |
| 37 | HRK |
| 38 | HUF |
| 39 | SEK |
| 40 | NOK |
| 41 | RON |
| 42 | RSD |
| 43 | ALL |
| 44 | BAM |
| 45 | ISK |
| 46 | MKD |
| 47 | AUD |
| 48 | NZD |
| 49 | CAD |
| 50 | BOB |
| 51 | PYG |
| 52 | UZS |
| 53 | BDT |
| 54 | VND |
| 55 | KRW |
| 56 | LTC |
| 57 | DTC |
| 58 | INR |
| 59 | GMC |
| 60 | ILS |
| 61 | JPY |
| 62 | MYR |
| 63 | PHP |
| 64 | SGD |
| 65 | THB |
| 66 | TWD |
| 67 | NGN |
| 68 | ETB |
| 69 | EGP |
| 70 | CDF |
| 71 | ZAR |
| 72 | TZS |
| 73 | SDG |
| 74 | KES |
| 75 | DZD |
| 76 | UGX |
| 77 | MAD |
| 78 | GHS |
| 79 | MZN |
| 80 | AOA |
| 81 | AED |
| 82 | HKD |
| 83 | IDR |
| 84 | MMK |
| 85 | KWD |
| 86 | SAR |
| 87 | BYN |
| 88 | TND |
| 89 | OMR |
| 90 | JOD |
| 91 | BHD |
| 92 | ZMW |
| 93 | QAR |
| 94 | ZWL |
| 95 | DASH |
| 96 | XMR |
| 97 | IQD |
| 98 | ZEC |
| 99 | ETH |
| 100 | GAME |
| 101 | XEM |
| 102 | PKR |
| 103 | DMO |
| 104 | RUR |
| 105 | DOP |
| 106 | BTC |