Download OpenAPI specification:
Документ описывает порядок взаимодействия платформы Клиента и платформы Carusell (система "КПА") в рамках осуществления платежей и переводов в пользу различных получателей (мерчантов, банков) с инициацией транзакции через сканирование QR кода (scan-to-pay, MPM) или перевод из приложения Клиента по реквизитам.
Для интеграции необходимо выполнить настройку безопасного канала связи и получить доступ к платформе Carusell.
Взаимодействие с API происходит по защищенному протоколу HTTPS с использованием взаимной TLS-аутентификации (mTLS).
Чтобы получить сертификат со стороны Carusell для доступа к продовому контуру, необходимо:
Для работы с тестовым контуром платформы сертификат не требуется.
Тестовый контур
Используйте следующие настройки:
Продовый контур
Для получения настроек доступа к продовому контуру Клиент направляет запрос по e-mail helpdesk@cyberpro.kg команде поддержки платформы Carusell.
Порядок работы с сервисом платежей с инициацией через сканирование QR (scan-to-pay):
Допускается вариант, при котором Клиент может не выполнять этот шаг, поскольку запрос на декодирование QR кода позволяет определить принадлежность QR определенной платежной системе.
Порядок работы с сервисом переводов по реквизитам:
VietQR — это универсальный стандарт генерации QR-кодов для переводов, развиваемый Национальным банком Вьетнама совместно с платежной системой NAPAS, что обеспечивает высокий уровень адаптации метода, т.е. поддерживается подавляющим большинством мерчантов Вьетнама. Подключая этот метод, Клиент получает возможность предложить своим пользователям мгновенные и удобные платежи через сканирование QR-кода в любых торговых точках страны без необходимости интеграции с каждым мерчантом отдельно.
Формат: TLV (Tag--Length--Value), стандарт EMVCo
Чтение: слева направо (Tag[2] + Length[2] + Value)
Пример:
00020101021138560010A0000007270126000697040701128888123456780208QRIBFTTA53037045802VN63042249
Разбивка:
00 02 01
01 02 11
38 56 0010A000000727...
53 03 704
58 02 VN
63 04 2249
Ключевые теги:
58 → страна 58 02 VN38 → платёжная система (контейнер)\внутри: 00 10 A000000727Правило:
Payload = VietQR, если:
58 = VN38 есть A000000727 (NAPAS)| Сценарий | Описание | Payload |
|---|---|---|
| Сценарий №1. Синхронный успех, код с суммой | Успешное декодирование QR ("Декодировать QR код") и получение синхронного ответа "Успех" на запрос "Совершить платёж" | 00020101021238540010A00000072701240006970436011010603632710208QRIBFTTA53037045802VN5407156629263043BAA |
| Сценарий №2. Синхронный успех, код без суммы | Тоже самое, как в Сценарии №1, но сумму для зачисления после декодирования вводит пользователь | 00020101021138560010A0000007270126000697040301120501290717340208QRIBFTTA53037045802VN6304C81E |
| Сценарий №3. Асинхронный успех | Успешное декодирование QR ("Декодировать QR код"), получение "PORCESSING" на запрос "Совершить платёж", получение финального статуса "Успех" через запрос "Получить статус платежа" | 00020101021238540010A00000072701240006970436011010498770500208QRIBFTTA53037045802VN540711971966304CACD |
| Сценарий №4. Асинхронный неуспех | Тоже самое, как в Сценарии №3, но финализация транзакции в "Неуспех" через запрос "Получить статус платежа" | 00020101021238420010A0000007270124000697043601101063765656540625000053037045802VN62080804taxi630472D8 |
| Сценарий №5. Заблокированный получатель | Получение ошибки 400 на запрос "Декодировать QR код" c текстом "ACCOUNT_DISABLED" | 00020101021238420010A0000007270124000697043601101063765656540625000053037045802VN62080804taxi630472D8 |
Лимиты на сумму транзакции: От 1 000 VND до 1 000 000 VND.
Таблица соответствия валюты списания (bankCurrency) и идентификатора сервиса (serviceId)
| Код валюты | Идентификатор сервиса |
|---|---|
| RUB | 37 |
| USD | 39 |
| USDT | 41 |
Валюта зачисления
Вьетнамский донг, код ISO 4217: VND (числовой 704)
Данные плательщика
Передавать не требуется (поле payerInfo)
Лимиты в продовой среде
ThaiQR (PromptPay) — национальный стандарт QR-платежей в Таиланде на базе EMVCo Merchant Presented Mode. QR-коды используются для оплаты у мерчантов (Bill Payment / Merchant Presented QR), переводов на мобильный номер, национальный ID, e-wallet и банковский счёт.
Формат: TLV (Tag--Length--Value), стандарт EMVCo
Чтение: слева направо (Tag[2] + Length[2] + Value)
Пример (Merchant / Bill Payment, фиксированная сумма):
00020101021230820016A0000006770101120115010753600037405021500000220066077703204611316260181X00000053037645406178.225802TH5918LIM TREND EMPORIUM6212070846113162630427E5
Разбивка (ключевые теги):
00 02 01 — формат нагрузки EMV QR01 02 12 — динамический QR30 82 ... — информация о счёте получателя (Bill Payment)30.00 16 A000000677010112 — AID PromptPay Bill Payment30.01 15 010753600037405 — идентификатор биллера (receiverProxyValue)30.02 15 000002200660777 — billReference130.03 20 4611316260181X000000 — billReference253 03 764 — валюта THB54 06 178.22 — сумма58 02 TH — страна Таиланд59 18 LIM TREND EMPORIUM — наименование получателя63 04 27E5 — CRC-16
Ключевые теги:
58 → страна 58 02 TH53 → валюта 53 03 764 (THB)29 / 30 → информация о счёте получателя (контейнер)54 → сумма (если отсутствует, сумму вводит плательщик)Правило:
Payload = ThaiQR, если:
58 = TH53 = 764 (THB)29 - P2P платёж, есть контейнер 30 - платёж мерчанту| Сценарий | Описание | Payload |
|---|---|---|
| Сценарий №1. Синхронный успех, код с суммой | Успешное декодирование QR ("Декодировать QR код") и получение синхронного ответа "Успех" на запрос "Совершить платёж" | 00020101021130700016A0000006770101120115010556001059500021300011100011120310081909761453037645406104.005802TH5921SMART WASH 24 COMPANY6304108C |
| Сценарий №2. Синхронный успех, код без суммы | Тоже самое, как в Сценарии №1, но сумму для зачисления после декодирования вводит пользователь | 00020101021230810016A00000067701011201150107536000315010214EXT010014085350320APIC1777454631729WUO31690016A00000067701011301030040214EXT010014085350420APIC1777454631729WUO5303764540535.005802TH630458D5 |
| Сценарий №3. Асинхронный успех | Успешное декодирование QR ("Декодировать QR код"), получение "PORCESSING" на запрос "Совершить платёж", получение финального статуса "Успех" через запрос "Получить статус платежа" | 00020101021230820016A000000677010112011501055360926419902150000022000755960320461131666018170000005303764540580.855802TH5918TESCO LOTUS CO LTD62120708461131666304BC28 |
| Сценарий №4. Асинхронный неуспех | Тоже самое, как в Сценарии №3, но финализация транзакции в "Неуспех" через запрос "Получить статус платежа" | 00020101021230820016A0000006770101120115010753600037401021500000220100001503204611316460181300000053037645406201.785802TH5907S HOTEL621207084611316463043CCF |
| Сценарий №5. Заблокированный получатель | Получение ошибки 400 на запрос "Декодировать QR код" c текстом "ACCOUNT_DISABLED" | 00020101021130670016A0000006770101120115010556103866388021012345678900310112233445553037645406103.005802TH5925CPF RESTAURANT AND FOOD C6304AB1D |
Лимиты на сумму транзакции: От 1 000 THB до 1 000 000 THB.
Таблица соответствия валюты списания (bankCurrency) и идентификатора сервиса (serviceId)
| Код валюты | Идентификатор сервиса |
|---|---|
| USDT | 43 |
Валюта зачисления
Тайский бат, код ISO 4217: THB (числовой 764)
Данные плательщика
| Поле | Описание |
|---|---|
id |
Уникальный идентификатор плательщика в системе Клиента |
firstName |
Имя (латиница) |
lastName |
Фамилия (латиница) |
dateOfBirth |
Дата рождения, формат |
phone |
Контактный телефон |
citizenship |
Гражданство, код ISO 3166-1 alpha-2 (например, TH) |
address |
Адрес |
documents |
Массив документов; обязателен хотя бы один документ поддерживаемого типа |
Обязательные поля в элементе documents (для выбранного документа):
| Поле | Описание |
|---|---|
type |
Тип документа (см. ниже) |
documentNumber |
Номер документа |
expiryDate |
Срок действия документа, формат YYYY-MM-DD |
Пример payerInfo:
{
"id": "user-id-1",
"firstName": "Ivan",
"lastName": "Ivanov",
"phone": "0891234567",
"dateOfBirth": "1990-01-01",
"citizenship": "TH",
"address": "Bangkok",
"documents": [
{
"type": "FOREIGN_PASSPORT",
"documentNumber": "FP-123",
"expiryDate": "2030-01-01"
}
]
}
Лимиты в продовой среде
QRPh — это национальный стандарт генерации QR-кодов для платежей, разработанный Центральным банком Филиппин (Bangko Sentral ng Pilipinas) и работающий на базе системы мгновенных переводов InstaPay. Данное решение обеспечивает полную совместимость (интероперабельность) между всеми участниками рынка: клиенты любых банков и электронных кошельков могут проводить платежи через единый QR-код, объединяя более 2 миллионов мерчантов по всей стране. Подключая этот метод, Клиент получает возможность предложить своим пользователям мгновенные (благодаря рельсам InstaPay), безопасные и удобные платежи через сканирование QR-кода, совершая платежи в адрес мерчантов, которым не обязательно устанавливать отдельные POS-терминалы.
Формат: TLV (Tag--Length--Value), стандарт EMVCo
Чтение: слева направо (Tag[2] + Length[2] + Value)
Пример:
00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319206753426176814387205030105204593253036085802PH5906BNNALU6002PH62380011ph.ppmi.p2m051921849279383389809686304495E
Разбивка:
00 02 01
01 02 11
28 60 0011ph.ppmi.p2m...
53 03 608
58 02 PH
59 06 BNNALU
60 02 PH
63 04 495E
Ключевые теги:
58 → страна: 58 02 PH
Внутри тега 28 (контейнер для платёжной системы / идентификатора мобильного кошелька) содержится ph.ppmi.p2m — это тоже указывает на использование стандарта QR Ph (P2M — Person-to-Merchant).
| Сценарий | Описание | Payload |
|---|---|---|
| Сценарий №1. Синхронный успех, код с суммой | Успешное декодирование QR ("Декодировать QR код") и получение синхронного ответа "Успех" на запрос "Совершить платёж" | 00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319206753426176814387205030105204593253036085802PH5906BNNALU6002PH62380011ph.ppmi.p2m051921849279383389809686304495E |
| Сценарий №2. Синхронный успех, код без суммы | Тоже самое, как в Сценарии №1, но сумму для зачисления после декодирования вводит пользователь | 00020101021127600012com.p2pqrpay0111DCPHPHM1XXX020899964403041386132124309995204601653036085802PH590712123126002as62510012com.p2pqrpay0519196610394270367411207081234567863048ACF |
| Сценарий №3. Асинхронный успех | Успешное декодирование QR ("Декодировать QR код"), получение "PORCESSING" на запрос "Совершить платёж", получение финального статуса "Успех" через запрос "Получить статус платежа" | 00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319210823416750568398505030105204601653036085802PH5912sissi9001all6015Current Address62380011ph.ppmi.p2m05192047785410353007360630480E4 |
| Сценарий №4. Асинхронный неуспех | Тоже самое, как в Сценарии №3, но финализация транзакции в "Неуспех" через запрос "Получить статус платежа" | 00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319211374533229394778405030105204893153036085802PH5923COINS TEST ACCT QR NAME6009Singapore62380011ph.ppmi.p2m051919748934463259281926304890C |
| Сценарий №5. Заблокированный получатель | Получение ошибки 400 на запрос "Декодировать QR код" c текстом "ACCOUNT_DISABLED" | 00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319211328787762566659305030105204076353036085802PH5909aaabbbccc6001162380011ph.ppmi.p2m0519196537252751202252863042EC4 |
Лимиты на сумму транзакции: От 1 000 PHP до 1 000 000 PHP.
Таблица соответствия валюты списания (bankCurrency) и идентификатора сервиса (serviceId)
| Код валюты | Идентификатор сервиса |
|---|---|
| RUB | 38 |
| USDT | 42 |
Валюта зачисления
Филиппинский песо, код ISO 4217: PHP (числовой 608)
Данные плательщика
Передавать не требуется (поле payerInfo)
Лимиты в продовой среде
| 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" "KZT" "USD" "USDT" Трёхбуквенный код валюты, либо код криптовалюты |
| serviceId | integer <int64> (ServiceId) Идентификатор сервиса. Выдаётся командой технической поддержки системы КПА. |
object (UserInfo) |
{- "text": "string",
- "bankCurrency": "RUB",
- "serviceId": 0,
- "payerInfo": {
- "firstName": "string",
- "lastName": "string",
- "middleName": "string",
- "phone": 18001234567,
- "addressCountry": "KZ",
- "address": "string",
- "zipcode": "string",
- "state": "string",
- "dateOfBirth": "2000-01-01",
- "birthPlace": "New York",
- "birthCountry": "KZ",
- "citizenship": "KZ",
- "documents": [
- {
- "type": "PASSPORT",
- "country": "KZ",
- "series": "string",
- "documentNumber": "string",
- "issuer": "string",
- "issuerCode": "string",
- "issueDate": "2020-01-01",
- "expiryDate": "2020-01-01"
}
], - "email": "string",
- "id": "string"
}
}{- "stId": 42,
- "amount": 200.25,
- "currency": "RUB",
- "rate": 85.2445,
- "merchantInfo": {
- "id": 4521,
- "name": "ООО \"Кофейня у реки\"",
- "country": "KZ",
- "city": "Moscow",
- "address": "Tverskaya, 1",
- "mcc": 5300
}, - "minimumAmount": 200.25,
- "serviceId": 0,
- "description": "Оплата на кассе"
}| serviceId required | integer <int64> (ServiceId) Идентификатор сервиса. Выдаётся командой технической поддержки системы КПА. |
| bankCode required | string code из запроса getBanks |
| accountNumber required | string Номер счёта получателя |
| recipientName required | string Имя получателя |
| description | string Описание перевода |
object (UserInfo) | |
object (UserInfo) |
{- "serviceId": 0,
- "bankCode": "aub",
- "accountNumber": 123456789,
- "recipientName": "Ivan Ivanov",
- "description": "string",
- "recipientInfo": {
- "firstName": "string",
- "lastName": "string",
- "middleName": "string",
- "phone": 18001234567,
- "addressCountry": "KZ",
- "address": "string",
- "zipcode": "string",
- "state": "string",
- "dateOfBirth": "2000-01-01",
- "birthPlace": "New York",
- "birthCountry": "KZ",
- "citizenship": "KZ",
- "documents": [
- {
- "type": "PASSPORT",
- "country": "KZ",
- "series": "string",
- "documentNumber": "string",
- "issuer": "string",
- "issuerCode": "string",
- "issueDate": "2020-01-01",
- "expiryDate": "2020-01-01"
}
], - "email": "string",
- "id": "string"
}, - "payerInfo": {
- "firstName": "string",
- "lastName": "string",
- "middleName": "string",
- "phone": 18001234567,
- "addressCountry": "KZ",
- "address": "string",
- "zipcode": "string",
- "state": "string",
- "dateOfBirth": "2000-01-01",
- "birthPlace": "New York",
- "birthCountry": "KZ",
- "citizenship": "KZ",
- "documents": [
- {
- "type": "PASSPORT",
- "country": "KZ",
- "series": "string",
- "documentNumber": "string",
- "issuer": "string",
- "issuerCode": "string",
- "issueDate": "2020-01-01",
- "expiryDate": "2020-01-01"
}
], - "email": "string",
- "id": "string"
}
}{- "stId": 42,
- "currency": "RUB",
- "rate": 85.2445
}| serviceId required | integer <int64> (ServiceId) Идентификатор сервиса. Выдаётся командой технической поддержки системы КПА. |
| cardNumber required | string^\d{13,19}$ Номер карты получателя |
| recipientName | string Имя получателя |
| description | string Описание перевода |
{- "serviceId": 0,
- "cardNumber": 123456789123456,
- "recipientName": "Ivan Ivanov",
- "description": "string"
}{- "stId": 42,
- "currency": "RUB",
- "rate": 85.2445
}| 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" "KZT" "USD" "USDT" Трёхбуквенный код валюты, либо код криптовалюты |
| bankAmount required | number <decimal> (BankAmount) > 0 Сумма зачисления в единицах валюты, например USD. Точность 2 десятичных знака. Должна рассчитываться по формуле amount / rate = bankAmount |
object (UserInfo) |
{- "stId": 42,
- "bankId": "test-id",
- "amount": 200.25,
- "currency": "RUB",
- "bankAmount": 200.25,
- "payerInfo": {
- "firstName": "string",
- "lastName": "string",
- "middleName": "string",
- "phone": 18001234567,
- "addressCountry": "KZ",
- "address": "string",
- "zipcode": "string",
- "state": "string",
- "dateOfBirth": "2000-01-01",
- "birthPlace": "New York",
- "birthCountry": "KZ",
- "citizenship": "KZ",
- "documents": [
- {
- "type": "PASSPORT",
- "country": "KZ",
- "series": "string",
- "documentNumber": "string",
- "issuer": "string",
- "issuerCode": "string",
- "issueDate": "2020-01-01",
- "expiryDate": "2020-01-01"
}
], - "email": "string",
- "id": "string"
}
}{- "status": "SUCCESS"
}