Skip to content
Last updated

Подтверждение оплаты (Accept Order)

После создания котировки подтвердите её для выполнения платежа.

Endpoint

POST /orders/accept/{id}

Параметры

ПараметрРасположениеТипОбязательныйОписание
idpathuuidДаID котировки
Idempotency-KeyheaderstringНетКлюч идемпотентности

Идемпотентность

Заголовок Idempotency-Key гарантирует, что повторные запросы не создадут дублирующие платежи:

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 на продакшене.

Пример ответа

{
  "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"
}

Поля ответа

ПолеТипОписание
iduuidID ордера
amountUsdtnumberСумма в USDT
amountRubnumberСумма в рублях
statusstringТекущий статус
paymentUntildatetimeДедлайн выполнения платежа
merchantNamestringНазвание получателя
externalOrderIdstringВаш внутренний ID
completedAtdatetimeВремя завершения (при success/failed)
failureReasonstringПричина ошибки (при failed)
createdAtdatetimeВремя создания

Что происходит после accept

  1. Резервирование средствamountUsdt блокируется на frozenBalance
  2. Отправка в wallet-backend — инициируется оплата QR
  3. Статус in_progress — ожидание подтверждения
  4. Webhook — уведомление о финальном статусе

Таймауты

  • paymentUntil — дедлайн для выполнения платежа системой
  • Если платёж не выполнен до дедлайна — статус expired_by_system
  • Средства разблокируются и возвращаются на баланс

Ошибки

КодОшибкаОписание
400Quote expiredКотировка истекла (TTL 30 сек)
400Insufficient balanceНедостаточно средств
400Quote already acceptedКотировка уже подтверждена
401UnauthorizedНеверный API-ключ
404Quote not foundКотировка не найдена

Пример полного flow

# 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'

Что дальше?