1. Документация
Rahmat: Интеграция приложений
  • Документация
    • Общие сведения
    • Обзор интеграции
    • Пользовательские сценарии
    • Техническая схема интеграции
    • API-методы
    • Тестирование и запуск
    • Опросник для подключения и запуска
  1. Документация

Пользовательские сценарии

Основной сценарий#

1. Сканирование QR-кода#

Пользователь сканирует QR-код Rahmat одним из следующих способов:
стандартной камерой мобильного устройства;
встроенным сканером в приложении Партнера.
Пример QR-кода Rahmat
Дальнейший сценарий зависит от способа сканирования и формата ссылки, содержащейся в QR-коде.

2. Определение сценария оплаты#

После сканирования возможны два основных сценария:
1.
Оплата через платежную страницу Rahmat.
2.
Прямая оплата в приложении Партнера без открытия платежной страницы Rahmat.

2.1. Оплата через платежную страницу Rahmat#

Этот сценарий используется, если:
QR-код отсканирован стандартной камерой устройства;
ссылка из QR-кода открыта во внешнем браузере;
для обработки ссылки требуется открыть страницу Rahmat;
прямая оплата по инвойсу не поддерживается приложением Партнера.

2.2. Прямая оплата без открытия платежной страницы Rahmat#

Этот сценарий может использоваться, если:
QR-код отсканирован встроенным сканером приложения Партнера;
QR-код содержит ссылку на инвойс Rahmat;
приложение Партнера поддерживает получение информации о платеже через API Rahmat;
платеж находится в статусе draft.
В этом сценарии платежная страница Rahmat и WebView не открываются. Пользователь сразу переходит к подтверждению оплаты внутри приложения Партнера.

3. Оплата через платежную страницу Rahmat#

3.1. Открытие страницы Rahmat#

Открывается платежная страница Rahmat с информацией о платеже.
В зависимости от сценария Пользователь может:
проверить наименование торговой точки;
проверить или указать сумму платежа;
выбрать платежное приложение;
перейти к оплате.

3.2. Переход к Партнеру#

Пользователь выбирает приложение Партнера.
Rahmat формирует согласованный Deeplink и передает в нем параметры платежа.
В зависимости от конфигурации Партнера открывается:
экран оплаты в мобильном приложении;
мобильная страница Web Checkout.

3.3. Подтверждение оплаты#

В интерфейсе Партнера Пользователь:
1.
Проверяет параметры платежа.
2.
Выбирает карту, счет или другой источник средств.
3.
Подтверждает операцию.
Партнер выполняет списание или холдирование денежных средств.

4. Прямая оплата без открытия платежной страницы Rahmat#

Если QR-код отсканирован встроенным сканером приложения Партнера, приложение должно извлечь из него ссылку и проверить ее формат.
Для прямой оплаты используется ссылка на инвойс Rahmat следующего вида:
https://app.rhmt.uz/invoice/{invoice_uuid}
Где {invoice_uuid} — UUID инвойса в системе Rahmat.

4.1. Получение информации о платеже#

Приложение Партнера извлекает invoice_uuid из ссылки и отправляет запрос в метод проверки платежа в Rahmat.
Пример передаваемых данных:
{
  "invoice_uuid": "d5485789-ee4b-11f0-9a1b-00505680eaf6"
}

4.2. Проверка ответа Rahmat#

Перед проведением оплаты Партнер должен проверить:
наличие платежа;
статус платежа;
сумму платежа;
идентификатор платежа Rahmat;
информацию о торговой точке.
Оплату разрешается проводить только при статусе:
draft
Если платеж имеет другой статус, Партнер не должен выполнять списание.
Для проведения оплаты необходимо использовать:
значение total_amount в качестве итоговой суммы списания;
значение id в качестве rahmat_trans_id при отправке Callback.

4.3. Отображение экрана оплаты Партнера#

После успешной проверки инвойса приложение Партнера открывает собственный экран подтверждения оплаты.
Платежная страница Rahmat и WebView в этом сценарии не открываются.
На экране Партнера должны отображаться:
логотип Rahmat;
наименование торговой точки;
сумма и валюта платежа;
источник списания;
кнопка подтверждения оплаты.

4.4. Подтверждение операции#

