Список доступных API
Содержание
- API для работы с HTML5 играми
-
Другие API игрового сервера
- Работа с API
- Получение списка игр
- Структура списка доступных игр
- Регистрация пользователя
- Управление сессиями пользователей
- Получение баланса пользователя
- Операции с балансом пользователя
- Создание зала
- Получение списка терминалов зала
- Изменение конфигурации зала
- Операции с сообщениями зала
- Получение баланса зала
- Операции с джекпотом зала
- Получение баланса агента
- Получение списка залов агента
- Изменение баланса зала агентом
- Получение списка операций агента
- Получение списка игровых логов
- Редактирование игрока
- Защита информации
- Примеры реализации и интеграции
- API игровых нотификаций
API для работы с HTML5 играми
Отображать наши игры на своем сайте просто. Для этого нужно иметь как минимум 1 активный терминал ( логин и пароль ).
Шаги интеграции описаны ниже
ШАГ1 - Получить список доступных Html5 игр
Для получения списка активных игр воспользуйтесь командой
HTTPS GET apiserver.solutions/remote_games_web
АПИ возвращает json массив следующей структуры:
<actualdate>2017-06-30 06:15:17</actualdate> <gamescount>120</gamescount> <gamelist>МАССИВ_ИГР</gamelist>
Где gamescount - количество доступных игр , gamelist - содержит массив игр, разделенный на категории.
Каждая категория ( family ) содержит айди (id), имя категории (name), и подмассив игр (games)
Каждая игра в подмассиве games содержит айди игры (id), имя игры (name), веб ссылку на иконку (icon), а также размеры в пикселях (width и height )
ШАГ2 - Получить сессию пользователя
Чтобы запустить игру на своем сайте, кроме ее айди, нужно также иметь активную сессию пользователя (терминала)
Для получения сессии воспользуйтесь АПИ сессий, командой "set"
Пример данных для отправки :
<request> <version>0.6</version> <user_id>125</user_id> <user_password>31003sdfds</user_password> <operation>set</operation> <show_packet>1</show_packet> <response_url></response_url> </request>
При успешном ответе вы получите массив данных терминала, в котором будут параметры активной сессии:
sessionid - айди сессии, key1, key2 - ключи
Полный пример работы с апи сессий смотрите в соответствующем разделе
ШАГ3- Отобразить игру на своем сайте
После предыдущих двух шагов у вас есть активная сессия терминала и список игр.
Для отображения игры по ее номеру воспользуйтесь командой
HTTPS GET apiserver.solutions/showgame?gameid=GAMEID&sid=SID&key1=KEY1&key2=KEY2
где GAMEID - айди желаемой игры, SID, KEY1, KEY2 - параметры сессии
В ответ вы получите окно с игрой оригинального размера. Вы можете поместить его в попап окно на своем сайте или во встроенный фрейм, уменьшив пропорционально размеры при необходимости. Дополнительно также можно передать параметр языка LANG, доступные значения английский (en) и русский (ru)
Другие API игрового сервера
Работа с API
Работа с API осуществляется по протоколу https, отправкой XML-запроса методом POST на URL требуемого API.
Пошаговая инструкция:
- Вам необходимо сформировать подпись XML-запроса. Есть три варианта подписи:
- тип 1 md5(hall_secret + XML_запрос (строка) + hall_secret), где hall_secret - секретное слово зала (API работы с залами)
- тип 2 base64_encode(agent_password), где agent_password – пароль агента (API работы с агентами)
- тип 3 md5(user_password + XML_запрос (строка) + user_password), где user_password - пароль терминала (API работы с логами игр,апи сессий)
- XML-запрос данных должен быть вида $xml = '<request>XML данные</request>';
- Затем нужно упаковать XML-запрос функцией base64_encode и отправить его на указанный URL методом POST: поле reg_xml => base64_encode(XML_запрос), поле reg_sign => подпись
- В ответ, в случае успешного запроса, вы получите упакованный функцией base64_encode XML-пакет и подпись пакета. Описание полей ответа в каждом разделе описания API. Общий формат ответа приведен ниже:
<request> <version>0.6</version> <status>success</status> <time>метка времени (unix_timestamp)</time> ... </request>
- В случае какой-либо ошибки, ответ будет содержать 4 поля — version, status, hall_id (если не задан — 0), code (будет содержать код ошибки). Общий формат ответа приведен ниже:
<request> <version>0.6</version> <status>failure</status> <time>метка времени (unix_timestamp)</time> ... </request>
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml, reg_sign) не найдено в POST запросе |
required_fields_are_empty | Не все обязательные параметры присутствуют в XML пакете |
invalid_xml_format | Неверно сформирован XML-документ запроса |
wrong_signature | Неверная подпись пакета |
wrong_api_version | Версия API указана неверно |
Получение списка игр
Доступно три различных списка игр:
- https://apiserver.solutions/remote_games_list_new – возвращает минимум 16 новых игр;
- https://apiserver.solutions/remote_games_list_pop – возвращает минимум 16 самых популярных игр;
- https://apiserver.solutions/remote_games_list – возвращает все доступные игры.
Списки игр можно получить в трёх различных форматах: XML, JSON и JavaScript. По умолчанию данные выдаются в формате XML. Для указания формата выдачи необходимо передать в строке запроса параметр format со значениями xml, json или javascript.
Пример выдачи для запроса https://apiserver.solutions/remote_games_list_new?format=json (формат JSON):
{"family":{"id":99,"name":"new","games":[{"id":220,"name":"wickedwinnings3","icon":"https://apiserver.solutions/img/tote/games/cf_all/220.jpg","isaristocrat":1,"gametype":11,"url":"https://apiserver.solutions/tote_opbetting3?gameid=220&x=859163386","width":1024,"height":768},{"id":219,"name":"TimberWolf","icon":"https://apiserver.solutions/img/tote/games/cf_all/219.jpg","isaristocrat":1,"gametype":11,"url":"https://apiserver.solutions/tote_opbetting3?gameid=219&x=1162627997","width":1024,"height":768}]}}
Пример выдачи для запроса https://apiserver.solutions/remote_games_list_new?format=javascript (формат JavaScript):
var casinoData = {"family":{"id":99,"name":"new","games":[{"id":220,"name":"wickedwinnings3","icon":"https://apiserver.solutions/img/tote/games/cf_all/220.jpg","isaristocrat":1,"gametype":11,"url":"https://apiserver.solutions/tote_opbetting3?gameid=220&x=859163386","width":1024,"height":768},{"id":219,"name":"TimberWolf","icon":"https://apiserver.solutions/img/tote/games/cf_all/219.jpg","isaristocrat":1,"gametype":11,"url":"https://apiserver.solutions/tote_opbetting3?gameid=219&x=1162627997","width":1024,"height":768}]}};
Пример выдачи для запроса https://apiserver.solutions/remote_games_list (формат XML):
<?xml version = "1.0" encoding = "utf-8" ?> <root> <data> <actualdate>2014-12-12 06:15:17</actualdate> <gamescount>84</gamescount> <config>https://apiserver.solutions/flashconfig.php</config> </data> <gamelist> <family id="6" name="coolfire 2"> <game> <id>211</id> <name>dragonemperor</name> <icon>https://apiserver.solutions/img/tote/games/cf_all/211.jpg</icon> <width>1024</width> <height>768</height> <url>https://apiserver.solutions/tote_opbetting3?gameid=211&x=353750879</url> </game> <game> <id>210</id> <name>diamonddestiny</name> <icon>https://apiserver.solutions/img/tote/games/cf_all/210.jpg</icon> <width>1024</width> <height>768</height> <url>https://apiserver.solutions/tote_opbetting3?gameid=210&x=804659655</url> </game> ... </family> ... </gamelist> </root>
Список новых игр и список популярных игр имеют похожую структуру, но у каждого блока <game> (описание игры) есть дополнительное поле isaristocrat (см. подробнее в разделе Структура списка игр):
<game> <id>206</id> <name>50lions</name> <icon>https://apiserver.solutions/img/tote/games/cf_all/206.jpg</icon> <width>1024</width> <height>768</height> <url>https://apiserver.solutions/tote_opbetting3?gameid=206&x=2045331503</url> </game>
Данные по спискам игр кэшируются на сервере. Кэш обновляется каждые 60 минут.
Структура списка доступных игр
Структура ответа API на получение списка игр содержит следующие блоки и параметры:
data – общие данные:
- actualdate – дата и время генерирования данного списка на стороне сервера
- gamescount – количество игр в данном наборе
- config – путь к конфигурации для флеш загрузчика
family – описание категории игр, к которой принадлежит данный слот:
- id – ID категории
- name – название категори
- games – список игр
game – набор параметров для каждой конкретной игры:
- id – ID игры
- name – название игры
- icon – ссылка на иконку игры
- url – ссылка на игру
- width – ширина игрового окна
- height – высота игрового окна
- isaristocrat – если данный параметр равен 1, то игра относится к семейству aristocrat (опциональный параметр).
Список новых игр содержит лишь одну категорию name="new", у которой id=99. Список самых популярных игр также содержит лишь одну категорию name="popular" с id=77. Список всех игр содержит все доступные категории игр, кроме id=99 и id=77, поскольку данные категории являются собирательными категориями (новые и популярные игры).
Регистрация пользователя
Регистрация пользователя осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_reg
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID зала |
name | string | Нет | Имя пользователя. Не менее 6 символов. Если поле не задано, то имя пользователя будет сгенерировано автоматически. |
phone | bigint | Нет | Номер телефона. Только цифры, без пробелов и знака "+". |
string | Нет | email пользователя. Если не задан, то генерируется автоматически. | |
ex_id | integer | Нет | ID пользователя в базе данных клиента |
operation_id | bigint | Нет | Идентификатор операции в системе пользователя. Идентификатор операции используется для повторной отправки пакета. Для идентификаторов допускается тип данных только biging. В случае, если тип не bigint - операция не логируется и повторная отправка операции невозможна! |
password | string | Нет | Пароль пользователя. Не менее 6 знаков. Если не задан, то генерируется автоматически. Пароль может содержать только латинские буквы и цифры. В случае наличия в пароле других символов, они будут обрезаны системой. |
birthDay, birthMonth, birthYear |
integer | Нет | Дата рождения пользователя. Параметры должны задавать корректную дату. Если дата некорректна, то система выдаст ошибку операции. Пример: birthDay=01, birthMonth=05, birthYear=1980 |
address | string | Нет | Адрес пользователя |
country | string | Нет | Страна пользователя |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_userslist методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
<?php //Формируем цифровую подпись $signature = md5($secret_word.$XML_REQUEST.$secret_word); //Кодируем XML-запрос с помощью функции base64_encode $base64_result = base64_encode($XML_REQUEST); //Создаём массив с переменными, которые будем отправлять на удалённый сервер $post_request = array( 'reg_xml' => $base64_result, 'reg_sign' => $signature ); //Инициализация cURL $ch = curl_init(); //Задаем параметры для cURL curl_setopt($ch, CURLOPT_URL, 'https://apiserver.solutions/api_reg'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); //Передаём в cURL переменные для отправки curl_setopt($ch, CURLOPT_POSTFIELDS, $post_request); //Включаем SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //Выполняем передачу запроса $result = curl_exec($ch); ?>
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
hall_id | integer | ID зала пользователя |
login | string | Логин пользователя |
password | string | Пароль пользователя |
string | e-mail пользователя | |
phone | bigint | Телефон пользователя |
time | bigint | Метка времени в формате UNIX timestamp |
birthDay, birthMonth, birthYear |
integer | Дата рождения пользователя |
operation_id | bigint | Идентификатор операции в системе пользователя |
country | string | Страна пользователя |
address | string | Адрес пользователя |
operation_exist | smallint | Флаг, который показывает, была ли операция проведена в первый раз или же это отправка повторного пакета. Возможные значения 0 или 1. |
is_first_deposit | smallint | Первый депозит в системе или нет. Возможные значения 0 или 1. |
is_first_enter | smallint | Первый вход. Возможные значения 0 или 1. |
В случае ошибки, ответ сервера будет содержать 4 поля: version, status, hall_id + поле code (будет содержать код ошибки). Поле code может иметь следующие значения:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml, req_sign) не найдено в POST запросе |
invalid_xml_sended | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная цифровая подпись запроса |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал не существует |
hall_id_format_invalid | Неверный формат поля hall_id |
wrong_email | Неверный формат email |
phone_format_invalid | Неверный формат поля phone |
user_phone_already_exist | Такой телефон уже зарегистрирован в системе |
wrong_password | Неверный пароль |
wrong_birthdate_params | Неверный формат даты рождения (параметры birthDate, birthMonth, birthYear) |
Пример данных исходящего XML-запроса:
<request> <version>0.6</version> <hall_id>125</hall_id> <phone>310903377415</phone> <birthDay>02</birthDay> <birthMonth>05</birthMonth> <birthYear>1980</birthYear> <address>some address</address> <password>sdgf55123</password> <show_packet>1</show_packet> <response_url></response_url> </request>
Пример данных ответа сервера:
<request> <version>0.6</version> <login>95745</login> <password>sdf55yhh</password> <email>mRXqMXcrfD@stargamecasino.com</email> <phone>3808053344000</phone> <birthdate></birthdate> <hall_id>25</hall_id> <operation_id></operation_id> <operation_exist>0</operation_exist> <status>success</status> <time>1390778516</time> <ex_id></ex_id> <is_first_deposit>1</is_first_deposit> <is_first_enter>0</is_first_enter> <is_passing>0</is_passing> </request>
Пример ответа в случае ошибки:
<request> <version>0.6</version> <status>failure</status> <code>user_phone_already_exist</code> <hall_id>125</hall_id> </request>
Удалённое управление сессиями пользователей
Удалённое управление сессиями пользователей осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/remotecab_session
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
user_id | integer | Да | ID пользователя |
user_password | string | Да | Пароль пользователя |
operation | string | Да | Выполняемая операция. get - получение сессии пользователя set - создание новой сессии check - проверка состояния сессии. Если сессия закрыта, то создается новая. close - закрытие всех сессий |
sessionid | bigint | Да | ID сессии (необходимо для операции get) |
key1 | integer | Да | Ключ сессии (необходимо для операции get) |
key2 | integer | Да | Ключ сессии (необходимо для операции get) |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(ПАРОЛЬ_ТЕРМИНАЛА + XML-запрос (строка) + ПАРОЛЬ_ТЕРМИНАЛА). В языке PHP для данной операции используется функция md5
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/remotecab_session методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
<?php //Формируем цифровую подпись $signature = md5($secret_word.$XML_REQUEST.$secret_word); //Кодируем XML-запрос с помощью функции base64_encode $base64_result = base64_encode($XML_REQUEST); //Создаём массив с переменными, которые будем отправлять на удалённый сервер $post_request = array( 'reg_xml' => $base64_result, 'reg_sign' => $signature ); //Инициализация cURL $ch = curl_init(); //Задаем параметры для cURL curl_setopt($ch, CURLOPT_URL, 'https://apiserver.solutions/remotecab_session'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); //Передаём в cURL переменные для отправки curl_setopt($ch, CURLOPT_POSTFIELDS, $post_request); //Включаем SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //Выполняем передачу запроса $result = curl_exec($ch); ?>
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
time | bigint | Метка времени в формате UNIX timestamp |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
uid | integer | ID аккаунта |
password | string | Пароль пользователя |
sessionid | bigint | ID сессии (для всех операций, кроме close) |
key1 | integer | Ключ сессии (для всех операций, кроме close) |
key2 | integer | Ключ сессии (для всех операций, кроме close) |
name | string | Имя пользователя (только для операций get и create) |
roomnumber | integer | ID зала (только для операций get и create) |
string | e-mail пользователя (только для операций get и create) | |
phone | bigint | Телефон пользователя (только для операций get и create) |
birthdate | timestamp | Дата рождения пользователя (только для операций get и create) |
balance | bigint | Баланс пользователя (только для операций get и create) |
currency | string | Валюта зала (только для операций get и create) |
unique_id | string | Уникальный ID пользователя (только для операций get и create) |
is_first_deposit | smallint | Первый депозит в системе или нет (только для операций get и create). Возможные значения 0 или 1. |
is_first_enter | smallint | Первый вход (только для операций get и create). Возможные значения 0 или 1. |
is_passing | smallint | Может ли пользователь пополнять счет через удаленный сайт (только для операций get и create) |
is_home | boolean | Имеет зал статус homeedition или нет. Устаревший параметр для обратной совместимости с устаревшими версиями API (только для операций get и create) |
В случае ошибки, ответ сервера будет содержать 4 поля: version, status, hall_id + поле code (будет содержать код ошибки). Поле code может иметь следующие значения:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml, req_sign) не найдено в POST запросе |
wrong_api_version | Версия API указана неверно |
invalid_xml_sended | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
no_path_to_send_packet | Не указан путь для ответа сервера |
wrong_session_data | Неверно указаны данные сессии |
wrong_user_data | Неверный пароль или id пользователя |
Получение баланса пользователя
Получение баланса пользователя осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_get_balance
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
user_id | integer | Да | ID пользователя |
hall_id | integer | Да | ID игрового зала |
user_ex | smallint | Нет | Если равно 1, то получить данные о пользователе, используя ex_id (внешный ID пользователя в базе данных клиента). По умолчанию значение равно 0. |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_userslist методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
<?php //Формируем цифровую подпись $signature = md5($secret_word.$XML_REQUEST.$secret_word); //Кодируем XML-запрос с помощью функции base64_encode $base64_result = base64_encode($XML_REQUEST); //Создаём массив с переменными, которые будем отправлять на удалённый сервер $post_request = array( 'reg_xml' => $base64_result, 'reg_sign' => $signature ); //Инициализация cURL $ch = curl_init(); //Задаем параметры для cURL curl_setopt($ch, CURLOPT_URL, 'https://apiserver.solutions/api_get_balance'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); //Передаём в cURL переменные для отправки curl_setopt($ch, CURLOPT_POSTFIELDS, $post_request); //Включаем SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //Выполняем передачу запроса $result = curl_exec($ch); ?>
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки (только в случае возникновения ошибки) |
hall_id | integer | ID зала пользователя |
time | bigint | Метка времени в формате unix timestamp |
user_id | integer | ID пользователя |
balance | bigint | Баланс пользователя в кредитах |
В случае возникновения ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_userid | Неверный user_id |
user_not_isset | Пользователь не существует |
wrong_signature | Секретное слово зала указано неверно |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал не существует |
Пример данных исходящего XML-запроса:
<request> <version>0.6</version> <hall_id>125</hall_id> <user_id>345</user_id> <show_packet>1</show_packet> <response_url></response_url> </request>
Пример данных ответа сервера:
<request> <version>0.6</version> <status>success</status> <user_id>10025</user_id> <hall_id>129</hall_id> <balance>2924316</balance> <time>1390780004</time> </request>
Пример ответа в случае ошибки:
<request> <version>0.6</version> <status>failure</status> <code>hall_not_exist</code> <hall_id>125</hall_id> </request>
Операции с балансом пользователя
Операции с балансом пользователя осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_operation_balance
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
user_id | integer | Да | ID пользователя |
hall_id | integer | Да | ID игрового зала |
user_ex | smallint | Нет | Если равно 1, то получить данные о пользователе, используя ex_id (внешный ID пользователя в базе данных клиента). По умолчанию значение равно 0. |
operation | string | Да | Тип проводимой операции: increase - пополнение счёта, decrease - списание средств со счёта, decrease_all - полное обнуление счёта. ВАЖНО: следует помнить, что при обнулении все средства со счёта пользователя списываются. Однако, скрипт проверяет наличие поля sum. В поле sum необходимо отправлять значение 0. |
operation_id | bigint | Нет | Идентификатор операции в системе пользователя. Идентификатор операции используется для повторной отправки пакета. Для идентификаторов допускается тип данных только biging. В случае, если тип не bigint - операция не логируется и повторная отправка операции невозможна! |
sum | integer | Да | Сумма пополнения и сумма списания при соответствующих операциях. Сумма не может быть больше баланса зала при пополнении и больше баланса пользователя при списании. |
user_password | string | Нет | Пароль пользователя |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_userslist методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
<?php //Формируем цифровую подпись $signature = md5($secret_word.$XML_REQUEST.$secret_word); //Кодируем XML-запрос с помощью функции base64_encode $base64_result = base64_encode($XML_REQUEST); //Создаём массив с переменными, которые будем отправлять на удалённый сервер $post_request = array( 'reg_xml' => $base64_result, 'reg_sign' => $signature ); //Инициализация cURL $ch = curl_init(); //Задаем параметры для cURL curl_setopt($ch, CURLOPT_URL, 'https://apiserver.solutions/api_operation_balance'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); //Передаём в cURL переменные для отправки curl_setopt($ch, CURLOPT_POSTFIELDS, $post_request); //Включаем SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //Выполняем передачу запроса $result = curl_exec($ch); ?>
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
hall_id | integer | ID зала пользователя |
user_id | integer | ID пользователя |
balance | integer | Баланс пользователя в кредитах |
time | bigint | Метка времени в формате UNIX timestamp |
В случае ошибки, ответ сервера будет содержать 4 поля: version, status, hall_id + поле code (будет содержать код ошибки). Поле code может иметь следующие значения:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml, req_sign) не найдено в POST запросе |
invalid_xml_sended | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная цифровая подпись запроса |
wrong_api_version | Версия API указана неверно |
wrong_userid | Неверный user_id |
user_not_isset | Пользователь не существует |
hall_not_exist | Зал не существует |
operator_not_isset | Оператора в зале не существует |
wrong_password | Неверный пароль |
too_low_balance_for_increase | Указано слишком маленькое значение изменения баланса |
too_low_hall_balance | Баланса зала недостаточно для проведения операции |
previous_payments_not_finished | Предыдущие платёжные операции пользователя не завершены |
wrong_incoming_data | Внутренняя ошибка при изменении баланса |
operation_not_set | Поле operation не задано |
Пример данных исходящего XML-запроса:
<request> <version>0.6</version> <hall_id>125</hall_id> <user_id>345</user_id> <operation>increase</operation> <sum>500</sum> <show_packet>1</show_packet> <response_url></response_url> </request>
Пример данных ответа сервера:
<request> <version>0.6</version> <status>success</status> <user_id>10125</user_id> <hall_id>125</hall_id> <operation>increase</operation> <operation_id></operation_id> <old_balance>5000</old_balance> <new_balance>5500</new_balance> <operation_exist>0</operation_exist> <time>1390783078</time> </request>
Пример ответа в случае ошибки:
<request> <version>0.6</version> <status>failure</status> <code>operation_not_set</code> <hall_id>125</hall_id> </request>
Создание зала
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_create_hall
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_name | string | Да | Имя зала |
hall_secret | string | Да | Секретное слово зала. Только латинские буквы и цифры. Максимальная длина 32 символа. |
agent_id | integer | Да | Идентификатор агента |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде Base64 строки по следующей схеме: BASE64(ПАРОЛЬ_АГЕНТА). В языке PHP для данной операции используется функция base64_encode:
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
hall_id | integer | ID созданного зала |
currency | smallint | Присвоенный ISO код валюты |
В случае ошибки, ответ сервера будет содержать 4 поля: version, status, hall_id + поле code (будет содержать код ошибки). Поле code может иметь следующие значения:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml, req_sign) не найдено в POST запросе |
invalid_xml_sended | Неверно сформирован XML-запрос |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная цифровая подпись запроса |
wrong_api_version | Версия API указана неверно |
agent_not_exist | Агент не существует |
hall_name_already_exists | Зал с таким именем уже существует |
hall_data_empty | Не указано имя зала |
Пример данных исходящего XML-запроса:
<request> <version>0.6</version> <hall_name>MyNewHall</hall_name> <hall_secret>fgghhjjuku</hall_secret> <agent_id>12345678</agent_id> <response_url></response_url> </request>
Пример данных ответа сервера:
<request> <version>0.6</version> <status>success</status> <time>123456789</time> <hall_id>114</hall_id> <hall_secret>somecode</hall_secret> <currency>643</currency> </request>
Получение списка терминалов зала
Получение списка терминалов зала осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_get_userslist
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID игрового зала |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку по адресу https://apiserver.solutions/api_get_userslist методом POST. Строка помещается в параметр reg_xml.
<?php //Кодируем XML-запрос с помощью функции base64_encode $base64_result = base64_encode($XML_REQUEST); //Создаём массив с переменными, которые будем отправлять на удалённый сервер $post_request = array('reg_xml' => $base64_result); //Инициализация cURL $ch = curl_init(); //Задаем параметры для cURL curl_setopt($ch, CURLOPT_URL, 'https://apiserver.solutions/api_get_userslist'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); //Передаём в cURL переменные для отправки curl_setopt($ch, CURLOPT_POSTFIELDS, $post_request); //Включаем SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //Выполняем передачу запроса $result = curl_exec($ch); ?>
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
hall_id | integer | ID зала пользователя |
time | bigint | Метка времени в формате unix timestamp |
users_count | integer | Количество пользователей |
users | array | Массив с детализированной информацией о пользователях |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал не существует |
Пример данных исходящего XML-запроса:
<request> <version>0.6</version> <hall_id>125</hall_id> <show_packet>1</show_packet> <response_url></response_url> </request>
Пример данных ответа сервера:
<request> <version>0.6</version> <status>success</status> <hall_id>125</hall_id> <time>1390568302</time> <users_count>2</users_count> <users> <user><uid>30359</uid> <name>protest1</name> <password>fxa445</password> <balance>347</balance> </user> <user><uid>308905</uid> <name>protest2</name> <password>4454599</password> <balance>4004</balance> </user> </users> </request>
Пример ответа в случае ошибки:
<request> <version>0.6</version> <status>failure</status> <code>wrong_signature</code> <hall_id>250</hall_id> </request>
Изменение конфигурации зала
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_hall_settings
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID зала |
operation | string | Да | Операция: get - получение массива с текущими настройками, set - обновление настроек |
settings | array | Да | Массив настроек. Требуется только для операции set |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
Описание настроек параметра settings для операции set:
Имя параметра | Тип | Описание | Допустимые значения |
maxbetperline | Максимальная ставка на линию | integer | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30,40, 50, 100 |
maxwin | Максимальный выигрыш на барабанах | integer | Расчет по формуле: не менее чем maxbetperline * 500 |
maxriskwin | Максимальный выигрыш в риск игре | integer | Расчет по формуле: не менее чем maxbetperline * 500 |
creditlimit | Лимит кредитов | integer | От 100 до 1000000 |
matproc | Математический процент отдачи | integer | 85, 88, 93, 95, 98 |
maxriskround | Максимальное количество раундов в риск игре | integer | От 2 до 100 |
denominationenable | Включена ли деноминация | boolean | 1 или 0 |
denominationminval | Деноминация MIN | float | 0.01, 0.02, 0.04, 0.05, 0.1, 0.25, 0.5, 0.75,1.00 |
denominationmaxval | Деноминация MAX | float | 0.25, 1.00, 2.00, 4.00, 5.00, 10.00, 25.00, 50.00, 100.00 |
minamount | Минимальная сумма к выплате | integer | Не может быть менее или равным 0 |
pbonus | Процент от депозита в бонус | integer | От 0 до 15 |
mbonus | Минимальный депозит для бонуса | integer | Не может быть менее или равным 0 |
fixedcashback | Фиксированный кешбек бонус | integer | 1 (включен) or 0 (выключен) . Если включен кешбек или фиксированный кешбек, депозит бонус будет обнулен |
Следует заметить, что возможно изменение отдельных настроек, т.е. нет необходимости для изменения одной настройки перечислять все остальные. В таком случае, просто укажите необходимые настройки в пакете settings, не указывая остальные. Операция get возвращает все настройки.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
hall_id | integer | ID зала |
operation | string | Операция: get или set |
time | bigint | Метка времени в формате UNIX timestamp |
settings | array | Список текущих настроек зала. Только для операции get. |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал не существует |
too_low_maxwin | maxwin < winMinLimit или maxwin < 100 |
too_big_maxwin | maxwin > 1000000 |
too_low_maxriskwin | maxriskwin < winMinLimit или maxriskwin < 100 |
too_big_maxriskwin | maxriskwin > 1000000 |
wrong_creditlimit_count | creditlimit < 100 или creditlimit > 1000000 |
wrong_maxriskround_count | maxriskround < 2 или maxriskround > 100 |
wrong_denominationmin_count | Значение denominationminval не входит в диапазон (1, 2, 4, 5, 10, 25, 50, 75, 100) |
wrong_denominationmax_count | Значение denominationmaxval не входит в диапазон (25, 100, 200, 400, 500, 1000, 2500, 5000, 10000) |
denmin_biggest_than_denmax | denominationmaxval < denominationminval |
wrong_pbonus_count | pbonus < 0 или pbonus > 15 |
wrong_mbonus_count | mbonus < 0 |
nothing_to_update | Массив настроек пуст (нет значений для обновлений) |
Операции с сообщениями зала
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_hall_message
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID зала |
operation | string | Да | Операция: add - добавление сообщения, delete - удаление сообщение |
text | string | Да (операция add) | Текст сообщения. Максимальная длина 255 символов. Буквы латинского алфавита, кириллица и цифры. |
repeat | integer | Да (операция add) | Количество повторов сообщения. Допустимые значения: от 1 до 100. |
send_type | string | Да (операция add) | Тип вывода. Возможные значения: time_repeat - разовый с повторением, regular - регулярный (cм. пояснения после таблицы). |
schedule | array | Да (операция add) | Сериализованный base64 массив, форматы для операций различаются (cм. пояснения после таблицы). |
message_id | integer | Да (операция delete) | ID удаляемого сообщения. |
show_packet | smallint | Да (если не задан response_url) | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да (если не задан show_packet) | Адрес, на который будет отправлен результат XML-запроса. Отправка производится методом POST. |
Пример формирования массива schedule:
<?php $shedule = base64_encode(serialize(array('dateFrom' => '2011-12-11', 'hours' => '11', 'minutes' => '20', 'interval' => 30))); ?>
Пример формирования массива send_type для типа one_time_repeat:
<?php $send_type = array('dateFrom' => '2015-01-02', 'hours' => 12, 'minutes' => 20, 'interval' => 30); ?>
Допустимые значения для параметров данного массива: dateFrom - дата в формате ГГГГ-ММ-ДД, hours - от 0 до 24, minutes - от 0 до 59, interval - интервал отправки в минутах, допустимые значения: 10, 30, 60, 120, 180, 360, 1140, 2880.
Пример формирования массива send_type для типа regular:
<?php $send_type = array('dateFrom' => '2015-01-02', 'dateTo' => '2015-02-02', 'interval' => 60); ?>
Допустимые значения для параметров данного массива: dateFrom - дата начала в формате ГГГГ-ММ-ДД, dateTo - дата окончания в формате ГГГГ-ММ-ДД, interval - интервал отправки в минутах, допустимые значения: 10, 30, 60, 120, 180, 360, 1140, 2880.
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
time | bigint | Метка времени в формате UNIX timestamp |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
message_id | integer | ID добавленного или удалённого сообщения для операций add и delete соотвественно |
hall_id | integer | ID зала |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал не существует |
message_not_isset | Сообщение с заданным ID не существует |
message_fields_are_empty | Параметры для добавления сообщения отсутствуют или заданы не все |
text_too_big | Длина сообщения больше 255 символов |
unable_to_parse_schedule | Невозможно распарсить расписание отправки сообщений. Параметр пустой, не сериализован или не закодирован в base64. |
wrong_schedule_format | Неверный формат расписания отправки сообщений ( параметры dateFrom,dateTo, hours, minutes, interval) |
unknown_operation | Неверно задана операция |
Получение баланса зала
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_get_hall_balance
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID зала |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_hall_balance методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
hall_id | integer | ID зала пользователя |
balance | integer | Баланс зала |
time | bigint | Метка времени в формате UNIX timestamp |
Получение баланса агента
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_get_agent_balance
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
agent_id | integer | Да | ID агента |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде Base64 строки по следующей схеме: BASE64(ПАРОЛЬ_АГЕНТА). В языке PHP для данной операции используется функция base64_encode:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_agent_balance методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
agent_id | integer | ID агента |
balance | integer | Баланс агента в копейках |
time | bigint | Метка времени в формате UNIX timestamp |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
agent_not_exist | Агент с заданным ID и паролем не существует |
invalid_agent_id | Неверный формат ID агента или не задан параметр |
Операции с джекпотом зала
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_operation_jackpot
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID зала |
operation | string | Да | Тип операции: get_balance - запрос баланса (ВАЖНО: текущее значение указывается в сотых долях копейки), reset - обнуление джекпота, change - изменение значения джекпота, get_settings - получение массива настроек зала, set_settings - установка новых настроек, get_history - история джекпотов |
settings | array | Да | Массив настроек (только для операции set_settings) |
period_start | unix timestamp | Да | >Начала периода выборки. Формат ГГГГ-ММ-ДД ЧЧ:ММ:СС (временная зона UTC) . Только для операции get_history |
period_end | unix timestamp | Да | Конец периода выборки. Формат unix timestamp . Только для операции get_history |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_operation_jackpot методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
Описание настроек параметра settings для операции set_settings:
Имя параметра | Тип | Описание | Допустимые значения |
enable | Включен ли джекпот | smallint | 0 или 1 |
jackpotpercent | Процент с каждой ставки в джекпот | float | 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2 |
timer | Таймер выпадения джекпота | integer | От 0 до 86399. Время в секундах. Допустим, вы хотите задать время 10:30:15. Итоговое должно быть 10*60*60+30*60+15 |
tunejackpot | Применить основное значение к джекпоту | smallint | 0,1. Если параметр указан и равен 1, размер джекпота примет значение, равное параметру "основное значение " в момент запроса. Эту операцию нельзя будет отменить. Сумма, которая будет списана с зала, равна сумме разниц текущих значений джекпотов и их основных значений |
interval_enabled | Активировать время выпадения джекпота | smaillint | 0,1 |
interval_start | Начальное время | integer | От 0 до 1440. Задается в минутах. Например , если начальное время 10:30, укажите 10*60+30 |
interval_end | Конечное время | integer | От 0 до 1440. Задается в минутах. Например , если конечное время 12:30, укажите 12*60+30. Разница в интервале до и после должна быть больше 1 минуты |
bronze,silver,gold,diamond | 4 массива с настройками каждого уровня джекпота. | array | bronze - 1-й уровень (бронзовый джекпот), и так далее по порядку возрастания |
outtext | Текст сообщения, которое будет выводится на игровом терминале. | string | Допустимы только латинские символы, точка, запятая и восклицательный знак. |
Описание массива каждого уровня джекпота
Имя параметра | Тип | Описание | Допустимые значения |
enable | Включен ли этот уровень | smallint | 0 или 1 |
activate | Значение активации | integer | От 0 до 2500000. При достижении этого значения джекпот из пассивного состояния переходит в активное. В пассивном состоянии джекпот не может быть выигран. Когда джекпот в активном состоянии, у каждого игрока есть шанс выиграть джекпот при условии, что ставка игрока удовлетворяет условиям розыгрыша джекпота |
init | Основное значение | integer | От 0 до 2500000. Основное значение джекпота, по умолчанию 0. Если значение больше нуля, после выпадения каждого джекпота, значение следующего джекпота будет стартовать с этой величины. ВАЖНО: списывается с баланса зала |
max | Максимальное значение | integer | От 0 до 2500000. Если максимальное значение 0, оно игнорируется и джекпот выдается по таймеру. Если больше, чем значение активации, джекпот выдается по макс значению. Чем ближе накопление к нему, тем выше вероятность выпадения джекпота. |
minbet | Минимальная ставка | integer | От 0 до 2500 000 00 При игре на меньшие ставки игрок выиграть джекпот не может. ВАЖНО: указывается в центах |
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
hall_id | integer | ID зала |
operation | string | Код операции: get_balance, reset, change, get_settings или set_settings |
time | bigint | Метка времени в формате UNIX timestamp |
settings | array | Список текущих настроек джекпота. |
history | array | История выпадений джекпота за период |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал не существует |
wrong_settings_array | Неверный массив настроек (операция set_settings) |
wrong_jackpot_percent | Неверный процент джекпота (операция set_settings) |
wrong_activate_value | Неверное значение активации (операция set_settings) |
wrong_init_value | Неверное основное значение (операция set_settings) |
activation_LEVEL_value_not_set | Не установлено значение активации уровня LEVEL(bronze,silver,gold,diamond) при включении этого уровня (операция set_settings) |
init_value_should_not_be_more_than_half_of_activation_value | Основное значение джекпот больше половины значения активации (операция set_settings) |
next_level_jackpot_should_double_previous | Следующий уровень джекпота должен быть вдвое больше предыдущего. Ошибка также будет, если включать уровни не последовательно. Если вы хотите включить какой-то уровень, предыдущий должен быть тоже включен (операция set_settings) |
jackpot_interval_wrong | Неверный интервал выпадения джекпот (операция set_settings) |
timer_wrong | Неверное значение таймера джекпота(операция set_settings) |
nothing_to_update | Нет значений для обновления (операция set_settings) |
time_periods_are_empty | Ошибка только для операции get_history, если поля period_start или period_end не указаны |
invalid_date_format | Неверный формат даты в полях period_start, или period_end. |
time_period_more_that_thirty_days | Период выборки больше 30 дней. |
<request> <version>0.6</version> <settings> <enable>1</enable> <outtext>STAR JACKPOT</outtext> <timer>1800</timer> <jackpotpercent>2</jackpotpercent> <tunejackpot>1</tunejackpot> <interval_enabled>1</interval_enabled> <interval_start>100</interval_start> <interval_end>400</interval_end> <bronze> <enable>1</enable> <minbet>300</minbet> <init>30</init> <max>3000</max> <activate>300</activate> </bronze> <silver> <enable>1</enable> <minbet>300</minbet> <init>60</init> <max>3000</max> <activate>600</activate> </silver> <gold> <enable>1</enable> <minbet>300</minbet> <init>90</init> <max>3000</max> <activate>1200</activate> </gold> <diamond> <enable>1</enable> <minbet>900</minbet> <init>90</init> <max>9000</max> <activate>2400</activate> </diamond> </settings> <operation>set_settings</operation> <user_id>77777</user_id> <hall_id>77</hall_id> <show_packet>1</show_packet> </request>
Этот запрос соответствует таким настройкам в админ панели
Получение списка залов агента
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_get_hallslist
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
agent_id | integer | Да | ID агента |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде Base64 строки по следующей схеме: BASE64(ПАРОЛЬ_АГЕНТА). В языке PHP для данной операции используется функция base64_encode:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_hallslist методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
agent_id | integer | ID агента |
halls_count | integer | Количество залов |
halls | array | Массив залов |
time | bigint | Метка времени в формате UNIX timestamp |
Имеющиеся залы приходят в виде массива. Пример массива:
<?php 'hall' => ( 'id' => 1, 'name' => 'hall1', 'balance' => 10400, 'operator_name' => 'oper1' ); ?>
где где id - ID зала, name - имя зала, balance – баланс зала, operator_name – имя оператора.
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
agent_not_exist | Агент с заданным ID и паролем не существует |
invalid_agent_id | Неверный формат ID агента или не задан параметр |
Изменение баланса зала агентом
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_hall_operation_balance
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
agent_id | integer | Да | ID агента |
hall_id | integer | Да | ID зала |
operation | string | Да | Тип операции: increase - пополнить баланс, descrese - списать средства с баланса |
sum | integer | Да | Сумма |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде Base64 строки по следующей схеме: BASE64(ПАРОЛЬ_АГЕНТА). В языке PHP для данной операции используется функция base64_encode:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_hall_operation_balance методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
hall_id | integer | ID зала |
code | string | Код ошибки |
old_balance | integer | Старый баланс зала в копейках |
new_balance | integer | Новый баланс зала в копейках |
time | bigint | Метка времени в формате UNIX timestamp |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
agent_not_exist | Агент с заданным ID и паролем не существует |
agent_is_not_owner | Агент не является владельцем зала |
wrong_operation | Неверно задана операция |
hall_too_low_balance | Недостаточный баланс у зала (операция decrease) |
agent_too_low_balance | Недостаточный баланс у агента (операция increase) |
Получение списка операций агента
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_get_agent_story
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
agent_id | integer | Да | ID агента |
period_start | bigint | Да | Метка времени unix, начало периода запроса |
period_end | bigint | Да | Метка времени unix, окончание периода запроса |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Примечание: разница между началом и окончанием периода не может быть более трёх дней.
Также необходимо сформировать цифровую подпись в виде Base64 строки по следующей схеме: BASE64(ПАРОЛЬ_АГЕНТА). В языке PHP для данной операции используется функция base64_encode:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_get_agent_story методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
agent_id | integer | ID агента |
code | string | Код ошибки |
period_start | bigint | Метка времени unix, начало периода запроса |
period_end | bigint | Метка времени unix, окончание периода запроса |
operations_count | integer | Количество операций |
operations | array | Массив операций |
time | bigint | Метка времени в формате UNIX timestamp |
История операций приходит в виде массива. Пример массива:
<?php 'operation' => array('id' => 1, 'description' => 'hall 360, + 1000', 'date' => time(), 'balance_before' => 104000, 'sum' => 100000 'balance_after' => 40000, 'by' => 'someagent'); ?>
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
agent_not_exist | Агент с заданным ID и паролем не существует |
wrong_period_data | Неверно задан период запроса |
too_big_period | Задан слишком большой период |
Получение списка игровых логов
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/remotecab_game_history
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.4 или 0.5 |
user_id | integer | Да | ID пользователя |
user_password | string | Да | Пароль пользователя |
use_hash | integer | Да | Если этот параметр равен 1, то в поле user_password должен находится не пароль, а его md5 хеш. Если он равен 0, то используется plain пароль. |
operation | string | Да | Тип операции. List - получение списка логов за период. Log - получение деталей 1 лога |
log_id /game_id | bigint /int | Да | ИД игрового лога или ИД игры (одно из двух) для операции log . При указании game_id, последний лог по игре будет возврашен |
period_start | datetime | Да | Начала периода выборки. Формат ГГГГ-ММ-ДД ЧЧ:ММ:СС. Только для операции list |
period_end | datetime | Да | Окончание периода выборка. Формат ГГГГ-ММ-ДД ЧЧ:ММ:СС. Только для операции list |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Примечание: разница между началом и окончанием периода не может быть более трёх дней.
Также необходимо сформировать цифровую подпись в виде md5(user_password + XML_запрос (строка) + user_password), где user_password - пароль пользователя
Известные ограничения: Максимальный интервал выборки логов — 24 часа. Максимальная дальность выборки — 7 дней. На нашем сервере не хранятся логи старше 7 дней. Мы рекомендуем выбирать логи каждый час, и записывать их в Вашу базу данных — это снизит нагрузку на сервер, и увеличит скорость работы Вашей системы. При просмотре информации об игровом логе, отдельной строкой мы отдаем уже сформированный html-код (упакованный base64), так как разбор информации о логе происходит на нашей стороне. Картинки из лога имеют ссылки на наш сервер.
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
1. Для операции list – получение списка логов:Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
user_id | integer | ID пользователя |
user_hash | integer | Определяет, как создавалась подпись пакета — md5(user_password), или user_password. См. параметр use_hash выше. |
code | string | Код ошибки |
hall_id | integer | Номер зала пользователя |
logs_count | integer | Количество записей |
operation | bigint | Выбранная операция |
timestamp | bigint | Метка времени в формате UNIX timestamp |
md5 | string | Подпись пакета |
Содержимое массива игрового лога
Поле | Тип | Описание |
dataid | bigint | ИД игрового лога |
gameid | integer | Индекс игры |
date | datetime | Дата и время лога, формат — ГГГГ-ММ-ДД ЧЧ:ММ:СС |
bet | bigint | Поле BET (ставка) |
win | bigint | Поле WIN (выгрыш) |
lines | bigint | Поле LINES |
balance | bigint | Баланс игрока |
gname | string | Имя игры |
Для операции log – получение информации об отдельном логе
Поле | Тип | Описание |
status | string | Статус операции — success, если все успешно; failure – при ошибке. |
code | string | Код ошибки. Поля не существует при статусе success |
user_id | integer | ИД пользователя |
use_hash | integer | Определяет, как создавалась подпись пакета — md5(user_password), или user_password. См. параметр use_hash выше. |
hallid | integer | Номер зала пользователя |
timestamp | bigint | Метка времени в формате unix timestamp |
operation | string | Выбранная операция |
log_id | bigint | Id игрового лога |
log_date | datetime | Дата и время лога, формат — ГГГГ-ММ-ДД ЧЧ:ММ:СС |
log_bet | bigint | Поле BET (ставка) |
log_win | bigint | Поле WIN (выгрыш) |
log_betline | bigint | Поле BetLine |
log_lines | bigint | Поле LINES |
log_balance | bigint | Баланс игрока |
log_gname | string | stringИмя игры |
log_html | string | HTML с расшифровкой лога, и картинками игры. Строка упакована base64. |
md5 | string | Подпись пакета. Формируется как md5Encrypt (user_password + timestamp + user_id + user_password) |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_sended | Неверно сформированный документ XML |
wrong_api_version | Неверная версия апи (поддержив. 0.5 или 0.4) |
required_fields_are_empty | Заполнены не все поля в XML пакете |
no_path_to_send_packet | Параметр show_packet равен 0, и не указан response_url |
wrong_userid | ИД пользователя указан неверно |
user_not_isset | Пользователь с указанным ИД не существует |
wrong_user_pass | Пароль пользователя указан неверно. |
time_periods_are_empty | Ошибка выдается при установке пункта operation = list, и при пустом поле period_start, или period_end |
invalid_date_format | Неверный формат даты в полях period_start, или period_end. |
time_period_more_that_one_day | Период выборки более чем 24 часа. (60*60*24) |
game_id_is_wrong, log_id_is_wrong | Ошибка выдается при установке пункта operation = log, и при неправильном формате поля log_id или game_id |
either_game_id_or_log_id_must_be_supplied | Ошибка выдается при установке пункта operation = log, при пустом поле log_id и game_id (хотя бы 1 параметр должен быть) |
invalid_operation_name | Неверно заполнено поле operation. Допустимые значения — list и log. |
log_is_not_isset | Лог с указанным ИД, и принадлежащий пользователю с указанным ИД, не найден. |
Пример запроса и ответа для получения деталей по логу:
Запрос
<request> <version>0.4</version> <operation>log</operation> <user_id>12044</user_id> <user_password>1DF12b3</user_password> <use_hash>0</use_hash> <log_id>5951155076</log_id> <response_url></response_url> <show_packet>1</show_packet> </request>
Ответ
<request> <version>0.4</version> <status>success</status> <timestamp>1470312323</timestamp> <user_id>12044</user_id> <use_hash>0</use_hash> <hall_id>255</hall_id> <operation>log</operation> <log_id>5951155076</log_id> <log_date>2016-07-31 12:26:02</log_date> <log_bet>500</log_bet> <log_win>1000</log_win> <log_betline>0</log_betline> <log_lines>0</log_lines> <log_balance>3327000</log_balance> <log_gname>Deuces Wild</log_gname> <log_html>PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CgoJICAgICAgICAgICAgICAgIDx0cj48dGQgYmdjb2xvcj0iNDQwMDAwIj4KCgkgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMSIgIGJvcmRlcj0iMCI+CgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgYmdjb2xvcj0iIzhGMDAwMCI+CgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiA+R2FtZSBpbmZvcm1hdGlvbjogRGV1Y2VzIFdpbGQgPGJyIC8+CgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICgyMDE2LTA3LTMxIDEyOjI2OjAyKTwvdGQ+CgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPjx0cj48dHI+PHRkPkJFVDo8L3RkPjx0ZD41LjAwPC90ZD48L3RyPjx0cj48dGQ+V0lOOjwvdGQ+PHRkPjEwLjAwPC90ZD48L3RyPjx0cj48dGQ+QkFMQU5DRTo8L3RkPjx0ZD4zMzI3MC4wMDwvdGQ+PC90cj48L3RyPjwvdGFibGU+PC90ZD48L3RyPjx0cj48dGQgYWxpZ249ImNlbnRlciI+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj48dHI+PHRkPjxpbWcgc3JjPSJodHRwczovL2FwaXNlcnZlci5zb2x1dGlvbnMvaW1nL2JhcmFiYW4vY2FyZHMvYmlnLzEwLmpwZyIgd2lkdGg9IjkwIiBoaWdodD0iMTAwIi8+PC90ZD48dGQ+PGltZyBzcmM9Imh0dHBzOi8vYXBpc2VydmVyLnNvbHV0aW9ucy9pbWcvYmFyYWJhbi9jYXJkcy9iaWcvOS5qcGciIHdpZHRoPSI5MCIgaGlnaHQ9IjEwMCIvPjwvdGQ+PHRkPjxpbWcgc3JjPSJodHRwczovL2FwaXNlcnZlci5zb2x1dGlvbnMvaW1nL2JhcmFiYW4vY2FyZHMvYmlnLzguanBnIiB3aWR0aD0iOTAiIGhpZ2h0PSIxMDAiLz48L3RkPjx0ZD48aW1nIHNyYz0iaHR0cHM6Ly9hcGlzZXJ2ZXIuc29sdXRpb25zL2ltZy9iYXJhYmFuL2NhcmRzL2JpZy8yNS5qcGciIHdpZHRoPSI5MCIgaGlnaHQ9IjEwMCIvPjwvdGQ+PHRkPjxpbWcgc3JjPSJodHRwczovL2FwaXNlcnZlci5zb2x1dGlvbnMvaW1nL2JhcmFiYW4vY2FyZHMvYmlnLzM5LmpwZyIgd2lkdGg9IjkwIiBoaWdodD0iMTAwIi8+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPjx0cj48dGQ+PGltZyBzcmM9Imh0dHBzOi8vYXBpc2VydmVyLnNvbHV0aW9ucy9pbWcvYmFyYWJhbi9jYXJkcy9iaWcvMTAuanBnIiB3aWR0aD0iOTAiIGhpZ2h0PSIxMDAiLz48L3RkPjx0ZD48aW1nIHNyYz0iaHR0cHM6Ly9hcGlzZXJ2ZXIuc29sdXRpb25zL2ltZy9iYXJhYmFuL2NhcmRzL2JpZy85LmpwZyIgd2lkdGg9IjkwIiBoaWdodD0iMTAwIi8+PC90ZD48dGQ+PGltZyBzcmM9Imh0dHBzOi8vYXBpc2VydmVyLnNvbHV0aW9ucy9pbWcvYmFyYWJhbi9jYXJkcy9iaWcvOC5qcGciIHdpZHRoPSI5MCIgaGlnaHQ9IjEwMCIvPjwvdGQ+PHRkPjxpbWcgc3JjPSJodHRwczovL2FwaXNlcnZlci5zb2x1dGlvbnMvaW1nL2JhcmFiYW4vY2FyZHMvYmlnLzI1LmpwZyIgd2lkdGg9IjkwIiBoaWdodD0iMTAwIi8+PC90ZD48dGQ+PGltZyBzcmM9Imh0dHBzOi8vYXBpc2VydmVyLnNvbHV0aW9ucy9pbWcvYmFyYWJhbi9jYXJkcy9iaWcvMzkuanBnIiB3aWR0aD0iOTAiIGhpZ2h0PSIxMDAiLz48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48L3RhYmxlPjwvdGQ+PC90cj48L3RhYmxlPgoKCQk8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlIj48dHI+CgoJCTx0ZCBzdHlsZT0id2lkdGg6NTAlOyB0ZXh0LWFsaWduOmxlZnQ7Ij48aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iJmx0OyZsdDsiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0naHR0cHM6Ly9hcGlzZXJ2ZXIuc29sdXRpb25zL3JlbW90ZWNhYj9hY3Q9bG9nJmxvZ19pZD01OTUxMTUwMjM0JyIgLz48L3RkPgoKCQk8dGQgc3R5bGU9IndpZHRoOjUwJTsgdGV4dC1hbGlnbjpyaWdodDsiPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSImZ3Q7Jmd0OyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uPSdodHRwczovL2FwaXNlcnZlci5zb2x1dGlvbnMvcmVtb3RlY2FiP2FjdD1sb2cmbG9nX2lkPTU5NTExNDk5NzAnIiAvPjwvdGQ+CgoJCTwvdHI+PC90YWJsZT4=</log_html> <md5>9986a56907868571b3f15ec5579f0748</md5> </request>
Редактирование терминала
Операция осуществляется отправкой XML-запроса методом POST на адрес https://apiserver.solutions/api_change_user
Необходимые поля в XML-запросе:
Поле | Тип | Обязательный | Описание |
version | float | Да | Версия API. Значение должно быть 0.6 |
hall_id | integer | Да | ID зала |
user_id | integer | Да | ID игрока |
data | array | Да | Массив значений, которые нужно изменить |
show_packet | smallint | Да, если не задан response_url | Если значение параметра равно 1, результат XML-запроса будет отдан запрашивающему скрипту. В противном случае результат будет отдан по адресу, переданному в параметре response_url |
response_url | string | Да, если параметр show_packet равен 0 | Адрес, на который будет отправлен результат XML-запроса, если параметр show_packet равен 0. Отправка производится методом POST. |
Также необходимо сформировать цифровую подпись в виде MD5-хэша операции по следующей схеме: MD5(СЕКРЕТНОЕ_СЛОВО_ЗАЛА + XML-запрос (строка) + СЕКРЕТНОЕ_СЛОВО_ЗАЛА). В языке PHP для данной операции используется функция md5:
После формирования структуры XML-запроса его необходимо закодировать с помощью метода base64 (функция base64_encode в языке РНР) и отправить полученную строку вместе с цифровой подписью по адресу https://apiserver.solutions/api_change_user методом POST. Строка закодированного запроса помещается в параметр reg_xml, цифровая подпись помещается в параметр reg_sign.
Доступные значения массива data: (минимум 1 значение ).
Поле | Тип | Описание |
string | новый email пользователя | |
phone | integer | новый телефон пользователя |
active | smallint | новый статус пользователя. 1 - активен, 2 - заблокирован |
password | string | пароль пользователя |
birthDay, birthMonth, birthYear |
integer | Новая дата рождения пользователя |
Требования к формату полей такие же, как при регистрации терминала
В случае успешного запроса в ответ придёт XML-пакет, закодированный в формат base64 и подпись пакета. В пакете содержатся следующие поля:
Поле | Тип | Описание |
version | float | Версия API |
status | string | Статус операции. В случае успеха - success; при ошибке - failure. |
code | string | Код ошибки |
user_id | integer | ID игрока |
hall_id | integer | ID зала |
data | array | массив новых значений профиля игрока |
time | bigint | Метка времени в формате UNIX timestamp |
В случае ошибки поле code в пакете будет содержать код ошибки:
Код ошибки | Описание |
request_not_exists | Необходимых полей (reg_xml) не найдено в POST запросе |
invalid_xml_format | Неверно сформирован XML-документ запроса |
required_fields_are_empty | Заполнены не все обязательные поля в XML-запросе |
wrong_signature | Неверная подпись XML-запроса |
wrong_api_version | Версия API указана неверно |
hall_not_exist | Зал с заданным ID не существует |
wrong_userid | Неверный формат ID игрока или не задан параметр |
user_not_isset | Пользователь с такими параметрами не существует |
data_array_not_set | Массив изменений data не задан |
nothing_to_change | Не задано хотя бы 1 значение для изменения в массиве data |
wrong_email | Неверный формат email |
wrong_birthdate_params | Неверный формат даты рождения |
phone_format_invalid | Неверный формат телефона |
user_phone_already_exist | Телефон уже зарегистрирован в системе |
user_email_already_exist | Email уже зарегистрирован в системе |
password_is_wrong | Неверный формат пароля |
status_is_wrong | Неверный формат статуса игрока |
Защита информации
Содержание
Защита информации является важной задачей современного бизнеса. Любая утечка Ваших важных данных может стать серьёзной проблемой.
Компания Stargame заботится о безопасности своих клиентов и предлагает решение, не имеющее аналогов. Наша система безопасности проста в установке и надежна. Она зашифрует и сделает невидимой всю ценную информацию на Ваших компьютерах.
Описание API игрового сервера
Невозможность обнаружения скрытой информации.
Шифрование Ваших данных выполняется программой TrueCrypt, которая более чем за 10 лет зарекомендовала себя, как надежное средство шифрования и сокрытия ценной информации на компьютерах.
Зашифрованная информация выглядит как беспорядочный набор байт и её содержимое не может быть никак идентифицировано.
Если Ваше оборудование будет утеряно или похищено, обнаружить скрытую информацию или программное обеспечение на нём, а также получить доступ к Вашим логинам и паролям, невозможно никакими современными средствами анализа в криптографических лабораториях.
Это подтверждено независимым аудитом системы TrueCrypt в 2014-м году, который заключил, что программа не имеет проблем с безопасностью или намеренных ослаблений шифрования для доступа разработчиков или спецслужб к зашифрованной информации.
Завладеть паролем невозможно.
Все пароли от Ваших зашифрованных данных создаются и надежно хранятся на нашем сервере. Пароли не хранятся на Ваших компьютерах, никому из посторонних людей они не известны.
Централизованное управление.
На одном из компьютеров устанавливается операторская программа для управления всеми Вашими компьютерами, объединенными в одну сеть. С операторского компьютера можно запустить программное обеспечение или завершить его работу на любом из компьютеров или на всех компьютерах сразу.
Наша система снабжена тревожной кнопкой.
Мы понимаем, что никто не отменял недоброжелателей. Наша система оснащена тревожной кнопкой, которая позволяет в одно мгновение заблокировать все логины и пароли, завершить работу программного обеспечения, сделать невидимой важную информацию и заблокировать все ключи шифрования Ваших компьютеров на нашем сервере.
После нажатия на тревожную кнопку получить доступ к Вашей информации и повторно запустить программное обеспечение на Ваших компьютерах будет невозможно. Ваши ключи шифрования останутся блокированными на нашем сервере, расшифровать хранящуюся на компьютерах информацию и получить к ней доступ в этом случае невозможно.
Чтобы восстановить доступ к зашифрованной информации, просто свяжитесь с нами и мы восстановим его. Ваши настройки никуда не исчезнут, а программное обеспечение снова будет работать.
Простота установки.
Наша система защиты устанавливается в течение нескольких минут. Мы можем сообщить все необходимые инструкции для установки. Если у Вас возникнут проблемы, свяжитесь с нами - наши специалисты подключатся к Вам удаленно и сделают всё за вас.
Варианты интеграции
Примеры реализации
Введение
Интеграция игр в Вашу систему происходит по следующей схеме. При регистрации игрока на Вашем сайте необходимо также зарегистрировать его в нашей системе с помощью соответствующих методов API. При авторизации игрока в Вашей системе необходимо создать ему сессию на игровом сервере. Делается это с помощью удалённого управление сессиями пользователей. Полученные данные сессии необходимо передать в игровой клиент.
Для ознакомительного просмотра игр возможен демонстрационный режим, который не требует авторизации пользователя.
Демонстрационный режим
Чтобы дать игроку ознакомиться с различными вариантами игр, их можно запустить в демострационном режиме. Для этого в качестве параметров сессии нужно передать следующие значения: SID = 777, KEY1 = 777, KEY2 = 777.
При игре в демонстрационном режиме выигрыши не сохраняются, пользователь играет на демонстрационные кредиты, которые даются автоматически при каждом запуске игры в данном режиме.
Реализация витрины игр
Для реализации витрины игр необходимо получить список игр с игрового сервера. Сделать это можно разными способами. В нашем примере, написанном на языке PHP, мы рассмотрим вариант запроса списка всех игр в формате JSON.
Пример:
<?php //Получаем с удалённого игрового сервера список $games_json = file_get_contents("https://apiserver.solutions/remote_games_list?format=json"); //Преобразуем полученный JSON в стандартный массив языка РНР $games = json_decode($games_json, true); ?>
Сгенерируем витрину игр, которая позволит игроку выбрать то, во что он хочет поиграть.
<?php //Обходим категории игр в полученном массиве foreach ($games["gamelist"] as $family) { //Для удобства корректируем переменную $family = $family["family"]; //Обходим список игр внутри категории foreach($family["games"] as $game) { //Генерируем HTML-код элемента для отображения данной игры $result .= "<div class="game" familyid="".$family["id"]."" gameid="".$game["id"]."" gamename="".$game["name"]."" gameurl="".$game["url"]."" isaristocrat="".$game["isaristocrat"]."" style="background-image: url(".$game["icon"].");"></div>"; } } //Выводим результат echo $result; ?>
Для отображения витрины игр создадим шаблон HTML-страницы, которую мы будем использовать. Для удобства нам потребуются также библиотеки jQuery и SWFObject.
<!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script> <!-- В этом месте мы разместим JavaScript код, с помощью которого будем обрабатывать действия игрока на странице --> <script type="text/javascript"> </script> <!-- Здесь разместим CSS стили страницы --> <style type="text/css" media="screen"> </style> </head> <body> <div id="main"> <!-- В этот блок будет выводиться витрина игр --> </div> <div id="overlay"></div> <div id="game_container"> <div id="game_flash"></div> </div> </body> </html>
Для корректного отображения элементов страницы нам потребуется вот такой набор CSS-стилей.
body, html { margin: 0; padding: 0; background: #000000; } a, img { border: 0; } a:active, a:focus, img, div { outline: 0; } #main { position: absolute; width: 100%; height: 100%; text-align: center; z-index: 1; } .game { position: relative; display: inline-block; margin: 5px; width: 218px; height: 64px; background: #000000 0 0 no-repeat; cursor: pointer; } #overlay { position: fixed; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.85); z-index: 1000; display: none; } #game_container { position: absolute; width: 800px; height: 600px; left: 50%; margin-left: -400px; top: 50%; margin-top: -300px; z-index: 1001; display: none; }
Вывод игр на страницу
На данный момент поддерживаются 2 способа вывода игр –
- c использованием технологии postMessage (HTML5)
- с использованием быстрой интеграции на основе JavaScript (рекомендуется)
- c использованием Flash-загрузчика
Вариант с использованием HTML5
Закрытие popup-окна с игрой через кнопку Cashout происходит через postMessage при получении сообщения ― Close от нашего сервера. Пример реализации ниже (с использованием jQuery plugin Facebox в качестве попап окна. Если вы используете обычное popup-окно, измените $.facebox.close(); на window.close(); или на любой другой обработчик в зависимости от библиотеки):
<script type="text/javascript"> window.addEventListener("DOMContentLoaded", function() { window.addEventListener("message", function(msg){ if(msg.data && msg.data.name == "Close" ) { $.facebox.close(); } }) }, false); </script>
Пример запуска игры по id:
<script type="text/javascript"> function doStartGame(gameid, login, pass ) { var commandline = 'https://apiserver.solutions/tote_opbetting3?gameid=' + gameid + '& ulogin='+ login + '&upass=' +pass+'&x=' + Math.random() + "jsoncallback=?"; if (login=='none') window.location.href = "/login"; var html = '<iframesrc="' + commandline + '" width="450" height="340" align="left">Ваш браузер неподдерживает плавающие фреймы! </iframe>'; $.facebox(html); return false; } </script>
Для выделенного красным см. примечание в конце.
Вывод списка игр c учетом авторизации:
<div class="games"> <?php $i = 1; foreach($games as $game): ?> <div class="images-overview <?php echo ($i % 4 == 0 ? 'last' : ''); ?>"> <span><?php echo $game['name']; ?></span> <img src="<?php echo $game['icon']; ?>" alt=" <?php echo $game['id']; ?>" title="<?php echo $game['id']; ?>"> <a href="#" title="<?php echo $game['name']; ?>" onclick="return doStartGame( <?php echo $game['gid']; ?>, <?php echo $login; ?>,<?php echo $pass; ?>;"> <span class="text-link">играть</span></a> <div class="details"> <p><?php echo $game['name']; ?></p> </div> </div> <?php $i++; endforeach; ?> </div>
где $login – логин пользователя в системе , $pass - md5 от пароля пользователя в системе
Если пользователь не залогинен, вы должны добавить обработчик и перенаправить на страницу логина в вашей системе.
В примере запуска игры по id, если нет логина, $login='none', в функцию вызова флеш игры ( пункт 5.1) добавляем перенаправление на страницу логина вашего сайта (выделено красным в примере):
<script type="text/javascript"> function doStartGame(gameid, login, pass){ var commandline = 'https://apiserver.solutions/tote_opbetting3?gameid=' + gameid + '& ulogin=' + login + '&upass=' +pass+'&x=' + Math.random() + " jsoncallback=?"; if (login=='none') window.location.href = "/login"; var html = '<iframe src="' + commandline + '" width="800" height="600" align="left"> Ваш браузер не поддерживает плавающие фреймы!</iframe>'; $.facebox(html); return false; } </script>
Быстрая интеграция (рекомендуется)
Быстрая интеграция позволяет разместить игры на Вашем сайте без необходимости тратить время на реализацию API. От Вас требуется лишь добавить несколько строк программного кода на Вашу страницу.
Для запуска игры на своем сайте Вам необходима регистрация в нашей системе как агента, иметь активный зал и пользователей, прикрепленных к залу. Для регистрации в нашей системе свяжитесь с нашим менеджером. Информацию по связи Вы можете найти в разделе "Контакты".
Для быстрой интеграции игры на странице необходимо разместить специальный код. В структуре страницы данный код может размещаться в любом месте, но желательно поместить его внутри тега <head></head>. Нижеследующий пример кода отображает все возможные параметры кода, которые доступны для использования. В качестве примера взяты следующие тестовые данные: игрок с логином 1334, номер игрового зала 1890, секретное слово зала secret, игра с id 219.
<script type="text/javascript" charset="utf-8"> var starconfig = { login: 1334, hash: "1a250ab682fd877c2117c87addf312e4", gameid: 219, width: 1024, height: 788, balanceChange: "changeMyBalance", closeWindow: "closeMyWindow", logo: 'My Company', logoword: 'CompanyName', betsoft : 0, hideGameControls: 1 }; </script> <script type="text/javascript" src="http://stargame.solutions/embed/embed.js" charset="utf-8"></script>
Параметры, которые необходимо передать в коде:
Название параметра | Обязательный | Описание |
login | Да | Логин (id игрового терминала) |
hash | Да | md5-хэш от конкатенации строк (номер зала + секретное слово + id пользователя) |
gameid | Да | id игры |
width | Нет | Ширина игрового окна |
height | Нет | Высота игрового окна |
balanceChange | Нет | Имя javascript-функции, которая вызывается игрой на Вашей странице при изменении баланса игрока |
closeWindow | Нет | Имя javascript-функции, которая вызывается игрой на Вашей странице при закрытии вкладки в браузере |
logo | Нет | Текст копирайта в правом нижнем углу игрового окна (отображается при загрузке игры). Максимум 20 символов, допустимы пробелы и цифры |
logoword | Нет | Текст копирайта при загрузке игры. Ограничение: только латинские символы, максимум 9 символов, без пробелов. |
betsoft | Нет | Если параметр установлен в 1, будет показан логотип Betsoft на старте игры. |
hideGameControls | Нет | Если параметр установлен в 1, будут спрятаны кнопки управления в игре |
Оптимальный размер игрового окна 1024x788 для игр типа aricstocrats и 800x600 для всех остальных игр. При задании размеров окна, отличающихся от оптимальных, следует сохранять оригинальное соотношение высоты и ширины. Размеры окна можно узнать используя список игр API. Ширина и высота игрового окна также могут быть заданы в процентах.
Вариант с использованием Flash-загрузчика
Для реализации на своем сайте, используйте прямую ссылку https://apiserver.solutions/public/tote/GameLoader.swf.
Пример js скрипта для запуска игры:
<script type="text/javascript"> function doStartGameAll(gameid, login, pass) { if(login == 'none') window.location.href = "/login"; var commandline = ""; $.ajax({ url: " /frame?gameid=" + gameid, type: "GET", success: function(results){ commandline = results; }, complete: function(){ $.facebox(commandline); }, error: function(xhr,err){ } }); } </script>
Пример выше открывает facebox окно со страницей, содержащей Flash-загрузчик. Этой странице вы должны передать 4 параметра - sid, key1, key2, config.
Параметры сессии пользователя для демо сайтов: sid – 777, key1 – 777, key2 – 777, config - https://apiserver.solutions/flashconfig.php
Пример страницы для Flash-загрузчика:
<?php <script type="text/javascript"> function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1){ return window[movieName]; } else { return document[movieName]; } } function callFlashMethod() { document.getElementById('flashapp').externalClose(); } function closePopup(){ callFlashMethod(); $.facebox.close(); return false; } </script> <div> <object id="_MainApp" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="<? echo $width;?>" height="<? echo $height;?>" wmode="direct" allowscriptaccess="always"> <param name="movie" value="https://apiserver.solutions/public/tote/GameLoader.swf" /> <param name="allowfullscreen" value="true" /> <param name="wmode" value="direct" /> <param name="allowscriptaccess" value="always" /> <param name="flashvars" value="SID=<? echo $sid;?>&KEY1= <? echo $key1;?>&KEY2=<? echo $key2;?>&gameid=<? echo $gid;?>& config=<? echo $config;?>" /> <!-- [if !IE]> --> <object type="application/x-shockwave-flash" id="flashapp" wmode="direct" allowscriptaccess="always" allowfullscreen="true" data="https://apiserver.solutions/public/tote/GameLoader.swf" width="<? echo $width;?>" height= "<? echo $height;?>" flashvars="SID=<? echo $sid;?>&KEY1=<? echo $key1;?>&KEY2=<? echo $key2;?> &gameid=<? echo $gid;?>&config=<? echo $config;?>" > <param name="wmode" value="direct" /> <param name="allowscriptaccess" value="always" /> <param name="allowfullscreen" value="true" /> <param name="flashvars" value="SID=<? echo $sid;?>&KEY1= <? echo $key1;?>&KEY2=<? echo $key2;?>&gameid=<? echo $gid;?>& config=<? echo $config;?>" /> <!-- <![endif] --> <div> <h3>_MainApp</h3> </div> <!-- [if !IE]> --> </object> <!-- <![endif] --> </object> </div> ?>
JavaScript функция closePopup() нужна для закрытия игрового окна Flash-приложением со стороны сайта. Если она отсутствует, кнопка закрытия игры не будет отображаться . closePopup дополнительно вызывает функцию callFlashMethod(), которая в свою очередь вызывает обработчик Flash-игры externalClose();.
Обработчик externalClose() нужен для корректного сохранения баланса на сайте в процессе игры (в случае ,если игрок закрыл игровое окно в процессе игры ). Переменная $gamename содержит название загрузчика, переменные $width и $height ширину и высоту окна для показа игры. В случае с обычными играми размер окна равен 800х600px, если игра относится к типу аристократы — 1024x768px
Примечания
Примечание 1:* Для изменения баланса в режиме реального времени, добавьте в реализацию js функцию gameBalanceChange(amount). Также к событию выхода из Flash-игры добавьте обращение к методу externalClose() Flash-приложения. Flash-игра будет передавать обновл`нный баланс в функцию gameBalanceChange при каждом его изменении. По выходу из флеш игры, функция externalClose() гарантирует целостность данных (на случай, если барабаны еще не остановились во Flash-приложении, а пользователь вышел из игры).
Пример функции gameBalanceChange:
<script type="text/javascript"> functiongameBalanceChange(amount) { var am = amount; $('#balance').html(am); $.ajax({ type: "POST", url: "/ru-RU/usercab?changebalance=1", data: {amount: am}, success: function(data) { } }); } </script>