Безопасность интеграции
Краткие правила безопасной интеграции с Eleven Pay.
Чек‑лист
- [ ] API‑ключ используется только на сервере; его нет в браузере/мобильном клиенте.
- [ ] Все вызовы — по HTTPS.
- [ ] На каждую логическую команду создания — свой
Idempotency-Key; повтор с тем же ключом и телом. - [ ] Подпись вебхука проверяется по сырым байтам тела до разбора JSON.
- [ ] Проверка временной метки вебхука (окно ±5 минут).
- [ ] Сравнение подписи — в постоянном времени; поддержаны несколько
v1. - [ ] Дедупликация вебхуков по
X-ElevenPay-Event-Id. - [ ] Проверка заказа, суммы и валюты перед выдачей.
- [ ] Секреты и заголовок
Authorizationне логируются. - [ ] Есть путь сверки через GET для случаев неопределённости.
Дополнительно для счетов Cashier
- [ ] «Оплачено» ставится только после подтверждённого расчёта (подписанный
payment.succeeded, либоGETсоstatus: "succeeded"иsettled: true) — не по ответу создания и не по возврату плательщика. - [ ] Стабильный
Idempotency-Keyхранится вместе с заказом до первого запроса; при потере ответа повтор идёт с тем же ключом и телом. - [ ] Неопределённый исход (
unknown, нет ответа,409 ambiguous_create_blocked) не приводит к созданию второго счёта. - [ ] Просроченный на вашей стороне заказ с проверенным платежом уходит на ручной разбор, а не теряется; срок на вашей стороне ничего не отменяет в Eleven Pay.
- [ ] Телефон плательщика не логируется и не показывается в интерфейсе целиком; в ответах Eleven Pay его нет.
- [ ] Ключ с возможностью
cashier.invoice.createхранится отдельно от прочих ключей и имеет минимальные права; изоляция организаций обеспечивается ключом — не передавайте идентификаторы организации. - [ ] Существующая живая платёжная интеграция сайта не меняется без явного решения владельца; новая — за флагом, выключенным по умолчанию.
Хранение ключей и секретов
- API‑ключ и секрет подписи вебхука — серверные секреты. Храните в переменных окружения или менеджере секретов, не в исходном коде и не в Git.
- Оба показываются в кабинете один раз. Потеряли — создайте/отзовите заново.
Логирование
Не логируйте:
- полный API‑ключ и заголовок
Authorization; - секрет подписи вебхука;
- значение QR‑действия (
action.value) — по возможности.
reference и merchant_order_id можно логировать согласно вашей политике данных.
Ротация секрета вебхука
При ротации выдаётся новый секрет (показывается один раз). Eleven Pay некоторое время подписывает текущим и предыдущим секретом (перекрытие), поэтому проверяйте несколько v1. Обновите верификатор на новый секрет до следующей ротации. Фиксированной длительности перекрытия нет.
Ротация API‑ключа
Отдельного endpoint ротации нет — используйте перекрытие несколькими ключами: создайте новый → разверните → проверьте → отзовите старый.
SSRF и адреса вебхуков
Адрес вебхука проверяется на стороне Eleven Pay (только HTTPS, доменный хост, без учётных данных/запроса/ фрагмента, не IP‑литерал) для защиты от SSRF. Доставка не следует за редиректами — ваш endpoint должен отвечать напрямую.
Поддержка
По вопросам подключения и доступности приёма платежей обращайтесь к вашему представителю Eleven Pay по онбордингу.