Общая информация
Принцип работы
- Программный интерфейс построен по принципам REST на основе спецификации JSON-API
- При отправке запросов необходимо отправлять HTTP-заголовок Content-Type=application/json
- Тайм-аут на получение ответа от API: 1 минута
Для запросов с телом необходимо передавать заголовок:
Content-Type: application/json
Окружения
Production
https:/api
Аутентификация
Для доступа к API используется Bearer-аутентификация на основе JWT-токена (далее, access token).
Access token передается в каждом защищенном запросе в HTTP-заголовке:
Authorization: Bearer <access_token>
Access token можно получить в личном кабинете мерчанта:
- Получите приглашение от вашего личного менеджера по email
- Перейдите по ссылке из письма, чтобы задать пароль
- После создания пароля авторизуйтесь в личном кабинете мерчанта (https://merchant.wata.pro/login)
- В разделе «Терминалы» нажмите на плашку с терминалом
- Справа откроется панель с настройками, в ней нужно создать токены. Всего можно создать от 1 до 5 токенов
- Придумайте название и выберите время жизни токена. Время жизни access token составляет от 1 до 12 месяцев
- После истечения этого времени запросы к API начнут возвращать 401 HTTP статус код. Позаботьтесь о создании напоминания, чтобы заблаговременно перевыпустить access token в личном кабинете и заменить у себя в системе.
Важно:
- Храните access token в безопасном месте
- WATA не хранит access token в открытом виде
- Восстановить существующий access token нельзя
- При необходимости сгенерируйте новый access token
- Выбирайте осознанно срок жизни access token — от 1 до 12 месяцев
- После истечения срока действия API будет возвращать HTTP
401.
Ограничение частоты запросов
Для стабильной работы сервиса и защиты API от polling-нагрузки введено ограничение частоты GET-запросов к API.
Ограничиваются следующие запросы
GET api/v3/steam/order
GET api/v3/topup/orders
GET api/v3/vouchers/order
GET api/stars/order
GET api/v1/deposit/order
Все остальные методы (POST, PUT и т.д.) и эндпоинты — без ограничений
Размер лимита
- 1 GET-запрос раз в 30 секунд
Что происходит при превышении
- Возвращается HTTP 429 (Too Many Requests)
- В ответе указывается, через сколько секунд можно повторить запрос
Рекомендация
Для получения обновлений используйте webhook-уведомления. Polling-запросы предназначены только для редкой проверки состояния или fallback сценария
Webhook-уведомления
В терминале можно указать URL-адрес, куда будут приходить webhook-уведомления при оплате транзакции плательщиком (для ЦТ+эквайринг) или исполнении заказа (для ЦТ+депозит).
Порядок работы webhook'ов и параметры уведомлений см. в документации WATA Acquiring API.
HTTP-статусы
| Код | Значение | Описание |
|---|---|---|
| 200 | OK | Запрос успешно обработан |
| 400 | Некорректный запрос | Данные в запросе некорректны. Проверьте запрос, исправьте данные и повторите отправку |
| 401 | Запрос не авторизован | Не передан access token или передан access token с истекшим сроком действия. Обновите access token |
| 403 | Доступ запрещен | У вас нет доступа в запрашиваемый эндпоинт |
| 500 | Ошибка сервера | Обратитесь пожалуйста в техподдержку с описанием проблемы и указанием тела запроса |
B случае получения 400-го кода возвращается ответ с детализацией ошибки в теле ответа.
Пример ответа с детализацией ошибки:
Response 400
{
"error":{
"code":null,
"message":"Ваш запрос недействителен!",
"details":"При проверке были обнаружены следующие ошибки - 'Amount' должно быть заполнено.",
"data":{
},
"validationErrors":[
{
"message":"'Amount' должно быть заполнено.",
"members":[
"amount"
]
}
]
}
}
Коды ошибок
| Код | Описание |
|---|---|
| ORD_1001 | Заказ не найден |
| ORD_1002 | Такой заказ уже существует |
| ORD_1003 | Ошибка платежа, сумма заказа (amount) ниже минимальной |
| ORD_1004 | Истёк срок оплаты заказа |
| ORD_1005 | Ошибка платежа, сумма заказа (amount) превышает максимальную |
| ORD_1006 | Ошибка платежа, обратитесь в магазин |
| ORD_1007 | Заказ не находится в статусе ожидания подтверждения |
| PL_1001 | Некорректная сумма платежной ссылки (сумма слишком маленькая или слишком большая) |
| PL_1002 | Некорректная валюта платежной ссылки (создание ссылок в этой валюте запрещено) |
| PL_1003 | Платежная ссылка недоступна либо уже оплачена |
| STM_1001 | Ошибка расчета пополнения Steam |
| STM_1002 | Аккаунта Steam не существует |
| STM_1003 | Сумма платежа должна составлять от 100 руб. до 50 000 руб. |
| STM_1004 | Ошибка платежа, обратитесь в магазин |
| STR_1001 | Запрос содержит ошибки, проверьте правильность данных |
| STR_1002 | Пользователь не найден |
| STR_1003 | Некорректное количество звезд в заказе (от 50 до 50 тыс. штук) |
| STR_1004 | Ошибка при создании заказа |
| TPP_1001 | Не найден продукт |
| TPP_1002 | Некорректно переданы поля для оформления заказа |
| TPP_1003 | Продукт недоступен для покупки |
| TPP_1004 | Пользователь не найден, проверьте правильность данных |
| VCR_1001 | Ваучер не найден |
| VCR_1002 | Некорректный Count для ваучера |
| VCR_1003 | Товар закончился |