Інтеграція 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+ успішних проєктів, гарантія якості на кожен етап.
Зв'яжіться з нами, щоб розпочати інтеграцію прямо зараз. Отримайте консультацію щодо вашого проєкту.







