Skip to main content
Не мигрируете с Heleket? Смело пропускайте эту страницу — здесь только отличия при переносе существующей интеграции с Heleket, а не общие правила Oblodai.
Oblodai намеренно держит совместимость с Heleket в ряде мест (например, укрупнённые статусы выплат), но некоторые вещи отличаются. Эта инструкция собирает отличия, о которых важно знать при переносе интеграции.
Список отличий основан на явно задокументированных расхождениях. Всегда сверяйтесь с актуальным Справочником по каждому методу.

Аутентификация

Oblodai подписывает каждый запрос HMAC‑SHA256 по канонической строке timestamp\nMETHOD\npath\nbody и тремя заголовками X-Public-Id / X-Timestamp / X-Signature. Проверьте, что ваша реализация подписи собирает строку именно так и подписывает те же байты, что отправляет. → Как подписать запрос

Курсы валют

Метод: GET /v1/exchange-rate/{currency}/listPOST /v1/exchange-rate/list Неизвестная валюта возвращает пустой result: [], а не ошибку. → POST /v1/exchange-rate/list

Формат ответа

Все ответы (кроме /v1/webhooks и 429 — он отдаёт особое тело { "state": 1, "message": … } без объекта error) — конверт { "state": 0, "result": … } при успехе или { "error": { "code", "message" } } при ошибке. Ветвитесь по error.code вида <домен>.<причина>. → Формат ответа и коды ошибок Исключение: POST /v1/webhooks отвечает 201 Created без конверта.

Статусы выплат

Внутренний жизненный цикл выплаты — pending → approved → sent → confirmed (либо failed/ cancelled), но в поле status приходит укрупнённый Heleket‑совместимый статус: Здесь совместимость сохранена — но проверьте, что вы не полагаетесь на внутренние промежуточные статусы. → Объект выплаты

Подпись вебхуков

Убедитесь, что проверка подписи вебхука использует алгоритм Oblodai: hex(HMAC-SHA256(secret, "{timestamp}." + сырое_тело)), где секрет — из /v1/webhooks. Это не тот же алгоритм, что подпись запроса. → Объект вебхука

Поддерживаемые сети — чего нет

Проверьте, что вы не шлёте в Oblodai сети, которых здесь нет:
  • Bitcoin‑семейство — только BTC. litecoin, dogecoin, bitcoincash, dash намеренно не поддерживаются (как и monero) — инвойс/кошелёк на такую сеть будет отклонён.
  • Нативный ETH — только на ethereum. На L2 (base, arbitrum) — только токены USDT/USDC.
  • AVAX / avalanche поддерживается (нативный на C‑Chain).
Полная таблица — Поддерживаемые сети и валюты. Сверяйтесь программно через /v1/payment/services и /v1/payout/services.

Суммы

Суммы — строки в единицах валюты ("25.00"), без float. Часть полей — в minor‑единицах (например earnings_by_asset, min_minor); это всегда оговорено на странице метода. → Форматы сумм и денег

Чего в публичном API нет

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

Мини‑чек‑лист миграции

  • Подпись запроса пересобрана под формат Oblodai и совпадает байт‑в‑байт с телом.
  • Курсы переведены на POST /v1/exchange-rate/list, учтено, что котировка к USDT.
  • Разбор ответов идёт через конверт state/result и error.code; учтено исключение /v1/webhooks.
  • Проверка подписи вебхука переведена на алгоритм Oblodai (timestamp + . + сырое тело).
  • Из кода убраны неподдерживаемые сети (LTC/DOGE/BCH/DASH/XMR; нативный ETH на L2).
  • Обработка order_id‑идемпотентности сохранена для платежей и выплат (для выплат order_id обязателен), и дополнительно отправляется HTTP‑заголовок Idempotency-Key — одно значение на действие, неизменное во всех ретраях. → Идемпотентность
  • 409 не трактуется как «финал»: payout.funds_maturing и idempotency.in_progress надо повторять позже. → Устойчивый клиент

Связанные страницы

Справочник

Как подписать запрос

Объект вебхука

Поддерживаемые сети и валюты