Все запросы должны отправляться на адрес https://api.keksik.io/{метод}
Все запросы должны передаваться через метод POST в виде JSON массива. В заголовке Content-type должно передаваться application/json.
Текущая версия API 1. Версия API будет повышаться при изменении полей в старых методах. При добавлении новых полей, а также при добавлении новых методов, версия API НЕ будет повышаться.
Внимание! У API есть ограничения. Суточный лимит запросов - 3000. Не чаще одного запроса в 5 секунд.
Ниже приведен PHP класс для работы с API. Версия PHP не ниже 7.0.
class Keksik { private $group; private $token; private $v = 1; function __construct($group, $token) { $this -> group = $group; $this -> token = $token; } public function request($method, $params = []) { if (!isset($params['group'])) $params['group'] = $this -> group; if (!isset($params['token'])) $params['token'] = $this -> token; if (!isset($params['v'])) $params['v'] = $this -> v; $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => 'https://api.keksik.io/' . $method, CURLOPT_HTTPHEADER => ['Content-type: application/json'], CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($params) ]); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); } }
Сторонним разработчиком @londonist была реализована библиотека для работы с нашим API для C# ASP.NET. Выражаем благодарность разработчику!
Сторонним разработчиком @frinyacode была реализована библиотека для работы с нашим API для Python. Выражаем благодарность разработчику!
У данного метода есть лимиты. Лимит составляет 100 запросов в сутки. Для регулярной проверки новых донатов используйте метод donates/get-last.
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
leninteger | Количество донатов в списке. Максимум 100. По умолчанию 20. |
offsetinteger | Смещение по выборе донатов |
start_dateinteger | Временная метка по UNIX (в миллисекундах). Задает минимальную дату и время выбираемых донатов. |
end_dateinteger | Временная метка по UNIX (в миллисекундах). Задает максимальную дату и время выбираемых донатов. |
sortstring | Метод сортировки. По умолчанию date. Возможные значения: date - сортировка по дате; amount - сортировка по сумме. |
reverseboolean | Направление сортировки. По умолчанию false. Возможные значения: false - сортировка по убыванию; true - сортировка по возрастанию. |
Параметр | Описание | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
successboolean, обязательно | Успешность обработки запроса сервером. | ||||||||||||||||||||||||||||||||
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. | ||||||||||||||||||||||||||||||||
msgstring | Текстовое сообщение с результатом выполнения запроса. | ||||||||||||||||||||||||||||||||
listarray of objects | Список донатов. | ||||||||||||||||||||||||||||||||
|
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('donates/get', [ 'sort' => 'amount', 'offset' => 30, 'len' => 10 ]); print_r($result);
У данного метода есть лимиты. Допускается 1 запрос в минуту. Без передачи параметра last допускается максимум 100 запросов в сутки.
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
lastinteger | ID последнего полученного доната. Если данный параметр передан, вернется список с более новыми донатами. Если не передавать данный параметр, то вернется список последних 20 донатов. Таким образом вы можете при первом запросе не передав этот параметр получить актуальный список последних донатов, выбрать из списка самый последний донат и в следующем запросе передать ID этого доната, чтобы проверить наличие новых донатов. Если вернется пустой массив, то продолжайте передавать тот же ID. Как только в массиве вернется какое-то количество новых донатов, обновите ID последнего доната и в новом запросе передайте обновленный ID. Обратите внимание, что можно делать только 1 запрос в минуту. Для моментального оповещения о новых донатах используйте наш Callback API. |
Параметр | Описание | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
successboolean, обязательно | Успешность обработки запроса сервером. | ||||||||||||||||||||||||||||||||
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. | ||||||||||||||||||||||||||||||||
msgstring | Текстовое сообщение с результатом выполнения запроса. | ||||||||||||||||||||||||||||||||
listarray of objects | Список донатов. | ||||||||||||||||||||||||||||||||
|
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('donates/get-last', [ 'last' => 215665 ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idinteger, обязательно | ID доната в системе. |
statusstring, обязательно | Статус доната. Возможные значения: public - опубликован; hidden - скрыт. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('donates/change-status', [ 'id' => 1, 'status' => 'hidden' ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idinteger, обязательно | ID доната в системе. |
answerstring, обязательно | Текст ответа. Для удаления ответа следует передать пустую строку. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('donates/answer', [ 'id' => 1, 'answer' => 'Спасибо за помощь проекту! 😊' ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idinteger, обязательно | ID доната в системе. |
statusstring, обязательно | Статус выдачи вознаграждения. not_sended - не выдано; sended - выдано. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('donates/change-reward-status', [ 'id' => 1, 'status' => 'sended' ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idsarray of int | Можно передать массив системных ID кампаний для выборки конкрентных кампаний. Если данный параметр не передан, то вернутся 20 последних кампаний. |
Параметр | Описание | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
successboolean, обязательно | Успешность обработки запроса сервером. | ||||||||||||||||||||
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. | ||||||||||||||||||||
msgstring | Текстовое сообщение с результатом выполнения запроса. | ||||||||||||||||||||
listarray of objects | Список кампаний. | ||||||||||||||||||||
|
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('campaigns/get'); print_r($result);
$api = new Keksik(1, 'auth_token'); $result = $api -> request('campaigns/get', [ 'ids' => [1, 3] ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
Параметр | Описание | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
successboolean, обязательно | Успешность обработки запроса сервером. | ||||||||||||||||||||
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. | ||||||||||||||||||||
msgstring | Текстовое сообщение с результатом выполнения запроса. | ||||||||||||||||||||
campaignobject | Объект кампании. | ||||||||||||||||||||
|
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('campaigns/get-active'); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
campaigninteger, обязательно | ID кампании в системе. |
Параметр | Описание | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
successboolean, обязательно | Успешность обработки запроса сервером. | ||||||||||||||
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. | ||||||||||||||
msgstring | Текстовое сообщение с результатом выполнения запроса. | ||||||||||||||
listarray of objects | Массив объектов вознаграждений. | ||||||||||||||
|
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('campaigns/get-rewards', [ 'campaign' => 1 ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idinteger, обязательно | ID кампании в системе. |
titlestring | Заголовок кампании. |
statusstring | Статус кампании. draft - черновик; active - активная кампания; archive - кампания архивирована. |
endinteger | Временная метка по unix (в миллисекундах) окончания кампании. |
pointinteger | Цель по сбору в рублях. |
start_receivedinteger | Собрано за пределами приложения в рублях. |
start_backersinteger | Кол-во спонсоров пожертвовавших за пределами приложения. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('campaigns/change', [ 'id' => 1, 'title' => 'Новое название кампании' ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idinteger, обязательно | ID вознаграждения в системе. |
titlestring | Название вознаграждения. |
descstring | Описание вознаграждения. |
min_donateinteger | Минимальный донат для получения текущего вознаграждения. |
limitsinteger | Ограничение кол-во вознаграждений. Если ограничений нет, данное поле должно быть равно 0. |
statusstring | Статус вознаграждения. public - вознаграждение опубликовано; hidden - вознаграждение скрыто. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('campaigns/change-reward', [ 'id' => 1, 'title' => 'Новое название вознаграждения' ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
idsarray of int | Можно передать массив системных ID заявок на выплату для выборки конкрентных заявок на выплату. Если данный параметр не передан, то вернутся 20 последних заявок на выплату. |
Параметр | Описание | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
successboolean, обязательно | Успешность обработки запроса сервером. | ||||||||||||||
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. | ||||||||||||||
msgstring | Текстовое сообщение с результатом выполнения запроса. | ||||||||||||||
listarray of objects | Массив объектов заявок на выплату. | ||||||||||||||
|
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('payments/get'); print_r($result);
$api = new Keksik(1, 'auth_token'); $result = $api -> request('payments/get', [ 'ids' => [1, 3] ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
systemstring, обязательно | Платежная система. bank-card - Банковская карта; bank-card-uah - Банковская карта (UAH); bank-card-sng - Банковская карта (СНГ); qiwi - Qiwi; webmoney - WebMoney (только Z-кошельки); yoomoney - ЮMoney; mobile - Счет мобильного телефона. |
pursestring, обязательно | Счет в платежной системе на который будет произведена выплата. |
namestring | Имя и фамилия в точности как написано на банковской карточке, на которую заказывается выплата. Данное поле обязательно только при выплате bank-card-uah и bank-card-sng. |
amountinteger, обязательно | Сумма выплаты в рублях. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
idinteger | ID выплаты в системе. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('payments/create', [ 'system' => 'mobile', 'purse' => '78005553535', 'amount' => 50 ]); print_r($result);
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
tokenstring, обязательно | Секретный токен. |
vint, обязательно | Номер версии api. Текущая версия 1. |
Параметр | Описание |
---|---|
successboolean, обязательно | Успешность обработки запроса сервером. |
errorinteger | Если запрос выполнен с ошибкой, то будет возвращен код ошибки. См. список кодов ошибок. |
msgstring | Текстовое сообщение с результатом выполнения запроса. |
balanceinteger | Баланс группы в копейках. |
Пример кода на PHP с использованием класса для работы с API.
$api = new Keksik(1, 'auth_token'); $result = $api -> request('balance'); print_r($result);
Callback API позволяет задать адрес страницы, на которую, при поступлении нового доната, мы будем отправлять уведомление.
Обратите внимание! На любое уведомление, Callback сервер должен ответить в JSON формате:
{"status": "ok"}
На уведомления типа confirmation Callback сервер должен ответить:
{"status": "ok", "code": "a1b2c3"}
Код подтверждения можно найти в панели управления приложением, во вкладке "API".
Ниже приведен пример кода страницы для приема уведомлений о новых донатах. Версия PHP не ниже 7.0.
class Callback { private $secret_key; function __construct($secret_key) { $this -> secret_key = $secret_key; } public function get() { $response = json_decode(file_get_contents('php://input'), true); if (!$this -> check_hash($response)) return false; unset($response['hash']); return $response; } private function check_hash($params) { $hash = $params['hash']; unset($params['hash']); $params = $this -> get_hash_array($params); ksort($params); array_push($params, $this -> secret_key); $hash_str = join(',', $params); $sha256 = hash('sha256', $hash_str); return ($sha256 == $hash) ? true : false; } private function get_hash_array($params, $indx = '') { $arr = []; if ($indx) $indx .= '/'; foreach ($params as $key => $val) { if (is_array($val)) { $newarr = $this -> get_hash_array($val, $indx . $key); $arr = array_merge($newarr, $arr); } else { $arr[$indx . $key] = $val; } } return $arr; } } $secret_key = 'секретный_ключ_из_настроек_приложения'; $code = 'код_подтверждения_из_настроек_приложения'; $callback = new Callback($secret_key); $response = $callback -> get(); if ($response === false) exit('Неверный хеш запроса.'); switch ($response['type']) { case 'confirmation': echo '{"status": "ok", "code": "' . $code . '"}'; break; case 'new_donate': // Записываем данные в response.txt $json = json_encode($response, JSON_UNESCAPED_UNICODE); file_put_contents('donates.txt', $json . "\n", FILE_APPEND); echo '{"status": "ok"}'; break; case 'payment_status': // Записываем данные в response.txt $json = json_encode($response, JSON_UNESCAPED_UNICODE); file_put_contents('payments.txt', $json . "\n", FILE_APPEND); echo '{"status": "ok"}'; break; }
Для того, чтобы удостовериться в подлиности данных, следует проверять хеш запроса.
Для проверки хеша:
[ "a" => "Элемент 1", "b" => [ "c" => "Элемент 2", "d" => [ "e" => "Элемент 3", "f" => "Элемент 4" ] ], "g" => "Элемент 5" ]... должен получиться массив ...
[ "a" => "Элемент 1", "b/c" => "Элемент 2", "b/d/e" => "Элемент 3", "b/d/f" => "Элемент 4", "g" => "Элемент 5" ]
Данные передаются в виде JSON методом POST.
Параметр | Описание |
---|---|
groupinteger, обязательно | VK ID группы. |
typestring, обязательно | Тип уведомления. Возможные значения: confirmation - подтверждение страницы при настройке адреса сервера в приложении; new_donate - новый донат; payment_status - изменение статуса заявки на выплату. |
hashstring, обязательно | Хеш запроса. Нужен для проверки того, что уведомление получено от нашего сервера, а не от злоумышленника. Подробнее про проверку хеша читайте в разделе Проверка хеша запроса. |
donateobject | Объект с информацией о донате. | ||||||||||||||||||||||||||||||||
|
paymentobject | Объект с информацией о заявке на выплату. | ||||||||||||||
|