# Подтверждение оплаты (Accept Order) После создания котировки подтвердите её для выполнения платежа. ## Endpoint ``` POST /orders/accept/{id} ``` ## Параметры | Параметр | Расположение | Тип | Обязательный | Описание | | --- | --- | --- | --- | --- | | `id` | path | uuid | Да | ID котировки | | `Idempotency-Key` | header | string | Нет | Ключ идемпотентности | ## Идемпотентность Заголовок `Idempotency-Key` гарантирует, что повторные запросы не создадут дублирующие платежи: ```bash curl -X POST 'https://b2b.lumowallet.io/orders/accept/550e8400-e29b-41d4-a716-446655440000' \ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Idempotency-Key: accept-order-12345' ``` При повторном запросе с тем же `Idempotency-Key`: - Если ордер уже создан — вернётся существующий ордер - Новый платёж не будет инициирован **Рекомендация:** Всегда используйте `Idempotency-Key` на продакшене. ## Пример ответа ```json { "id": "550e8400-e29b-41d4-a716-446655440000", "amountUsdt": 52.63, "amountRub": 5000.00, "status": "in_progress", "paymentUntil": "2026-03-10T12:05:00Z", "merchantName": "ООО Кофейня", "externalOrderId": "order-12345", "completedAt": null, "failureReason": null, "createdAt": "2026-03-10T12:00:00Z" } ``` ## Поля ответа | Поле | Тип | Описание | | --- | --- | --- | | `id` | uuid | ID ордера | | `amountUsdt` | number | Сумма в USDT | | `amountRub` | number | Сумма в рублях | | `status` | string | Текущий статус | | `paymentUntil` | datetime | Дедлайн выполнения платежа | | `merchantName` | string | Название получателя | | `externalOrderId` | string | Ваш внутренний ID | | `completedAt` | datetime | Время завершения (при success/failed) | | `failureReason` | string | Причина ошибки (при failed) | | `createdAt` | datetime | Время создания | ## Что происходит после accept 1. **Резервирование средств** — `amountUsdt` блокируется на `frozenBalance` 2. **Отправка в wallet-backend** — инициируется оплата QR 3. **Статус `in_progress`** — ожидание подтверждения 4. **Webhook** — уведомление о финальном статусе ## Таймауты - `paymentUntil` — дедлайн для выполнения платежа системой - Если платёж не выполнен до дедлайна — статус `expired_by_system` - Средства разблокируются и возвращаются на баланс ## Ошибки | Код | Ошибка | Описание | | --- | --- | --- | | 400 | `Quote expired` | Котировка истекла (TTL 30 сек) | | 400 | `Insufficient balance` | Недостаточно средств | | 400 | `Quote already accepted` | Котировка уже подтверждена | | 401 | `Unauthorized` | Неверный API-ключ | | 404 | `Quote not found` | Котировка не найдена | ## Пример полного flow ```bash # 1. Создаём котировку QUOTE=$(curl -s -X POST 'https://b2b.lumowallet.io/orders/prepare' \ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"qrCode": "https://qr.nspk.ru/..."}') QUOTE_ID=$(echo $QUOTE | jq -r '.id') # 2. Подтверждаем curl -X POST "https://b2b.lumowallet.io/orders/accept/$QUOTE_ID" \ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Idempotency-Key: my-unique-key' ``` ## Что дальше? - [Жизненный цикл ордера](/guides/orders/order-lifecycle) — все статусы и переходы - [Webhooks](/guides/webhooks) — получение уведомлений о статусе