API-взаимодействие#
#
Для полноценной интеграции должны быть реализованы следующие методы:| Метод | Направление | Назначение |
|---|
| Status API | Rahmat → Партнер | Запрос текущего статуса транзакции |
| Refund API | Rahmat → Партнер | Оформление возврата |
| Reconciliation | Rahmat → Партнер | Ежедневная сверка транзакций |
| Fiscal Link | Rahmat → Партнер | Передача данных фискального чека |
| Callback | Rahmat → Партнер | Передача статуса платежа |
КОЛЛБЕК#
#
Направление вызова: Partner App Backend -> Rahmat.
После успешного списания (холдирования) средств система Партнера должны отправить на URL Rahmat POST-запрос с передачей следующих полей:| Поле | Описание | Обязательность |
|---|
| amount | Сумма списания в тийинах | Да |
| rahmat_trans_id | ID транзакции Rahmat (переданный в deeplink) | Да |
| partner_trans_id | Уникальный ID платежа в системе Партнера | Да |
| payment_time | Дата и время платежа в формате YYYY-dd-mm H:i:s | Да |
| rrn | RefNumber списания в процессинговой системе | Да |
| phone | Телефон плательщика | Да |
| pan | Маска карты / счёта плательщика | Да |
| pinfl | ПИНФЛ плательщика | Нет |
| name | ФИО плательщика | Нет |
• app_name – наименование приложения Партнера{
"amount": 15000000,
"rahmat_trans_id": "123",
"partner_trans_id": "3480454786",
"payment_time": "2024-02-01 21:44:11",
"rrn": "022073419992",
"phone": "998901234567",
"pan": "860031******7001",
"pinfl": "41102922370010",
"name": "BOTIROV ALISHER ALIMOVICH"
}
{
"success": true,
"data": {
"fiscal_url": "https://ofd.soliq.uz/epi?t=EP000000000001&r=1234&c=1234&s=1234"
}
}
Пример неуспешного ответа (поле error.details должно быть отображено плательщику на странице оплаты):{
"success": false,
"error": {
"code": "ERROR_EXPIRED",
"details": "Инвойс истек, запросите новый"
}
}
Если при отправке callback-запроса в ответе success: false, то необходимо отменить списание.Если при отправке запроса произошел таймаут или вернулся http status 500, то необходимо повторить попытку через 1 минуту. В случае 5 неуспешных попыток отправки необходимо заморозить транзакцию до выяснения.
ОТПРАВКА ФИСКАЛЬНОЙ ССЫЛКИ#
#
Направление вызова: Partner App Backend -> Rahmat
В ответе на callback-запрос не всегда может вернуться фискальная ссылка. В таких случаях система Rahmat доотправляет ссылку обычно в течение не более 6 часов. У системы Партнера должен быть метод для получения фискальной ссылки. В качестве partner_trans_id используется ID платежа в системе Партнера.POST {эндпоинт партнера}/fiscal
{
"partner_trans_id": "3480454786",
"fiscal_url": "https://ofd.soliq.uz/epi?t=EP000000000001&r=1234&c=1234&s=1234"
}
В случае успешного приема возвратить http-status 200. При ошибке – статус 4xx, в теле вернуть детали ошибки.
ВОЗВРАТ УСПЕШНОГО ПЛАТЕЖА#
#
Направление вызова: Rahmat -> Partner App Backend
Система Партнера должна предоставить метод для возврата ранее завершенной транзакции. В качестве partner_trans_id используется ID платежа в системе Партнера.Пример:
POST {эндпоинт партнера}/refund{
"partner_trans_id": "3480454786"
}
В случае успешного приема возвратить http-status 200. При ошибке – статус 4xx, в теле вернуть детали ошибки. В случае повторного обращение по уже отмененной транзакции – вернуть успешный ответ.
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПЛАТЕЖЕ#
#
Направление вызова: Rahmat -> Partner App Backend.
Система партнера должна предоставить метод для получения информации о транзакции по ID транзакции в системе Rahmat.| Поле | Описание | Обязательность |
|---|
| amount | Сумма списания в тийинах | Да |
| rahmat_trans_id | ID транзакции Rahmat (переданный в deeplink) | Да |
| partner_trans_id | Уникальный ID платежа в системе Партнера | Да |
| payment_time | Дата и время платежа в формате YYYY-dd-mm H:i:s | Да |
| rrn | RefNumber списания в процессинговой системе | Да |
| phone | Телефон плательщика | Да |
| pan | Маска карты / счёта плательщика | Да |
| pinfl | ПИНФЛ плательщика | Нет |
| name | ФИО плательщика | Нет |
| status | Статус транзакции | Да |
Справочник статусов#
#
| Статус | Описание | Финальный |
|---|
| draft | Созданная, но ещё не оплаченная транзакция | Нет |
| pending | Транзакция в процессе оплаты либо в неизвестном статусе | Нет |
| success | Оплата успешно выполнена | Да |
| refund | Транзакция отменена, средства возвращены | Да |
| error | Ошибка при списании средств с карты / счёта | Да |
Пример:
POST {эндпоинт партнера}/payment-info{
"partner_trans_id": "3480454786"
}
{
"amount": 15000000,
"rahmat_trans_id": "123",
"partner_trans_id": "3480454786",
"payment_time": "2024-02-01 21:44:11",
"rrn": "022073419992",
"phone": "998901234567",
"pan": "860031******7001",
"pinfl": "41102922370010",
"name": "BOTIROV ALISHER ALIMOVICH",
"status": "success"
}
ПРОВЕРКА ПЛАТЕЖА В RAHMAT#
#
Направление вызова: Partner App Backend -> Rahmat.
Входящие поля для поиска (отправлять одно из них)| Поле | Описание | Тип |
|---|
| rahmat_trans_id | ID платежа в системе Rahmat | integer |
| partner_trans_id | ID платежа в системе Партнёра | string |
| invoice_uuid | UUID инвойса (используется при получении данных для оплаты без вебвью) | string (uuid) |
{
"partner_trans_id": "4421344159"
}
{
"success": true,
"data": {
"id": 588812313,
"uuid": "7e8f71a9-9d6e-11f0-9a1b-00505680eaf6",
"status": "success",
"payment_amount": 11800000,
"total_amount": 11800000,
"payment_time": "2025-09-30 00:57:15",
"qr_url": "https://ofd.soliq.uz/epi?t=..",
"ps": "click",
"ps_id": "4421344159",
"receipt_url": "https://checkout.multicard.uz/check/7e8f71a9-9d6e-11f..",
"store": {
"tin": "123456789",
"title": "Sariq bola (Алгоритм)",
"surcharge_fee": "0.5",
"mcc": "6012",
"official_name": "\"MY SUPER COMPANY\" MChJ",
"logo": "https://cdn.multicard.uz/storage/d16/bfba392667c075.."
}
}
}
Справочник статусов инвойса Rahmat| Статус | Описание | Финальный |
|---|
| draft | Созданный инвойс, доступен для оплаты | Нет |
| progress, billing | Транзакция в процессе оплаты либо в неизвестном статусе | Нет |
| success | Оплата успешно выполнена | Да |
| cancelled | Инвойс просрочен или отменён | Да |
| revert | Транзакция отменена, средства возвращены | Да |
| error | Ошибка при оплате | Да |
СВЕРКА ИТОГОВ#
#
Направление вызова: Rahmat -> Partner App Backend.
Партнер должен предоставить метод для получения списка успешных транзакций за заданный период.
GET {эндпоинт партнера}/report?date_from=2025-01-01 00:00:00&date_to=2025-02-01 00:00:00{
"stat": {
"count": 2,
"amount": 200000
},
"list": [
{
"rahmat_trans_id": 1111,
"partner_trans_id": 222222,
"payment_time": "2025-01-01 15:02:13",
"amount": 100000
},
{
"rahmat_trans_id": 1112,
"partner_trans_id": 222223,
"payment_time": "2025-01-02 17:02:13",
"amount": 100000
}
]
}
SCANPAY#
#
Направление вызова: Rahmat -> Partner App Backend
Данный метод предназначен для оплаты по QR/Bar-коду, сформированному в приложении партнера. Мерчант (кассир) проводит считывание сформированного в приложении Партнера QR-кода и передает его в систему Rahmat для списания средств.
Код должен состоять из цифр, первые 3 цифры идентифицируют приложение Партнера и должны быть уникальными для данного приложенияПример запроса:
POST {эндпоинт пар тнера}/scanpay{
"amount": 15000000,
"rahmat_trans_id": "123",
"token": "3480454702207341999286",
"store": {
"title": "Sariq bola (Алгоритм)",
"tin": "123456789",
"official_name": "\"MY SUPER COMPANY\" MChJ",
"logo": "https://cdn.multicard.uz/storage/d16/bfba392667c075.."
}
}
Ответ должен быть идентичным коллбэк-запросуModified at 2026-02-16 09:41:26