У Oblodai нет отдельной песочницы (sandbox) и тестовых ключей. API работает на боевом
окружении. Это значит, что реальные платежи и выплаты двигают реальные средства. Тестировать
интеграцию нужно осознанно — эта инструкция показывает, как проверить максимум логики без риска
и без реальных переводов, а что придётся проверять малыми реальными суммами.
Что можно проверить без единого перевода
Часть флоу тестируется полностью бесплатно и безопасно:
Создание счёта денег не двигает — вы получаете адрес и все поля ответа, не оплачивая. Это уже
покрывает большую часть кода: сериализацию тела, подпись, разбор ответа, сохранение
uuid.
Проверить подпись «вхолостую»
Самый первый тест — убедиться, что подпись собирается правильно. Достаточно любого чтения:Если тут
401 — не идите дальше, чините подпись. → Как подписать запросПроверить приёмник вебхуков тестовыми событиями
Не дожидаясь реальной оплаты, отправьте пробное событие на свой URL:
status_code — то, чем ответил ваш обработчик. Нужен 200.Так проверяется весь путь доставки: доходит ли запрос, парсится ли тело, отвечаете ли 2xx. Не
проверяется только реальная подпись — её отработаете на первом боевом платеже.Прогнать создание счёта
Создайте счёт и убедитесь, что разбираете ответ:Проверьте оба механизма идемпотентности — они независимы, и сломаться может любой:
- Заголовок
Idempotency-Key. Отправьте один и тот же запрос дважды с одним и тем же значением заголовка — второй ответ должен быть идентичен первому и прийти с заголовкомIdempotent-Replayed: true. Так вы убеждаетесь, что ваш клиент действительно не генерирует новый ключ на каждую попытку (самая частая ошибка внедрения). order_id. Повторите создание счёта с тем жеorder_id— должен вернуться тот же счёт, а не создаться второй.
Что придётся проверить реальными малыми суммами
Оплату «живой» транзакцией, подтверждения сети, реальную подпись вебхука и выплату полностью
проверить синтетикой нельзя. Делайте это малыми суммами на дешёвой сети:
- Выберите дешёвую сеть. Tron (
tron), Polygon (polygon), BSC (bsc) — низкие комиссии сети. Избегайте Ethereum и Bitcoin для тестов: дорого и есть минимальные суммы. - Помните про минимум сети. На дорогих сетях платёж ниже минимума вернёт
payment.below_minimum. На дешёвых минимума обычно нет. - Проверьте боевую подпись вебхука именно на этом реальном платеже — это единственный способ убедиться, что алгоритм и секрет верны. → Объект вебхука
- Тест выплаты: сначала
/v1/payout/calculate(денег не двигает — видите комиссию и итог), затем реальная выплата малой суммы на свой же адрес. Помните: выплаты по API‑ключу необратимы и уходят сразу. - Тест возврата/автовозврата: сделайте недоплату/переплату малой суммой и проверьте, что статусы
(
wrong_amount/paid_over) и автовозврат отрабатывают. → Недоплата и переплата
Проверить незрелые средства
Отдельно протестируйте сценарий, который часто всплывает уже в проде: сразу после оплаты средства на
балансе, но ещё не выводимы (maturity‑холд). Попробуйте вывести их сразу — должны получить
409 payout.funds_maturing. Убедитесь, что ваш код это корректно обрабатывает и не считает ошибкой
навсегда. → POST /v1/balanceДисциплина боевого тестирования
Раз песочницы нет, заведите правила, чтобы боевые тесты не смешивались с настоящими заказами:- Префикс для тестовых
order_id(напримерtest-...) — легко отфильтровать и не спутать с реальными заказами. - Отдельный тестовый адрес‑получатель для выплат, который вы контролируете.
- Минимально возможные суммы и дешёвые сети.
- Логируйте
public_id,uuid,order_idкаждого теста — потом проще свести концы. - Не коммитьте ключи — даже во временном тестовом скрипте.
Чек‑лист тестирования
- Подпись запроса верна (любой чтение‑эндпоинт вернул
state: 0). - Идемпотентность (заголовок): повтор с тем же
Idempotency-Keyвернул тот же ответ иIdempotent-Replayed: true; клиент не генерирует новый ключ на каждую попытку. - Идемпотентность (
order_id): повтор создания счёта с тем жеorder_idвернул тот же счёт. - Приёмник вебхуков принимает тестовое событие и отвечает
status_code: 200. - Обработчик пропускает
is_test‑тела и проверяет подпись боевых. - Реальная подпись вебхука проверена на одном малом платеже.
payout/calculateвозвращает ожидаемую комиссию.- Малая реальная выплата на свой адрес прошла до статуса
paid. 409 payout.funds_maturingобрабатывается корректно — клиент повторяет выплату позже, а не считает её проваленной.- Недоплата/переплата и автовозврат проверены малой суммой.