Здесь представлен список доступных секций и методов API игры Paper Scroll.
Любые вопросы о работе API вы можете задать в нашем сообществе для разработчиков ВКонтакте или специальной беседе.
Для отправки запросов вам необходимо создать магазин внутри приложения и получить к нему ключ доступа по ссылке vk.com/app7420483#create_merchant
Информацию о готовых SDK можно найти по ссылкам:
Node.JS: github.com/KotRikD/paper-scroll-sdk-node
Python: github.com/KotRikD/paper-scroll-sdk-py
PHP: github.com/nikitos42050/paper-scroll-sdk-php
Приложение поддерживает быстрые ссылки, открывающие окно перевода вашему магазину.
Ссылка состоит из нескольких параметров: vk.com/app7420483#m{merchant_id}_{amount}_{payload}_{is_locked}
merchant_id: Идентификатор вашего магазина
amount: Предлагаемая сумма перевода в тыс. долях рулонов
payload: Полезная нагрузка в переводе
is_locked: Флаг, запрещающий редактирование предложенной суммы
Пример такой ссылки: vk.com/app7420483#m1_1000000_50_0
Или самый короткий вариант: vk.com/app7420483#m1
С помощью метода webhooks.create
вы можете настроить отправку уведомлений о событиях в игре на собственный сервер. Данные отправляются методом POST
в формате application/json
.
На данный момент поддерживаются события: transfer_new
.
Пример отправляемого события:
{
"event": "transfer_new",
"object": {
"transfer_id": 37356,
"external_id": 37357,
"owner_id": -1,
"peer_id": 100772411,
"is_initiator": false,
"payload": 100,
"type": "transfer",
"object_type": "balance",
"object_type_id": 0,
"message": "",
"amount": 1000,
"create_date": 1590134400
},
"secret": "yQ7Z1LDDG83Q8r8Ym9Yu2aXzBc51T06Q"
}
Событие считается успешно отправленным, если ответ сервера содержит HTTP код 200 OK
.
Данные запросов и ответов передаются в формате JSON в кодировке UTF-8.
Базовый адрес для отправки запросов: https://paper-scroll.ru/api/{method}
К каждому отправляемому запросу необходимо добавлять заголовок Authorization
с типом Basic
и base64-закодированной строкой merchant_id:access_token
(не пропустите двоеточие между двумя строками).
Например: Authorization: Basic MjozNTJlYTIyMTZlZDEzYmZhMDlhNTk0ZQ==
С использованием одного ключа доступа можно отправить не больше 3 запросов в секунду.
Также для каждого IP адреса имеется лимит на 10 запросов в секунду.
Ошибки API всегда возвращаются с HTTP кодом 400 Bad Request и имеют общий формат:
{
"error": {
"error_code": 1,
"error_msg": "Internal error",
"error_text": "Внутренняя ошибка сервиса, повторите запрос позже"
}
}
Основной список ошибок, возвращаемых для всех методов:
#1 - Internal error (Внутренняя ошибка сервиса)
#2 - Authorize error (Неверно передан ключ доступа)
#3 - Access error (Ошибка доступа к секции/методу)
#4 - Flood limit (Превышен лимит на частоту обращений)
#5 - Unknown method (Не определена секция/метод API)
#6 - Invalid params
(Неверно переданы параметры к запросу.
Возвращается, если для метода не опредлены собственные типы ошибок.)
Также в ходе выполнения запроса могут произойти специальные ошибки, уникальные для каждого метода.
Возвращает информацию о магазинах по их идентификаторам
ID магазинов, не больше 100 элементов.
По умолчанию — идентификатор текущего магазина.
Список запрошенных магазинов
Редактирует информацию о текущем магазине
Новое название магазина
ID сообщества ВКонтакте, к которому будет привязан магазин
Ссылка на новое изображение магазина.
Должно быть загружено на сервер ВКонтакте и иметь адрес формата https://**.userapi.com/******.jpg?size...
Результат выполнения запроса
true
Возвращает информацию о пользователях по их идентификаторам
ID пользователей, не больше 100 элементов.
Если профиль пользователя ещё не был создан в приложении, то объекта с его данными в ответе не будет.
Список запрошенных профилей пользователей
Возвращает информацию о балансах пользователей по их идентификаторам
ID пользователей, не больше 250 элементов
Список запрошенных балансов пользователей.
Если профиль пользователя ещё не был создан в приложении, то объекта с его данными в ответе не будет.
Запускает выполнение нового перевода
ID получателя перевода
Тип переводимых предметов
При object_type = disinfectants или items содержит ID предмета
При object_type = balance всегда имеет значение 0
Комментарий к переводу
Переводимая сумма в тыс. долях при object_type = balance
В остальных случаях - количество переводимых предметов
Объект созданного перевода
Возвращает список переводов по их идентификаторам
ID переводов, не больше 100 элементов.
Если перевод не пренадлежит текущему пользователю или ещё не создан, то объекта с его данными в ответе не будет.
Список запрошенных переводов
Возвращает список последних переводов
Смещение относительно первого найденного перевода
0
Количество возвращаемых переводов, не больше 250 элементов
100
Список запрошенных переводов
Возвращает информацию об имеющихся средствах защиты в инвентаре
Список средств защиты
Возвращает информацию об имеющихся предметах в инвентаре
Список предметов
Удялает текущий используемый сервер
Результат выполнения запроса
true
Возвращает информацию о последних 20 ошибках при отправке событий
Результат выполнения запроса
ID магазина
1
ID владельца магазина
595626484
ID сообщества ВКонтакте, к которому привязан магазин
194441652
Название магазина
Мой магазин
Изображение магазина
https://sun1-85.userapi.com/impg/HPw6qemyal_zaoxYkAtpGpjY13SZGJwMJ_JHnw/MhJs9KUPE6c.jpg
Баланс магазина в тыс. долях рулонов
250000
Дата создания магазина
1590134400
ID пользователя
595626484
Имя пользователя
Pi
Фамилия пользователя
Emerollo
URL квадратной фотографии пользователя размером 50x50 или 100x100 пикселей
https://**.userapi.com/******.jpg?size...
URL квадратной фотографии пользователя размером 200x200 или 400x400 пикселей
https://**.userapi.com/******.jpg?size...
Баланс пользователя в тыс. долях рулонов
100000
Сумма улучшений в тыс. долях рулонов
1000
Сумма бонусов в тыс. долях
250
ID пользователя
595626484
Баланс пользователя в тыс. долях рулонов
100000
ID перевода
37356
ID перевода для получателя
37357
ID инициатора перевода
595626484
ID получателя перевода
100772411
Является ли текущий пользователь инициатором
true
Полезная нагрузка при переводе от пользователя магазину
0
Тип перевода
Тип переводимых предметов
При object_type = disinfectants или items содержит ID предмета
При object_type = balance всегда имеет значение 0
0
Комментарий к переводу
0
Переводимая сумма в тыс. долях при object_type = balance
В остальных случаях - количество переводимых предметов
1000
Дата отправки перевода
1590134400
ID типа средства защиты
1
Название средства защиты
Маска
Тип защиты (infection
или steal
)
infection
Стоимость предмета в тыс. долях рулонов
1000000
Время действия средства защиты в секундах
14400
Количество снижаемых процентов для вероятности возникновения события
30
Текущее количество средств защиты в инвентаре
2
ID типа предмета
1
Название предмета
Тест на вирус
Описание предмета
Позволяет точно узнать свой статус заболевания
Стоимость предмета в тыс. долях рулонов
5000000
Текущее количество предметов в инвентаре
3
ID сервера
1
ID магазина, которым используется сервер
1
Типы отправляемых событий на сервер
Секретный ключ, отправляемый вместе с запросами
yQ7Z1LDDG83Q8r8Ym9Yu2aXzBc51T06Q
Дата создания сервера
1590134400
Код ошибки
1
Название типа ошибки
Example error
Подробное описание проблемы
Error message example