Не мигрируете с Heleket? Смело пропускайте эту страницу — здесь только отличия при переносе
существующей интеграции с Heleket, а не общие правила Oblodai.
Список отличий основан на явно задокументированных расхождениях. Всегда сверяйтесь с актуальным
Справочником по каждому методу.
Аутентификация
Oblodai подписывает каждый запрос HMAC‑SHA256 по канонической строкеtimestamp\nMETHOD\npath\nbody и тремя заголовками X-Public-Id / X-Timestamp / X-Signature.
Проверьте, что ваша реализация подписи собирает строку именно так и подписывает те же байты, что
отправляет. → Как подписать запрос
Курсы валют
Метод:GET /v1/exchange-rate/{currency}/list → POST /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надо повторять позже. → Устойчивый клиент