Перейти к содержанию
STONS
Разделы документации

Чек-лист перед продом

Пройдите его, прежде чем принимать реальные платежи. Каждый пункт закрывает известный способ потерять деньги.

Ключи и доступ

  • Ключ API хранится в менеджере секретов и используется только на сервере. Его нет в браузере, мобильном приложении, репозитории и логах.
  • Секрет вебхуков хранится так же и отдельно от ключа API.
  • Продукт обращается к API только по https://: по http:// ключ ушёл бы открытым текстом ещё до перенаправления — см. аутентификацию.

Вебхуки

  • Подпись проверяется по сырому телу запроса, до разбора JSON.
  • Подписи сравниваются за постоянное время.
  • Вебхуки с X-Timestamp, отличающимся от текущего времени больше чем на 5 минут, отклоняются.
  • Решение отдать товар принимается по ответу API, а не по телу вебхука.
  • Повторная доставка того же события не приводит к повторной выдаче товара.
  • Обработчик отвечает 2xx за секунды, а тяжёлую работу выполняет асинхронно.

Платежи

  • Товар отдаётся только после подтверждения платежа, а не при первом появлении транзакции.
  • Продукт определил, что делает при недоплате, переплате и платеже после дедлайна.
  • Суммы обрабатываются как строки или целые числа в минимальных единицах, никогда как числа с плавающей точкой.
  • Число знаков после запятой берётся для конкретного актива: у USDT в BNB Chain их 18, а не 6.
  • Каждый заказ создаёт инвойс со своим order_id, а повтор запроса после таймаута использует тот же order_id.

Отображение

  • Адрес показывается пользователю целиком, без сокращений, вместе с сетью и активом.
  • Пользователь предупреждён, что перевод в другой сети или другого токена не зачисляется автоматически.

Выплаты

  • Адреса для выплат вносятся в вайтлист заранее: новый адрес становится доступен через 24 часа.
  • Адрес для выплаты берётся из вайтлиста и никогда — из истории транзакций.
  • Каждая выплата создаётся со своим reference, а повтор использует тот же reference.

Проверка

  • Весь сценарий — создание инвойса, оплата, вебхук и проверка статуса через API — пройден на небольшой сумме до приёма реальных платежей. Разработчикам самого сервиса для этого есть локальное окружение и тестовые сети.