QR & Transfers Payment Api (2.0)

Download OpenAPI specification:

Введение

Документ описывает порядок взаимодействия платформы Клиента и платформы Carusell (система "КПА") в рамках осуществления платежей и переводов в пользу различных получателей (мерчантов, банков) с инициацией транзакции через сканирование QR кода (scan-to-pay, MPM) или перевод из приложения Клиента по реквизитам.

Подключение

Для начала интеграции необходимо выполнить настройку безопасного канала связи и получить доступ к тестовому стенду.

Авторизация

Взаимодействие с API происходит по защищенному протоколу HTTPS с использованием взаимной TLS-аутентификации (mTLS).

Чтобы получить сертификат со стороны Carusell для тестового стенда, необходимо:

  1. Сгенерировать запрос на сертификат (CSR - Certificate Signing Request). Клиент создает файл с расширением .csr, который содержит публичный ключ и информацию об организации Клиента.
  2. Отправить файл .csr. Сгенерированный файл необходимо предоставить по e-mail helpdesk@cyberpro.kg команде поддержки платформы Carusell для выпуска сертификата.
  3. Получить подписанный сертификат (CRT). После обработки запроса Клиенту вернется файл сертификата с расширением .crt, который нужно будет установить на стороне Клиента. Этот сертификат необходим для аутентификации серверов Клиента при обращении к API платформу Carusell.

Доступы

Для получения настроек доступа к тестовому контуру Клиент направляет запрос по e-mail helpdesk@cyberpro.kg команде поддержки платформы Carusell. В ответном письме будут получены следующие параметры:

  1. Базовый URL
  2. Идентификатор сервиса (serviceId)
  3. API ключ (Api key)

Scan2pay (QR)

Порядок работы с сервисом платежей с инициацией через сканирование QR (scan-to-pay):

  1. Плательщик сканирует QR код, выпущенный оператором QR платежей в одной из стран (Вьетнам, Филиппины, Таиланд, Мексика и т.д.).
  2. Клиент по строке внутри QR кода идентифицирует принадлежность QR к платежной системе определенной страны. Рук-ва по идентификации для каждой системы предоставляется отдельно в отдельных секциях настоящего документа.

    Допускается вариант, при котором Клиент может не выполнять этот шаг, поскольку запрос на декодирование QR кода позволяет определить принадлежность QR определенной платежной системе.

  3. Содержимое внутри QR кода Клиенту нужно отправить в метод "Декодировать QR код". В ответ получить информацию о получателе (мерчанте) и информацию для расчета суммы списания (курс обмена местной валюты к валюте, в которой работает Клиент).
  4. Если плательщик согласен на проведение платежа, Клиент вызывает метод "Совершить платёж". Если плательщик не согласен на проведение платежа, Клиент вызывает метод "Отменить платёж". Шаг опционален.
  5. Если в результате совершения платежа получен статус PROCESSING, Клиенту необходимо запросить статус с использованием метода "Получить статус платежа".

Переводы по реквизитам

Порядок работы с сервисом переводов по реквизитам:

  1. Плательщик выбирает наименоваение получателя (банк, кошелек) из списка, который Клиент получить, вызвав метод "Получить список банков", вводит реквизит (номер телефона / номер счета / номер IBAN / номер карты и т.д.) и ФИ получателя.
  2. Клиент вызывает метод "Инициировать перевод по реквизитам". Получает ответ с подтверждением возможности совершить перевод и информацию для расчета суммы списания (курс обмена местной валюты к валюте, в которой работает Клиент). Клиент
  3. Плательщик вводит сумму перевода в валюте зачисления, Клиент рассчитывает сумму в валюте списания и ожидает действий от плательщика.
  4. Если плательщик согласен на совершение перевода, то Клиент вызывает метод "Совершить платёж". Если плательщик не согласен на проведение перевода, то Клиента вызывает метод "Отменить платёж".
  5. Если в результате совершения перевода пришёл статус PROCESSING, Клиенту необходимо запросить статус с использованием метода "Получить статус платежа".

