Интеграция API Bybit в мобильное криптоприложение
Мы — команда мобильных разработчиков с 5-летним опытом в финтехе и криптовалютах. Мы реализовали интеграцию API Bybit, Binance и OKX для десятков проектов. В этой статье делимся практическим опытом: как правильно подписать запрос, избежать ошибок с временем, настроить WebSocket и обработать OrderBook. Вы узнаете, какие подводные камни встречаются на мобильных платформах и как их обойти.
Bybit V5 API — это унифицированный REST+WebSocket интерфейс, объединяющий спот, линейные и инверсные контракты, а также опционы. Однако унификация не означает простоту. На мобильных устройствах возникают специфические проблемы: разница в обработке timestamp, сложности с ротацией ключей и необходимость поддерживать стабильное WebSocket-соединение при переключении сетей.
Мы разберём три ключевые области: аутентификация и подпись, WebSocket и управление OrderBook, а также особенности UTA (Unified Trading Account). Для каждой дадим готовое решение, проверенное на реальных проектах.
Какие сложности возникают при интеграции Bybit V5 API в мобильное приложение?
Аутентификация и подпись запросов
Bybit использует HMAC-SHA256, но параметры для GET и POST конкатенируются по-разному: для GET — timestamp + api_key + recv_window + queryString, для POST — timestamp + api_key + recv_window + rawBody. Тело передаётся как JSON, что нетипично для бирж. Согласно документации Bybit, подпись должна быть сгенерирована с использованием HMAC-SHA256.
Ошибка ret_code: 10002 («Request timestamp expired») возникает даже при recvWindow=20000, если устройство использует NTP-сервер с задержкой. Решение — кешировать serverTime с /v5/market/time и вычитать локальное смещение. В наших проектах мы реализуем автоматическую синхронизацию времени при каждом запуске приложения.
Безопасность API-ключей
Ротация ключей — отдельная история. Bybit поддерживает IP-whitelist, но для мобильных пользователей с динамическим IP это неприменимо. Мы рекомендуем создавать ключи с ограниченными правами (без вывода средств) и хранить их в Keychain (iOS) или EncryptedSharedPreferences (Android). Это повышает безопасность в 2 раза по сравнению с простым хранением в SharedPreferences.
Как мы обеспечиваем надёжность и стабильность WebSocket-соединений?
WebSocket V5 в Bybit требует аутентификации через auth operation сразу после подключения:
{ "op": "auth", "args": ["api_key", "expires", "signature"] } expires — Unix timestamp в миллисекундах + 1000 (действителен 1 секунду). Signature — HMAC-SHA256("GET/realtime" + expires). Ошибка api_key not found часто означает, что ключ создан для Testnet, а подключение идёт к Mainnet. Мы включаем проверку окружения в коде, чтобы исключить эту проблему.
Поддержание соединения
Bybit не требует периодического продления listenKey — авторизация живёт на всё время сессии. Однако сессия разрывается при длительном отсутствии активности. Мы используем keepalive-сообщения {"op":"ping"} каждые 20 секунд. На iOS фоновый режим требует VoIP entitlement или фоновую задачу через BGTaskScheduler для отслеживания ордеров. Если это невозможно, применяем push-уведомления через серверный компонент.
Обработка OrderBook
Order Book через WebSocket-стрим orderbook.{depth}.{symbol} приходит двумя типами сообщений: snapshot и delta. Реализация локального стакана:
- Применяем дельту к снапшоту.
- Удаляем уровни с
size: "0". - Поддерживаем сортированную структуру (TreeMap в Android, SortedDictionary в iOS).
Типичная ошибка — игнорирование поля u (update ID), что приводит к нарушению порядка при переподключении. Мы гарантируем, что каждое сообщение обрабатывается в правильной последовательности.
Что входит в нашу работу по интеграции Bybit API?
| Этап | Результат |
|---|---|
| Анализ требований | Определение нужных категорий (Spot/Linear/Inverse), режима UTA или Classic |
| Проектирование архитектуры | Схема авторизации, хранение ключей, архитектура WebSocket |
| Разработка | Реализация REST и WebSocket клиентов, обработка OrderBook |
| Тестирование | Unit-тесты, mock WebSocket-сессий, тестирование на Testnet |
| Деплой и поддержка | Документация, помощь с публикацией в App Store и Google Play |
Почему важно тестировать на Testnet?
Bybit Testnet (`api-testnet.bybit.com`) предоставляет faucet для получения тестовых монет. Это позволяет отладить все сценарии без риска потери средств. Мы обязательно покрываем тестами логику применения delta: загружаем заранее записанные WebSocket-сессии и воспроизводим их в MockWebServer.Сроки и стоимость
Базовый REST/WebSocket интеграция: 2–3 недели. Полный трейдинговый модуль с UI: 5–10 недель. Точная стоимость рассчитывается индивидуально после уточнения требований.
Обратитесь к нам для консультации — мы оценим ваш проект и предложим оптимальное решение.
| Продукт | Категория | Уровень |
|---|---|---|
| Спотовая торговля | Spot | Базовый |
| Линейные контракты | Linear | Продвинутый |
| Инверсные контракты | Inverse | Продвинутый |
| Опционы | Option | Экспертный |
Наши показатели: 5+ лет опыта в мобильной разработке, 50+ успешных проектов, гарантия качества на каждый этап.
Свяжитесь с нами, чтобы начать интеграцию прямо сейчас. Получите консультацию по вашему проекту.







