Безопасность
Как защитить токен и баланс приложения PS Wallet Pay: хранение и перевыпуск токена, разрешённые методы, белый список IP, проверка вебхуков.
On this page
Токен приложения даёт полный доступ к API, а с включёнными transfer и createCheck — и к деньгам на балансе приложения. Эти правила помогут защитить их.
Коротко
- Храните токен только на сервере. Не вставляйте его в код мини-приложений, сайтов и мобильных клиентов.
- Включайте
transferиcreateCheck, только если они действительно нужны: эти методы выводят деньги с баланса приложения. - Включите белый список IP, чтобы API принимало запросы только с ваших серверов.
- Проверяйте подпись каждого вебхука.
- Держите на балансе приложения только то, что нужно для работы, а остальное регулярно выводите.
API-токен
Токен выглядит как <ID приложения>:<секрет> и передаётся в заголовке PSWallet-Pay-API-Token. Посмотреть его можно в кабинете приложения в разделе «API-токен» — с подтверждением PIN-кодом.
- Храните токен в переменных окружения или хранилище секретов сервера, а не в коде и репозитории.
- Не передавайте токен в браузер, мини-приложение или мобильный клиент: любой пользователь сможет его извлечь. Запросы к API делайте только со своего сервера.
- Не пересылайте токен в чатах и не публикуйте в логах.
Перевыпуск токена
Если токен утёк или вы в этом сомневаетесь, нажмите «Перевыпустить» в разделе «API-токен» (понадобится PIN-код).
Старый токен перестаёт работать сразу — обновите его на сервере, иначе запросы будут получать 401 UNAUTHORIZED. Вебхуки после перевыпуска подписываются новым токеном.
Разрешённые методы
Методы transfer и createCheck по умолчанию выключены. Включить их можно в кабинете: «Безопасность» → «Разрешённые методы»:
- «Переводы пользователям через API» — метод
transfer; - «Создание чеков через API» — метод
createCheck.
Включение подтверждается PIN-кодом, выключить метод можно без него. Если метод выключен, API отвечает ошибкой 403 METHOD_DISABLED.
Белый список IP
Включите белый список IP («Безопасность» → «Белый список IP»), чтобы API принимало запросы только с ваших серверов. Запросы с других адресов получат ошибку 403 IP_NOT_ALLOWED.
- Поддерживаются отдельные адреса и подсети IPv4 и IPv6, например
203.0.113.0/24или2001:db8::/32. - Подсеть IPv4 — от
/8до/32, IPv6 — от/16до/128. - В списке может быть до 20 записей.
- Пустой список — ограничений нет.
- Изменение списка подтверждается PIN-кодом.
Если сервер выходит в интернет через NAT или прокси, добавьте в список внешний адрес, с которого уходят запросы.
Вебхуки
- Проверяйте подпись
PSWallet-Pay-API-Signatureкаждого вебхука и отвечайте401, если она не совпала — подробнее в разделе Вебхуки. - Отклоняйте запросы, у которых
request_dateстарше нескольких минут. - Обрабатывайте события идемпотентно: одно событие может прийти несколько раз.
- Не доверяйте сумме и статусу из запроса без проверки подписи. При сомнениях запросите счёт через
getInvoicesпоinvoice_ids.
Баланс приложения
Держите на балансе приложения только то, что нужно для работы (например, для переводов и чеков), а остальное регулярно выводите на свой счёт кнопкой «Вывести» в кабинете.
Заморозка и удаление приложения
Если приложение заморожено администрацией PS Wallet, API отвечает ошибкой 403 APP_FROZEN, а вывод с баланса недоступен. Обратитесь в поддержку.
Приложение можно удалить в настройках: «Удалить приложение». Токен перестанет работать, а неоплаченные счета — приниматься. Отменить удаление нельзя, а баланс приложения перед удалением должен быть нулевым.