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 не используется
external_id string, до 100 печатных ASCII-символов без пробелов Необязательный Идентификатор операции внешнего клиента. Для KaftPay обеспечивает идемпотентность; если отсутствует, VCR генерирует UUID самостоятельно
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. VCR самостоятельно запускает настроенный VP930, шифрует биометрические векторы, выполняет распознавание и продолжает оплату только при результате confident. Поля token и phoneNumber не используются. ambiguous и no_match завершаются без списания.

Для KaftPay рекомендуется всегда передавать уникальный external_id. Для активного или завершённого платежа повторный запрос с тем же идентификатором и суммой возвращает существующий результат и не запускает VP930 повторно. Если KaftPay однозначно подтвердил, что списания не было (1210), либо вернул однозначный отказ, повторный запрос может заново запустить распознавание и безопасно использовать тот же external_id. Старые клиенты могут не передавать поле, однако после потери первого ответа они не смогут безопасно повторить запрос по тому же идентификатору.

Важно: при оплате через терминал или по токену приложение 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,
        "external_id": "84f00ff9-717c-467b-985f-b27823538622"
    },
    "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 Маскированный номер карты, если доступен
external_id string Внешний идентификатор операции; для KaftPay — переданный клиентом или сгенерированный VCR UUID
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"
}