Проверьте интеграцию до работы с реальными средствами
Отправляйте настоящие HTTP-запросы в отдельный API с синтетическими данными. Проверяйте статусы заказов, повторы и подписанные образцы webhook без рабочего ключа и аккаунта.
Базовый URL: https://ludovex.org/api/sandbox/v1. Используйте ludovex.org; домен api.ludovex.org не обслуживает эту песочницу.
Попробуйте HTTP-сессию
Начните временную сессию со 100.00 TEST_USDT. Страница использует те же HTTP-маршруты, что и скачиваемые примеры.
Только тестовая среда. Нет денег, настоящих заказов, данных клиентов, писем или запросов провайдерам. Не вводите рабочие ключи и данные игроков.
HTTP-ответ
Начните сессию, чтобы увидеть ответы синтетического API.Предсказуемые сценарии
Мгновенное выполнение
201 COMPLETED; списывается 3.25 TEST_USDT и создаётся order.completed.
successОтложенное выполнение
201 PROCESSING; после пяти секунд первый запрос статуса, списка, баланса или событий переводит заказ в COMPLETED.
delayedОшибка с возвратом
201 PROCESSING; чтение после пяти секунд создаёт order.failed, затем order.refunded. Статус — REFUNDED, а 3.25 TEST_USDT возвращается один раз.
failed_refundНедостаточный тестовый баланс
Тестовый товар стоит 1000.00 TEST_USDT. Ответ 402 INSUFFICIENT_BALANCE без создания заказа и списания.
low_balanceПовтор / идемпотентность
Повторите одинаковый запрос с тем же ключом: вернётся тот же заказ без второго списания. Тот же ключ с другим сценарием: 409 IDEMPOTENCY_CONFLICT.
idempotency_keyБыстрый старт через HTTP
Отправьте {} в POST /sessions с Content-Type: application/json. Храните api_key и webhook_secret в памяти. В следующих запросах передавайте X-Sandbox-Key. Рабочие заголовки Authorization и X-API-Key отклоняются.
curl --fail-with-body https://ludovex.org/api/sandbox/v1/sessions \
-H 'Content-Type: application/json' -d '{}'
curl --fail-with-body https://ludovex.org/api/sandbox/v1/order \
-H 'Content-Type: application/json' \
-H 'X-Sandbox-Key: REPLACE_WITH_TEST_SESSION_KEY' \
-d '{"game_key":"sandbox_game","variation_id":"sandbox_pack","scenario":"delayed","idempotency_key":"example-order-001"}'Заказ принимает только game_key, variation_id, scenario и idempotency_key. Используйте два тестовых идентификатора ниже; поля player_id и данные аккаунта не нужны. Ключ в теле имеет приоритет над необязательным заголовком Idempotency-Key.
| POST /sessions | Создать анонимную тестовую сессию. |
|---|---|
| GET /catalog | Прочитать единственный синтетический товар. |
| GET /balance | Получить тестовый баланс и завершить готовые сценарии. |
| POST /order | Создать заказ со сценарием и ключом идемпотентности длиной 8–80 символов (буквы, цифры, _ или -). |
| GET /order/{id} | Прочитать статус заказа этой сессии. |
| GET /orders | Список заказов сессии (не более 20; без пагинации). |
| GET /events | Список идентификаторов событий сессии; завершает готовые сценарии. |
| POST /events/{id}/replay | Получить точное raw_body и подписанные заголовки; webhook не отправляется. |
| DELETE /session | Немедленно удалить сессию. |
Проверяйте и повторяйте без отправки
Повтор возвращает новую временную метку и подпись для того же тела и неизменного X-Ludovex-Delivery-Id. Проверьте HMAC-SHA256 от timestamp + "." + raw_body, отклоняйте метки старше 300 секунд или из будущего и сравнивайте подписи за постоянное время. Проверяйте подпись до разбора тела и выполнения действий.
Примеры используют временную базу SQLite для надёжной атомарной дедупликации проверенной доставки и её синтетического результата. Повторная доставка не должна выполнять действие дважды. Настоящему получателю нужна постоянная база и транзакция или outbox для реальных бизнес-действий.
URL не принимается, webhook не отправляется. Образцы повторов позволяют локально проверить верификатор; они не проверяют доставку по сети, повторы worker или ваш рабочий адрес webhook.
Запустите полную проверку интеграции
Без зависимостей: Node.js 24+ или Python 3.10+. Каждый скрипт создаёт свою сессию, проверяет все сценарии, подпись и дедупликацию, затем закрывает сессию. Результаты выводятся без ключей. Настоящие webhook не отправляются.
Запустите скачанный файл: node ludovex-sandbox.mjs или python3 ludovex-sandbox.py. По умолчанию используется песочница основного домена. SANDBOX_BASE_URL может указывать только на эту песочницу или локальную HTTP-песочницу для разработки.
Ограничения и отличия от рабочего API
Сессии истекают через 30 минут и пропадают при перезапуске процесса. На сессию: 20 заказов, до 40 событий и 60 запросов в минуту. Создание: 5 сессий по признаку IP за 10 минут; общая ёмкость — 250 сессий и 2000 запросов в минуту. JSON ограничен 2048 байтами и пятью секундами. При лимите возвращается 429 и, где доступно, Retry-After.
Это отдельный контракт с заданными сценариями и временной памятью одного процесса. Он не эмулирует рабочий API и не гарантирует доступность. Завершение происходит при чтении, а не в фоновом worker. Реальные каталог, квоты, проверка провайдера, платежи и рабочие ключи не используются.
Читать контракт рабочего API