ОБЩАЯ ИНФОРМАЦИЯ

Данный API предоставляет доступ к некоторой информации о картах Game-Keeper и позволяет проводить ряд операций. Этот API является ПО промежуточного слоя, не следует предоставлять к нему доступ конечному пользователю (владельцу карты), т.к. в API отсутствуют возможности аутентификации и авторизации.

Если запрос к API был обработан, API отвечает HTTP кодом 200 OK, и возвращает информацию в json следующего вида

{
  "data": null,
  "errors": []
}

data - запрашиваемые данные, зависят от запроса, 
errors - список ошибок, возникших при выполнении запроса. 
Успешность выполнения запроса определяется отсутствием ошибок.


ПОДДЕРЖИВАЕМЫЕ ТИПЫ ЗАПРОСОВ


Информация о карте

Запрос

GET 
/api2/cards
? [n=<номер карты>]

Ответ

Различные данные о карте.

Пример

{
"errors": [],
"data":
{
"card": 200,
"bonus": 24,
"bonusI": 0,
"points": 11585.5,
"moneyCash": 9903,
"moneyBCard": 1658.5,
"moneyCS": 0,
"tickets": 0,
"moneyAccum": 13498.5,
"cardPrice": 0,
"level": "Стандартный",
"state": 1,
"activation": "2018-02-15T20:13:52.0+03:00"
}
},

где
card - номер карты;
bonus - сумма бонусов;
bonusI- сумма неактивных бонусов;
points - сумма игровых очков;
moneyCash - сумма наличных денег;
moneyBCard - сумма, оплаченная банковской картой;
moneyCS - сумма, оплаченная безналичным платежом;
tickets - сумма тикетов;
moneyAccum - общая внесенная сумма;
cardPrice - стоимость карты;
level - уровень игровой карты;
state - ID статуса карты;
activation - время активации карты.

История операций

Запрос

GET 
/api2/cards/history
? [n=<номер карты>]

Ответ

Последние 100 операций по карте.

Пример

{
  "errors": [],
  "data": [
    {
      "date": "2018-05-04T14:37:20.160+03:00",
      "name": "Возврат пополнения баланса (ОчкиД_ПК)",
      "value": -11,
      "u1code": "",
      "u2code": "ОчкиД_ПК"
    },
    {
      "date": "2018-05-04T14:37:20.157+03:00",
      "name": "Возврат пополнения баланса",
      "value": -11,
      "u1code": "Visa",
      "u2code": ""
    },
    {
      "date": "2018-04-12T14:43:50.847+03:00",
      "name": "Покупка очков",
      "value": 12,
      "u1code": "руб.",
      "u2code": ""
    },
    {
      "date": "2018-04-12T14:43:50.843+03:00",
      "name": "Покупка очков (ОчкиДеньги)",
      "value": 12,
      "u1code": "",
      "u2code": "ОчкиДеньги"
    }
  ]
}

Пополнение счета

Запрос

POST
/api2/cards/deposit
? [n=<номер карты>]
& [amount=<сумма пополнения>]
& [currid=<идентификатор валюты>]

Пополнение производится только счета очков-денег.

Идентификатор валюты может принимать значения от 911 до 919, в зависимости от настроек справочника Валюты в приложении Редактор.

Ответ

Содержит сумму бонусов, начисленную за пополнение, баланс карты после пополнения и номер операции пополнения в Game-Keeper. Этот номер используется при отмене операции.

Пример

{
  "errors": [],
  "data": {
    "orderNo": 67508,
    "points": 17847,
    "bonus": 0
  }
}

Отмена пополнения счета

Запрос

POST
/api2/cards/opercancel
? [opid=<номер операции>]

Ответ

Содержит успешность выполнения отмены.

Пример

{
  "errors": [],
  "data": null
}

Информация о владельце карты

Запрос

GET
/api2/cards//owner
? [n=<номер карты>]

Ответ

Различные данные о владельце карты.

{
    "errors": [],
    "data": {
        "card": 208,
        "first_name": "Иван",
        "last_name": "Иванов",
        "middle_name": "Иванович",
        "birthday": "1999-09-19T00:00:00.0+03:00",
        "gender": 0,
        "phone": "+71234567890",
        "email": "az@b.c",
        "address": "address",
        "mailing_consent": true,
"personalized": true, "in_bonus_program": true
} }

Изменение информации о владельце карте

Запрос

POST
/api2/cards//owner
? [n=<номер карты>]

Данные о владельце в теле запроса в json.