QR Code

Описание запроса на декодирование QR кода и получения реквизитов получателя

Декодировать QR код

Authorizations:
bearerAuth
Request Body schema: application/json
text
required
string [ 0 .. 8000 ] characters

Отсканированный QR код

bankCurrency
string (Currency)
Enum: "RUB" "VND" "PHP" "UZS" "AZN" "AMD" "TJS" "LKR" "KRW" "THB" "TWD" "JPY" "SGD" "MNT" "KHR" "TRY" "ARS" "MXN" "USDT"

Трёхбуквенный код валюты, либо код криптовалюты

serviceId
integer <int64> (ServiceId)

Идентификатор сервиса. Выдаётся командой технической поддержки системы КПА.

Responses

Request samples

Content type
application/json
{
  • "text": "string",
  • "bankCurrency": "RUB",
  • "serviceId": 0
}

Response samples

Content type
application/json
{
  • "stId": 42,
  • "amount": 200.25,
  • "currency": "RUB",
  • "rate": 85.2445,
  • "merchantInfo": {
    },
  • "minimumAmount": 200.25,
  • "serviceId": 0,
  • "description": "Оплата на кассе"
}

Transfers

Описание запросов, связанных с инициализацией переводов по реквизитам

Получить список банков

Authorizations:
bearerAuth
path Parameters
serviceId
required
integer <int64> (ServiceId)

Уникальный числовой идентификатор сервиса перевода

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Инициировать перевод по реквизитам

Authorizations:
bearerAuth
Request Body schema: application/json
serviceId
required
integer <int64> (ServiceId)

Идентификатор сервиса. Выдаётся командой технической поддержки системы КПА.

bankCode
required
string

code из запроса getBanks

accountNumber
required
string

Номер счёта получателя

recipientName
required
string

Имя получателя

description
string

Описание перевода

object (UserInfo)

Responses

Request samples

Content type
application/json
{
  • "serviceId": 0,
  • "bankCode": "aub",
  • "accountNumber": 123456789,
  • "recipientName": "Ivan Ivanov",
  • "description": "string",
  • "recipientInfo": {
    }
}

Response samples

Content type
application/json
{
  • "stId": 42,
  • "currency": "RUB",
  • "rate": 85.2445
}

Payment

Описание запросов, относящихся к фазе совершения платежа

Совершить платёж/перевод

Authorizations:
bearerAuth
Request Body schema: application/json
stId
required
integer <int64> (StId) >= 0

ID платежа в системе КПА

bankId
required
string

ID платежа в системе банка

amount
required
number <decimal> (Amount) > 0

Сумма в единицах валюты, например VND. Точность 2 десятичных знака

currency
required
string (Currency)
Enum: "RUB" "VND" "PHP" "UZS" "AZN" "AMD" "TJS" "LKR" "KRW" "THB" "TWD" "JPY" "SGD" "MNT" "KHR" "TRY" "ARS" "MXN" "USDT"

Трёхбуквенный код валюты, либо код криптовалюты

bankAmount
required
number <decimal> (Amount) > 0

Сумма в единицах валюты, например VND. Точность 2 десятичных знака

object (UserInfo)

Responses

Request samples

Content type
application/json
{
  • "stId": 42,
  • "bankId": "test-id",
  • "amount": 200.25,
  • "currency": "RUB",
  • "bankAmount": 200.25,
  • "payerInfo": {
    }
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS"
}

Отменить платёж/перевод

Eсли плательщик отказался от совершения платежа/перевода. Можно вызвать только до вызова запроса pay

Authorizations:
bearerAuth
path Parameters
stId
required
string

ID транзакции в системе КПА

Responses

Получить статус платежа/перевода

Authorizations:
bearerAuth
path Parameters
stId
required
string

ID платежа в системе КПА

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS"
}