Пользователь:
1.
Проверяет информацию о платеже.
2.
Выбирает карту, счет или другой источник средств.
3.
Подтверждает операцию.
Партнер выполняет списание или холдирование денежных средств и отправляет Callback в Rahmat.
Повторное сканирование того же QR-кода или повторное открытие экрана не должно приводить к повторному списанию.

5. Завершение платежа#

После успешного списания или холдирования Партнер должен:
1.
Отправить серверный Callback в Rahmat.
2.
Получить подтверждение успешной обработки Callback.
3.
Отобразить Пользователю результат операции.
4.
Перенаправить Пользователя по return_url, если этот параметр был передан.
Rahmat обрабатывает Callback и обновляет статус платежа.
В сценарии оплаты через платежную страницу Rahmat Пользователь возвращается по адресу return_url на результирующую страницу Rahmat.
В сценарии прямой оплаты без открытия платежной страницы Rahmat результат может отображаться непосредственно в приложении Партнера.
Callback является серверным запросом и не зависит от перенаправления Пользователя. Закрытие приложения, браузера или WebView не должно препятствовать отправке Callback.

Альтернативные сценарии#

Сценарий A. Приложение Партнера установлено#

При выборе Партнера на платежной странице Rahmat операционная система обрабатывает Universal Link, App Link или кастомную URI-схему и открывает экран оплаты в мобильном приложении Партнера.
Приложение должно:
1.
Получить параметры из Deeplink.
2.
Проверить обязательные параметры.
3.
Отобразить информацию о платеже.
4.
Предложить Пользователю подтвердить операцию.

Сценарий B. Приложение Партнера не установлено, но доступен Web Checkout#

Если мобильное приложение не установлено, Пользователь перенаправляется на адаптированную для мобильных устройств страницу Web Checkout Партнера.
Web Checkout должен поддерживать следующий сценарий:
1.
Отображение параметров платежа.
2.
Выбор способа оплаты.
3.
Подтверждение операции.
4.
Отправку Callback в Rahmat.
5.
Возврат Пользователя по return_url.

Сценарий C. Приложение и Web Checkout недоступны#

Если приложение Партнера не установлено и Web Checkout отсутствует, Пользователю отображается предложение установить приложение.
Перенаправление выполняется по предоставленной Партнером ссылке:
в App Store для iOS;
в Google Play для Android.
После установки приложения Пользователь должен повторно инициировать оплату.
Платеж не должен считаться успешным до получения и успешной обработки Callback от Партнера.

Сценарий D. QR-код отсканирован внутри приложения Партнера#

Если QR-код отсканирован встроенным сканером приложения Партнера, приложение должно определить формат полученной ссылки.
Возможны два варианта.

Вариант D1. Ссылка содержит инвойс Rahmat#

Если ссылка соответствует формату:
https://app.rhmt.uz/invoice/{invoice_uuid}
Партнер может провести прямую оплату без открытия платежной страницы Rahmat и WebView.
Для этого Партнер должен:
1.
Извлечь invoice_uuid.
2.
Получить информацию о платеже через API Rahmat
3.
Проверить, что платеж находится в статусе draft.
4.
Использовать total_amount как сумму списания.
5.
Использовать id как rahmat_trans_id.
6.
Открыть собственный экран подтверждения оплаты.
7.
После списания отправить Callback в Rahmat.

Вариант D2. Ссылка не поддерживает прямую оплату#

Если ссылка не соответствует формату прямой оплаты, но относится к разрешенному домену Rahmat, приложение Партнера должно открыть ее во WebView.
WebView должен передавать согласованный User-Agent с названием и версией приложения Партнера.

Сценарий E. Инвойс недоступен для оплаты#

Прямая оплата не должна выполняться, если:
инвойс не найден;
инвойс находится в статусе, отличном от draft;
срок действия инвойса истек;
сумма платежа отсутствует или некорректна;
Rahmat вернул ошибку;
результат проверки инвойса не определен из-за сетевой ошибки.
В этом случае Партнер должен:
не выполнять списание;
показать Пользователю понятное сообщение;
предоставить возможность закрыть экран или повторить проверку, если повторная попытка допустима;
не создавать новую транзакцию без повторного подтверждения Пользователем.
Modified at 2026-08-20 13:04:46
Previous
Обзор интеграции
Next
Техническая схема интеграции
Built with