ЯзыкAZRUTREN
VALYUTAMOBILE B2B

Документация Partner API

Технический справочник ValyutaMobile Partner API: эндпоинты, аутентификация и форматы ответов.

Базовый URLhttps://valyutamobile.com/wp-json/valyutamobile/v1

OpenAPI 3.0 JSON

Аутентификация

Защищённые запросы требуют Bearer-токен и подпись HMAC SHA-256.

  1. Для тестов используйте vm_test_ токен.
  2. Передавайте уникальный nonce для каждого запроса.
  3. Храните live-токен только на сервере.
cURL
TOKEN='vm_test_YOUR_TOKEN'
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
METHOD='GET'
TARGET='/wp-json/valyutamobile/v1/catalog?page=1&per_page=20'
BODY=''
BODY_HASH=$(printf '%s' "$BODY" | openssl dgst -sha256 | awk '{print $2}')
CANONICAL=$(printf '%s\n%s\n%s\n%s' "$TS" "$METHOD" "$TARGET" "$BODY_HASH")
SIGNATURE=$(printf '%s' "$CANONICAL" | openssl dgst -sha256 -hmac "$TOKEN" | awk '{print $2}')

curl "https://valyutamobile.com$TARGET" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-VM-Timestamp: $TS" \
  -H "X-VM-Nonce: $NONCE" \
  -H "X-VM-Signature: $SIGNATURE"

Sandbox

Токен vm_test_ работает в тестовой среде и не изменяет реальный баланс.

test_scenarioРезультат
completedУспешный тестовый ответ
processingТестовый ответ в обработке
failedНеуспешный тестовый ответ
insufficient_balanceТест ошибки баланса

POST /sandbox/reset сбрасывает тестовый баланс.

Каталог

GET/catalog?page=1&per_page=100&search=&category=

Получайте товары и категории из API. Для заказа используйте id и fields товара. API v1 поддерживает товары с фиксированным номиналом. Пополнения с произвольной суммой через API недоступны; их прежние ID отклоняются до списания.

Учитывайте type каждого поля. Если dynamic_options=true, перед оформлением получите актуальные варианты через GET /products/{id}. Для select передавайте options.value, а не options.label. Не принимайте заказ при unavailable или пустом обязательном списке. Числовые значения также передавайте строками; number_format задаёт формат integer или decimal.

HTTP
GET /catalog?page=1&per_page=100
GET /categories
GET /products/{vm_prod_id}

Создание заказа

POST/orders

В POST /orders передавайте данные товара и уникальный Idempotency-Key.

Поле test_scenario в примере предназначено только для токена vm_test_; в рабочих заказах его не отправляйте.

JSON
{
  "external_order_id": "shop-1058-line-1",
  "product_id": "vm_prod_a1b2c3",
  "quantity": 1,
  "fields": {"user_id": "123456", "server_id": "EU"},
  "test_scenario": "completed"
}

Статус заказа

GET/orders/{vm_order_id}

GET /orders/{id} возвращает текущий статус и доступные данные выдачи.

HTTP
GET /orders/vm_order_8f2d1c

Баланс

GET/balance

GET /balance возвращает баланс текущей среды токена.

HTTP
GET /balance
GET /wallet/transactions?page=1&per_page=50

Webhook

События order.updated могут отправляться подписанным webhook-запросом. Проверяйте подпись и отвечайте 2xx.

X-VM-Webhook-Signature

API-консоль

Для проверки запросов используйте только vm_test_ токен.

Ответ появится здесь.

Ошибки и лимиты

HTTPЗначение
400/422Неверный запрос или данные
401/403Ошибка аутентификации или доступа
402Недостаточно средств
409Конфликт или недоступный ресурс
429Превышен лимит запросов
5xxВременная ошибка сервера