Payment.Create

Создание платежа через терминал или внешнюю платёжную систему.

Доступные на текущей кассе системы, сценарии и операции возвращает метод Payment.Systems.Get.

Входные параметры

Название Тип данных Обязательность Описание
payment_system_id int64 Обязательный ID платёжной системы
amount int64 Обязательный Сумма платежа в тийинах
token string Обязательный для PayMe GO, Click PASS, Uzum Pay, Anor Check, Paynet Pass и KaftPay Токен/код приложения клиента. Для KaftPay — последние четыре цифры телефона клиента
card_type int32 Обязательный при оплате через терминал (payment_system_id < 0) Тип карты: 1 - корпоративная, 2 - личная, 3 - социальная
description string Необязательный Примечание к платежу

Сценарии работы:

  • payment_system_id = -1, -2 или -3: VCR отправляет сумму на банковский терминал. Для POSRetail используется значение -3.
  • payment_system_id = 1, 2, 3, 4, 6: VCR проводит платёж по токену/коду приложения клиента.
  • payment_system_id = 5: VCR создаёт QR-платёж UzQR. Поле token не передаётся. Если в VCR настроено QR-устройство, VCR попытается показать код покупателю автоматически. В ответе также будет qr_text для отображения во внешнем интерфейсе.
  • payment_system_id = 7: оплата KaftPay. Сначала вызовите Biometric.Identify, затем передайте последние четыре цифры телефона клиента в token. VCR использует активную сессию распознавания текущего авторизованного кассира.

Важно: при оплате через терминал или по токену приложение VCR может быть недоступно до получения ответа от устройства или платёжной системы. Рекомендуемый timeout запроса - 180 секунд.

Для UzQR Payment.Create создаёт QR-счёт и возвращает qr_text, а сама оплата подтверждается асинхронно в приложении покупателя. Если в VCR настроено QR-устройство, VCR попытается показать QR локально. Внешнее приложение должно периодически вызывать Payment.Get, пока статус платежа не станет 3 - оплачен. Вызов Payment.Get синхронизирует статус с платёжной системой и обновляет состояние настроенного QR-устройства VCR. После оплаты поле rrn содержит идентификатор оплаты UzQR. Затем локальный id платежа можно передать в Receipt.Sale в поле payments[].payment_id.

Пример запроса - оплата через терминал

{
    "id": 1,
    "method": "Payment.Create",
    "auth": "a2Fzc2E6a2FzMTIzNDU2",
    "params": {
        "payment_system_id": -1,
        "card_type": 2,
        "amount": 90000,
        "description": "Ingenico"
    },
    "jsonrpc": "2.0"
}

Пример запроса — оплата через POSRetail

{
    "id": 1,
    "method": "Payment.Create",
    "auth": "a2Fzc2E6a2FzMTIzNDU2",
    "params": {
        "payment_system_id": -3,
        "card_type": 2,
        "amount": 90000,
        "description": "POSRetail"
    },
    "jsonrpc": "2.0"
}

Для POSRetail поле payment_id в ответе содержит идентификатор операции терминала.

Пример запроса — оплата KaftPay

{
    "id": 1,
    "method": "Payment.Create",
    "auth": "a2Fzc2E6a2FzMTIzNDU2",
    "params": {
        "payment_system_id": 7,
        "amount": 90000,
        "token": "4567"
    },
    "jsonrpc": "2.0"
}

Если результат операции не определён, VCR возвращает локальный платёж со статусом 2. Вызывайте Payment.Get, передавая Payment.Create.result.id.

Пример запроса - оплата по токену клиента

{
    "id": 1,
    "method": "Payment.Create",
    "auth": "a2Fzc2E6a2FzMTIzNDU2",
    "params": {
        "payment_system_id": 6,
        "amount": 90000,
        "token": "850308040359292957",
        "description": "Paynet Pass"
    },
    "jsonrpc": "2.0"
}

Пример запроса - создание QR-платежа UzQR

{
    "id": 1,
    "method": "Payment.Create",
    "auth": "a2Fzc2E6a2FzMTIzNDU2",
    "params": {
        "payment_system_id": 5,
        "amount": 90000,
        "description": "UzQR"
    },
    "jsonrpc": "2.0"
}

Выходные параметры

Название Тип данных Описание
id string id платежа в VCR. Это значение используется в Receipt.Sale.payments[].payment_id
datetime string Время создания платежа
payment_system_id int32 ID платёжной системы
payment_id string id платежа во внешней платёжной системе. Для QR-платежа может появиться после успешной оплаты
status int32 Статус платежа в VCR
amount int64 Сумма платежа в тийинах
receipt_id string id чека в VCR. До закрытия чека значение пустое
phone string Телефон плательщика, если платёжная система вернула это значение
rrn string Идентификатор карточной оплаты, если доступен. Для UzQR после оплаты содержит идентификатор оплаты UzQR
slip string SLIP терминала, если вернул терминал
card_type_id int32 Тип карты: 0 - не задано, 1 - корпоративная, 2 - личная, 3 - социальная
card_number string Маскированный номер карты, если доступен
invoice_id string id QR-счёта, если используется QR-сценарий
qr_text string Текст/ссылка QR-кода, который нужно показать покупателю

Пример ответа - оплата через терминал

{
  "id": 1,
  "ok": true,
  "result": {
    "id": "9a361fa4-b6f2-4fc3-b145-0628dfdb9714",
    "datetime": "2026-06-16 17:50:00",
    "payment_system_id": -1,
    "payment_id": "",
    "status": 3,
    "amount": 90000,
    "receipt_id": "",
    "phone": "",
    "rrn": "012345678901",
    "slip": "SLIP",
    "card_type_id": 2,
    "card_number": "8600********1234"
  },
  "jsonrpc": "2.0"
}

Пример ответа - оплата по токену клиента

{
  "id": 1,
  "ok": true,
  "result": {
    "id": "840afab9-7968-4364-b411-dfee4d099ee5",
    "datetime": "2026-06-16 17:50:00",
    "payment_system_id": 6,
    "payment_id": "1234567890",
    "status": 3,
    "amount": 90000,
    "receipt_id": "",
    "phone": "998901234567",
    "rrn": "",
    "slip": "",
    "card_type_id": 2,
    "card_number": "8600******8331"
  },
  "jsonrpc": "2.0"
}

Пример ответа - создан QR-платёж UzQR

{
  "id": 1,
  "ok": true,
  "result": {
    "id": "c01a8e04-81a7-4e38-a19a-7e2f77a6e2f4",
    "datetime": "2026-06-16 17:50:00",
    "payment_system_id": 5,
    "payment_id": "",
    "status": 2,
    "amount": 90000,
    "receipt_id": "",
    "invoice_id": "UZQR-INVOICE-ID",
    "qr_text": "https://example/qr"
  },
  "jsonrpc": "2.0"
}