{
    "first_name": "Иван",
    "last_name": "Иванов",
    "middle_name": "Иванович",
    "birthday": "1999-09-19T00:00:00.0+03:00",
    "gender": 0,
    "phone": "+71234567890",
    "email": "az@b.c",
    "address": "address",
    "mailing_consent": true,
"personalized": true, "in_bonus_program": true
}

Пол: 0-женский, 1-мужской.

Телефон следует передавать строкой в виде последовательности цифр без разделителей предваряемой знаком +, если с номером телефона планируется работа через приложения Гейм-Кипер (касса, редактор и т.п.). Если номер телефона будет использоваться только через web api, то формат строки может быть любой. Корректность и существование номера телефона или e-mail не проверяются.

Ответ

Содержит успешность выполнения запроса.

Пример

{
  "errors": [],
  "data": null
}

Информация о совладельцах карты

Запрос

GET
/api2/cards//coowners
? [n=<номер карты>]

Ответ

Различные данные о совладельцах карты.

{
    "errors": [],
    "data": [
        {
            "id": 1,
            "name": "Имя",
            "birthday": "2001-02-05T00:00:00.0+03:00",
            "gender": 1
        },
        {
            "id": 6,
            "name": "Имя",
            "birthday": "2009-12-05T00:00:00.0+03:00",
            "gender": 1
        },
        {
            "id": 7,
            "name": "Имя",
            "birthday": "2015-12-05T00:00:00.0+03:00",
            "gender": 0
        }
    ]
}

Изменение информации о совладельце карте

Запрос

POST
/api2/cards//coowner
? [n=<номер карты>]
& [id=<"id" совладельца при обновлении>]

Данные о совладельце в теле запроса в json.

{
    "name": "Имя",
    "birthday": "2004-12-05T00:00:00.0+03:00",
    "gender": 0
}

Пол: 0-женский, 1-мужской.

Ответ

Содержит успешность выполнения запроса.

Пример

{
  "errors": [],
  "data": null
}

Активация электронной карты с альтернативным кодом

апрос

POST
/api2/cards/activate
? [altcode=<альтернативный код карты (внешний ид)>]

Ответ

Содержит номер активированной карты.

Пример

{
  "errors": [],
  "data": {
    "cardNo": 1000000913
  }
}


Поиск карты по альтернативному коду

Запрос

GET
/api2/cards/search
? [altcode=<альтернативный код карты (внешний ид)>]

Ответ

Если карта найдена, то номер карты, если не найдена, то null.

Пример

{
  "errors": [],
  "data": {
    "cardNo": 1000000913
  }
}

или

{
  "errors": [],
  "data": null
}


Участник бонусной программы (4.12+ ver)


При обновлении с предыдущих версий необходимо учесть, что настройка chargeBonus4NonpersonalizedCards устарела, вместо нее следует использовать chargeBonus4AnyCards.
Если ранее использовалось ограничение по признаку "Персонализирована", то следует установить признак "Участник бонусной программы" всем персонализированным картам.


Для работы функционала, необходимо:

Сделать настройку, управляющую начислением бонусов для карт, не участвующих в бонусной программе. В ини сервера

[Settings]

chargeBonus4AnyCards

=1 - начисление для любых карт (по умолчанию)

=0 - только с установленным признаком "Участник бонусной программы"

Данная настройка заменила более не используемую настройку chargeBonus4NonpersonalizedCards. Бонус за персонализацию начисляется в любом случае.


ОБРАБОТКА ОШИБОК

Ошибка (элемент массива errors) имеет свойства: 
text - текст ошибки, 
app - код приложения, сгенерировавшего ошибку; при технических ошибках (ошибках подключения) указывает работоспособность какого компонента системы (связи между какими компонентами системы) следует проверять, восстанавливать.

Возможные значения: 
ApiSrv - сервер, обрабатывающий вызовы api 
ExtSrv - промежуточный сервер 
PosSrv - кассовый сервер 
Unknown

Примеры

{
    "errors": [
        {
            "app": "ApiSrv",
            "text": "gender: The field gender must be between 0 and 1."
        },
        {
            "app": "ApiSrv",
            "text": "first_name: The field first_name must be a string with a maximum length of 42."
        }
    ],
    "data": null
}

{
    "errors": [
        {
            "app": "ExtSrv",
            "text": "Socket Error # 10061\r\nConnection refused."
        }
    ],
    "data": null
}

{
    "errors": [
        {
            "app": "PosSrv",
            "text": "Карта не зарегистрирована."
        }
    ],
    "data": null
}