Ошибки
Формат ошибок PS Wallet Pay API, все коды ошибок и что делать при каждой из них.
На этой странице
Если запрос не выполнен, API отвечает ok: false и описанием ошибки. По name удобно определять причину в коде, а code совпадает с HTTP-статусом ответа.
Формат
{
"ok": false,
"error": { "code": 400, "name": "PARAM_AMOUNT_INVALID" }
}| Поле | Тип | Описание |
|---|---|---|
code | Number | HTTP-статус ответа. |
name | String | Машинное имя ошибки, например INSUFFICIENT_FUNDS. |
Коды ошибок
| Код | Имя | Что значит |
|---|---|---|
| 400 | PARAM_<ИМЯ>_REQUIRED | Не передан обязательный параметр, например PARAM_AMOUNT_REQUIRED. |
| 400 | PARAM_<ИМЯ>_INVALID | Неверное значение параметра, например PARAM_ASSET_INVALID, PARAM_AMOUNT_INVALID. |
| 400 | INSUFFICIENT_FUNDS | На балансе приложения не хватает денег. |
| 400 | SPEND_ID_USED | Перевод с таким spend_id уже был. |
| 400 | INVOICE_PAID | Счёт уже оплачен (например, при deleteInvoice). |
| 400 | CHECK_ALREADY_ACTIVATED | Чек уже активирован, удалить его нельзя. |
| 401 | UNAUTHORIZED | Нет токена, токен неверный или перевыпущен, приложение удалено. |
| 403 | METHOD_DISABLED | Метод (transfer или createCheck) выключен в разделе «Безопасность». |
| 403 | IP_NOT_ALLOWED | Включён белый список IP, а запрос пришёл с другого адреса. |
| 403 | APP_FROZEN | Приложение заморожено администрацией PS Wallet. Обратитесь в поддержку. |
| 403 | TRANSFERS_DISABLED | Переводы для владельца приложения ограничены (transfer и createCheck). |
| 403 | TEMPORARILY_UNAVAILABLE | Операция в этой монете сейчас недоступна — например, перевод или чек в рублях. |
| 404 | USER_NOT_FOUND | Получатель не найден: он ни разу не открывал PS Wallet. |
| 404 | INVOICE_NOT_FOUND | Счёт не найден. |
| 404 | CHECK_NOT_FOUND | Чек не найден. |
| 405 | METHOD_NOT_FOUND | Такого метода нет. |
| 405 | POST_REQUIRED | Метод, который создаёт или удаляет данные, вызван через GET. |
| 429 | TOO_MANY_REQUESTS | Превышен лимит запросов, повторите позже. |
| 500 | INTERNAL_ERROR | Внутренняя ошибка. Повторите запрос; для transfer сначала проверьте getTransfers по spend_id. |
| 503 | TEMPORARILY_UNAVAILABLE | PS Wallet Pay временно недоступен. |
Новые коды могут добавляться. Обрабатывайте неизвестные коды как общую ошибку.
Ошибки параметров
Имя ошибки параметра строится из имени параметра в верхнем регистре: PARAM_ + имя + _REQUIRED или _INVALID. Например, неверный expires_in даст PARAM_EXPIRES_IN_INVALID.
| Метод | Параметры, которые проверяются |
|---|---|
createInvoice | currency_type, asset, fiat, accepted_assets, amount, description, hidden_message, paid_btn_name, paid_btn_url, payload, allow_comments, allow_anonymous, expires_in |
getInvoices | asset, fiat, invoice_ids, status, offset, count |
deleteInvoice | invoice_id |
transfer | user_id, asset, amount, spend_id, comment |
getTransfers | asset, transfer_ids, offset, count |
createCheck | asset, amount, pin_to_user_id, pin_to_username |
getChecks | asset, check_ids, status, offset, count |
deleteCheck | check_id |
getStats | start_at, end_at |
Когда возникает каждая ошибка, описано в разделах методов: Счета, Переводы, Чеки, Приложение, баланс и курсы.
Что делать при ошибке
| Ошибка | Что делать |
|---|---|
PARAM_… | Исправьте параметр. Повтор с теми же данными не поможет. |
INSUFFICIENT_FUNDS | Пополните баланс приложения или уменьшите сумму. |
401 UNAUTHORIZED | Проверьте токен: возможно, его перевыпустили. |
403 IP_NOT_ALLOWED | Добавьте адрес сервера в белый список IP или очистите список. |
403 METHOD_DISABLED | Включите метод в кабинете: «Безопасность». |
429 TOO_MANY_REQUESTS | Подождите и повторите запрос, увеличивая паузу между попытками. |
500 INTERNAL_ERROR | Повторите запрос позже. Для transfer сначала проверьте getTransfers по spend_id. |
503 TEMPORARILY_UNAVAILABLE | PS Wallet Pay временно не работает — повторите позже. |
403 APP_FROZEN, 403 TRANSFERS_DISABLED | Обратитесь в поддержку PS Wallet. |
Если запрос transfer оборвался по таймауту или вернул 500, не отправляйте перевод с новым spend_id — сначала проверьте getTransfers с прежним spend_id. Иначе пользователь может получить деньги дважды.