Documentation

Specification of interaction protocol between the Alif Bank system and Partners

providers agents invoices webcheckout merchants

1. Запрос Create:

Адрес: /api/emvqr/partner/invoiceqr/create

Заголовок: Token=hash_hmac(‘sha256’, user_id + amount + callback_url, password)

Password генерируется и передается приватно Партнеру со стороны Алиф

Запрос:

Имя поля Тип Значение Описание
user_id string uuid Генерируется и передается приватно Партнеру со стороны Алиф
amount integer integer Сумма QR-кода в дирамах
callback_url string string Адрес API партнёра, на который отправляются запросы подтверждения платежа и проверки статуса

Ответ:

Имя поля Тип Значение Описание
code integer numeric Код ответа
message string string Текст ответа
payload struct struct Структура с данными QR-кода
payload.qrLink string string Адрес QR-кода
payload.invoiceId string string ID QR-кода
  1. При создании QR-кода в запросе нужно заполнять поле callback_url. На этот адрес отправится колбэк с двумя действиями: action=pay, action=status.
  2. Список статус-кодов можно посмотреть в пункте 5;

Метод: POST

Пример запроса:

curl --location 'https://HOST/api/emvqr/partner/invoiceqr/create' \
--header 'Token: 2d7eb885b4a1c3127f3dde6a1469b68031cc8341696a7fd64ea90ee198673f12' \
--header 'Content-Type: application/json' \
--data '{
    "user_id": "bbff4aa6-c3d8-4083-bb1d- fffb6060a055",
    "amount": 1234,
    "callback_url": "https://PARTNER_ADDRESS/api/ qr/callback"
}'

Пример ответа: Метод: POST

{
    "code": 200,
    "message": "Успешно",
    "payload": {
        "qrLink": "https://HOST/api/mobi/v0/external/qr/?data=18880",
        "invoiceId": "18880"
    }
}

2. Запрос Pay:

Адрес: берётся из значения callback_url при создании QR-кода

Заголовок: Token=hash_hmac(‘sha256’, action + user_id + amount + invoiceId, password)

PASSWORD генерируется и передается приватно Партнеру со стороны Алиф

Запрос:

Имя поля Тип Значение Описание
action string “pay” оплата
user_id string uuid Генерируется и передается приватно Партнеру со стороны Алиф
amount integer integer Сумма QR-кода в дирамах
invoiceId string string ID QR-кода

Ответ:

Имя поля Тип Значение Описание
code integer numeric Код ответа
message string string Текст ответа
  1. action=pay отправится только один раз при оплате. Если API Партнера не принял по каким-то причинам, в течение 5-ти минут отправится на этот же адрес запрос с action=status.
  2. Список статус-кодов можно посмотреть в пункте 5;

Метод: POST

Пример запроса:

curl --location 'https://PARTNER_ADDRESS/api/qr/callback' \
--header 'Token: 0a3596a20c21d551d01b70abb2e2814f73e404c953b3e6dba5c92a39d6c21fa7' \
--header 'Content-Type: application/json' \
--data '{
    "action": "pay",
    "user_id": "bbff4aa6-c3d8-4083-bb1d- fffb6060a055",
    "amount": 1234,
    "invoiceId": 18880
}'

Пример ответа:

{
   "code": 200,
   "message": "Успешно"
}

3. Запрос Status:

Адрес: берётся из значения callback_url при создании QR-кода

Заголовок: Token=hash_hmac(‘sha256’, action + user_id + amount + invoiceId, password)

PASSWORD генерируется и передается приватно Партнеру со стороны Алиф

Запрос:

Имя поля Тип Значение Описание
action string “status” Проверка статуса платежа
user_id string uuid Генерируется и передается приватно Партнеру со стороны Алиф
amount integer integer Сумма QR-кода в дирамах
invoiceId string string ID QR-кода

Ответ:

Имя поля Тип Значение Описание
code integer numeric Код ответа
message string string Текст ответа
  1. Список статус-кодов можно посмотреть в пункте 5;

Метод: POST

Пример запроса:

curl --location 'https://PARTNER_ADDRESS/api/qr/callback' \
--header 'Token: 53ae182dd399098f2aa70babef4265492461efd622e64a78d40b48d1e75380c5' \
--header 'Content-Type: application/json' \
--data '{
    "action": "status",
    "user_id": "bbff4aa6-c3d8-4083-bb1d- fffb6060a055",
    "amount": 1234,
    "invoiceId": 18880
}'

Пример ответа:

{
  "code": 200,
  "message": "Успешно"
}

4. Запрос Cancel:

Адрес: /api/emvqr/partner/invoiceqr/cancel

Заголовок: Token=hash_hmac(‘sha256’, user_id + id, password)

PASSWORD генерируется и передается приватно Партнеру со стороны Алиф

Запрос:

Имя поля Тип Значение Описание
id integer integer Id-транзакций
user_id string uuid Генерируется и передается приватно Партнеру со стороны Алиф

Ответ:

Имя поля Тип Значение Описание
code integer numeric Код ответа
message string string Текст ответа

Метод: POST

Пример запроса:

curl --location 'https://HOST/api/emvqr/partner/invoiceqr/cancel' \
--header 'Token: 2d7eb885b4a1c3127f3dde6a1469b68031cc8341696a7fd64ea90ee198673f12' \
--header 'Content-Type: application/json' \
--data '{
    "user_id": "bbff4aa6-c3d8-4083-bb1d- fffb6060a055",
    "id": 1234
}'

Пример ответа:

{
   "code": 200,
   "message":"Транзакция успешно отменена"
   "txn_id": 0,
   "payload": null
}

5.Коды ответов Алифа:

code message
200 OK
208 Дублированный запрос
209 Повторный платеж
400 Неверный запрос
401 Доступ запрещен
404 Терминал не найден
405 Инвойс не найден
406 QR не найден
407 Агент не найден
408 Транзакция не найдена
500 Внутренняя ошибка системы

6. Коды ответов Партнёра:

code message
200 Успешно
400 Неверный запрос
404 Платёж не существует
410 Неуспешный платёж
500 Сервис временно не работает. Попробуйте отправить запрос позже