NAV
HTTP cURL

Введение

Общая информация

Универсальная платформа приема платежей ATMOS позволяет мерчантам интегрировать свой сайт или мобильное приложение к платежнему шлюзу в целях организации приема платежей с банковских карт UzCard и Humo. Интеграция с платежной платформой ATMOS возможна следующими путями:

Начало работы

API работает по протоколу REST, формат всех сообщений - JSON. Для начала работы с API, мерчанту необходимо получить от ATMOS следующие данные:

Также, перед началом работы, необходимо ознакомиться с принципом действия Callback API.

Тестовые данные

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

Авторизация в API

Для работы с ATMOS API необходимо получить токен доступа, который устанавливается в заголовки каждого запроса и служит уникальным идентификатором при проведении платежных операций. Ниже приведены инструкции по получению токена доступа к API.

Получение токена

Для получения bearer-токена:

curl --request POST \
  --url https://partner.atmos.uz/token \
  --header 'Authorization: Basic Base64(consumer-key:consumer-secret) \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials
POST /token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic Base64(consumer-key:consumer-secret)
Host: partner.atmos.uz
Content-Length: 29

//form-data
grant_type=client_credentials

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

{
    "access_token": "<access_token>",
    "scope": "am_application_scope default",
    "token_type": "Bearer",
    "expires_in": 2525
}

HTTP Request

POST https://partner.atmos.uz/token

Принимает в качестве параметра зашифрованную строку в формате base64 по формуле - Base64(consumer_key + ':' + consumer_secret). В ответе сервера будет возвращен токен доступа, который действителен в течение 3600 секунд(1ч.).

Обновление токена

Для обновления bearer-токена:

curl --request POST \
  --url https://partner.atmos.uz/token \
  --header 'Authorization: Basic Base64(consumer-key:consumer-secret) \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials
  --data refresh_token=<access_token>
POST /token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic Base64(consumer-key:consumer-secret)
Host: partner.atmos.uz
Content-Length: 29

//form-data
grant_type=client_credentials
refresh_token=<access_token>

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

{
    "access_token": "<access_token>",
    "scope": "am_application_scope default",
    "token_type": "Bearer",
    "expires_in": 2525
}

HTTP Request

POST https://partner.atmos.uz/token

Имеет аналогичный функционал с преждним методом, за исключением того, что продлевает срок действия уже выданного токена.

Отзыв токена

Для отзыва bearer-токена:

curl --request POST \
  --url https://partner.atmos.uz/revoke \
  --header 'Authorization: Basic Base64(consumer-key:consumer-secret) \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data token=<access_token>
POST /revoke HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic Base64(consumer-key:consumer-secret)
Host: partner.atmos.uz
Content-Length: 29

//form-data
token=<access_token>

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

{
    "access_token": "<access_token>",
    "scope": "am_application_scope default",
    "token_type": "Bearer",
    "expires_in": 2525
}

HTTP Request

POST https://partner.atmos.uz/revoke

Отменяет действие уже выданного токена.

Оплаты

API ATMOS позволяет проводить оплаты следующими путями:

  1. Путем отправки одноразового кода подтверждения при каждом платеже держателю карты;
  2. Через привязку карты к мерчанту, для дальнейших списаний без надобности подтверждения и ввода реквизитов.

Каждый запрос(для эндпоинтов раздела "Оплаты") может содержать в своем теле необязательное поле lang, для выбора языка получаемых текстовых данных от сервера.

Для поля lang являются допустимыми значения: uz, ru, en.

В теле каждого ответа(для эндпоинтов раздела "Оплаты") содержится объект result с полями:

Создание транзакции

Запрос:

curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/create \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
   "amount": 5000000,
   "account": "12345",
     "terminal_id": "XXXXXXXX",
   "store_id": "XXXX",
   "lang": "ru"
}'
POST /merchant/pay/create HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 123

{
   "amount": 5000000,
   "account": "12345",
     "terminal_id": "XXXXXXXX",
   "store_id": "XXXX",
   "lang": "ru"
}

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "transaction_id": 111111,
    "store_transaction": {
        "success_trans_id": null,
        "trans_id": 222222,
        "store": {
            "id": 0000,
            "name": "Store name",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "00000000",
        "account": "000000000",
        "amount": 5000000,
        "confirmed": false,
        "prepay_time": null,
        "confirm_time": null,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": null,
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": null,
        "status_code": null,
        "status_message": null
    }
}

Создает в системе черновик транзакции для дальнейшего пред-подтверждения и финального подтверждения, и возвращает номер созданной операции.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/create

Параметры запроса

Параметр Описание Обязательность
amount Сумма платежа в тиинах да
account Идентификатор платежа да
terminal_id id терминала мерчанта нет
store_id id мерчанта да
lang язык для ответа сервера нет

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction объект с детализацией по транзакции
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id в данном случае null
- status_code в данном случае null
- status_message в данном случае null

(OFD) Создание транзакции

Запрос:

curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/create/checkout-ofd \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
   "amount": 5000000,
   "account": "12345",
     "terminal_id": "XXXXXXXX",
   "store_id": "XXXX",
   "lang": "ru",
   "ofd_items" : [
        {
            "ofd_code" : "XXXXXXXXX",
            "name" : "product name 1",
            "amount" : 300000
        },
        {
            "ofd_code" : "XXXXXXXXX",
            "name" : "product name 2",
            "amount" : 200000
        }
    ]
    }'
POST /merchant/pay/create/checkout-ofd HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 123

{
   "amount": 5000000,
   "account": "12345",
     "terminal_id": "XXXXXXXX",
   "store_id": "XXXX",
   "lang": "ru",
   "ofd_items" : [
        {
            "ofd_code" : "XXXXXXXXX",
            "name" : "product name 1",
            "amount" : 300000
        },
        {
            "ofd_code" : "XXXXXXXXX",
            "name" : "product name 2",
            "amount" : 200000
        }
    ]
}

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "transaction_id": 111111,
    "store_transaction": {
        "success_trans_id": null,
        "trans_id": 222222,
        "store": {
            "id": 0000,
            "name": "Store name",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "00000000",
        "account": "000000000",
        "amount": 5000000,
        "confirmed": false,
        "prepay_time": null,
        "confirm_time": null,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": null,
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": null,
        "status_code": null,
        "status_message": null
    }
}

Является расширением предыдущего метода /merchant/pay/create (Создание транзакции). Используется, когда необходимо создать транзакцию с детализацией OFD и сформировать инвойс для оплаты на платежной странице (см. раздел "Альтернативные виды оплаты").

HTTP Request

POST https://partner.atmos.uz/merchant/pay/create/checkout-ofd

Параметры запроса

Параметр Описание Обязательность
amount Сумма платежа в тиинах да
account Идентификатор платежа да
terminal_id id терминала мерчанта нет
store_id id мерчанта да
lang язык для ответа сервера нет
ofd_items массив объектов Ofd item да
-ofd_code ИКПУ код товара да
-name Название товара да
-amount Стоимость товара в тиинах да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction объект с детализацией по транзакции
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id в данном случае null
- status_code в данном случае null
- status_message в данном случае null

Пред-подтверждение транзакции

Запрос:

POST merchant/pay/pre-apply HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access_token>
Host: partner.atmos.uz
Content-Length: 102

{
    "card_token": "<card-token>",
    "store_id": 0000,
    "transaction_id": 00000
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/pre-apply \
  --header 'Authorization: <access_token \
  --header 'Content-Type: application/json' \
  --data '{
    "card_token": "<card-token>",
    "store_id": 0000,
    "transaction_id": 00000
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    }
}

Принимает номер созданной транзакции и подготавливает ее к списанию средств. В случае передачи в метод номера и срока действия карты, высылает одноразовый sms-код для подтверждения транзакции держателю карты.

  1. Для списания по одноразовому SMS-коду подтверждения используйте поля card_number и expiry.

  2. Для списания по ранее привязанной к сервису карте, достаточно использовать поле card_token без card_number и expiry.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/pre-apply

Параметры запроса

Параметр Описание Обязательность
card_token Токен карты +/-
card_number Номер карты +/-
expiry срок действия карты (YYmm) +/-
store_id id мерчанта(store) да
transaction_id номер созданной прежде транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера

Подтверждение транзакции

Запрос:

POST /merchant/pay/apply HTTP/1.1
Content-Type: application/json
Authorization: Bearer Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 63

{
    "transaction_id": 00000,
    "otp": 111111,
    "store_id": 0000
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/apply \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "transaction_id": 00000,
    "otp": 111111,
    "store_id": 0000
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "store_transaction": {
        "success_trans_id": 0000000,
        "trans_id": 11111,
        "store": {
            "id": 0000,
            "name": "XXXXX",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "00000000",
        "account": "0001",
        "amount": 5000000,
        "confirmed": true,
        "prepay_time": 1656326498000,
        "confirm_time": 1656326529324,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": null,
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": "XXXXXX",
        "status_code": "0",
        "status_message": "Success"
    }
}

Подтверждает транзакцию и списыввет средства с карты на терминал мерчанта.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/apply

Параметры запроса

Параметр Описание Обязательность
otp Код из sms да
store_id id мерчанта да
transaction_id номер созданной прежде транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction объект с детализацией по транзакции
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции

Создание мультитранзакции

Запрос:

POST /merchant/bulk/pay/create HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 208

{
    "store_id": <store-id>,
    "params": [
        {
            "account": "user_1",
            "amount": 50000,
      "details": "Для услуги 1"
        },
        {
            "account": "user_1",
            "amount": 100000,
      "details": "Для услуги 1"
        }
    ]
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/bulk/pay/create \
  --header 'Authorization: <access_token \
  --header 'Content-Type: application/json' \
  --data '{
    "store_id": <store-id>,
    "params": [
        {
            "account": "user_1",
            "amount": 50000,
      "details": "Для услуги 1"
        },
        {
            "account": "user_1",
            "amount": 100000,
      "details": "Для услуги 1"
        }
    ]
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "transaction_id": [111111, 222222],
    "store_transactions": [
        {
            "success_trans_id": null,
            "trans_id": 111111,
            "store": {
                "id": 0000,
                "name": "Store name",
                "desc": "",
                "logo": null,
                "ga_id": null
            },
            "terminal_id": "00000000",
            "account": "000000000",
            "amount": 50000,
            "confirmed": false,
            "prepay_time": null,
            "confirm_time": null,
            "label": {
                "type_id": 64,
                "label_ru": "Номер инвойса",
                "label_uz": "Invoys raqami",
                "label_en": "Number of Invoice"
            },
            "details": "Для услуги 1",
            "commission_value": "0",
            "commission_type": "0",
            "total": 50000,
            "card_id": null,
            "status_code": null,
            "status_message": null
        },
        {
            "success_trans_id": null,
            "trans_id": 222222,
            "store": {
                "id": 0000,
                "name": "Store name",
                "desc": "",
                "logo": null,
                "ga_id": null
            },
            "terminal_id": "00000000",
            "account": "000000000",
            "amount": 50000,
            "confirmed": false,
            "prepay_time": null,
            "confirm_time": null,
            "label": {
                "type_id": 64,
                "label_ru": "Номер инвойса",
                "label_uz": "Invoys raqami",
                "label_en": "Number of Invoice"
            },
            "details": "Для услуги 2",
            "commission_value": "0",
            "commission_type": "0",
            "total": 100000,
            "card_id": null,
            "status_code": null,
            "status_message": null
        }
    ]
}

Создает в системе черновик мультитранзакции для дальнейшего пред-подтверждения и финального подтверждения, и возвращает номер созданной операции. Позволяет произвести несколько оплат(в т.ч. на разные терминалы) в рамках одного списания.

HTTP Request

POST https://partner.atmos.uz/merchant/bulk/pay/create

Параметры запроса

Параметр Описание Обязательность
amount Сумма платежа в тиинах да
params Массив данных создаваемых транзакций да
- account Идентификатор платежа да
- terminal_id id терминала мерчанта нет
- store_id id мерчанта(store) да
- lang язык для ответа сервера нет

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction массив объектов с детализацией по транзакции
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id в данном случае null
- status_code в данном случае null
- status_message в данном случае null

Пред-подтверждение мультитранзакции

Запрос:

POST merchant/bulk/pay/pre-apply HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access_token>
Host: partner.atmos.uz
Content-Length: 102

{
    "card_token": "<card-token>",
    "store_id": 0000,
    "transaction_id": [00000, 11111]
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/bulk/pay/pre-apply \
  --header 'Authorization: <access_token \
  --header 'Content-Type: application/json' \
  --data '{
    "card_token": "<card-token>",
    "store_id": 0000,
    "transaction_id": [00000, 11111]
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    }
}

Принимает номер созданной мультитранзакции и подготавливает ее к списанию средств. В случае передачи в метод номера и срока действия карты, высылает одноразовый sms-код для подтверждения транзакции держателю карты.

  1. Для списания по одноразовому SMS-коду подтверждения используйте поля card_number и expiry.

  2. Для списания по ранее привязанной к сервису карте, достаточно использовать поле card_token без card_number и expiry.

HTTP Request

POST https://partner.atmos.uz/merchant/bulk/pay/pre-apply

Параметры запроса

Параметр Описание Обязательность
card_token Токен карты +/-
card_number Номер карты +/-
expiry срок действия карты (YYmm) +/-
store_id id мерчанта(store) да
transaction_id номер созданной прежде транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера

Запрос:

curl --request POST \
  --url https://partner.atmos.uz/merchant/bulk/pay/create \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "store_id": <store-id>,
    "params": [
        {
            "account": "user_1",
            "amount": 50000,
      "details": "Для услуги 1"
        },
        {
            "account": "user_1",
            "amount": 100000,
      "details": "Для услуги 1"
        }
    ]
}'

Подтверждение мультитранзакции

Запрос:

POST merchant/bulk/pay/apply HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 63

{
  "store_id": 000,
  "otp": "111111",
  "transaction_id": [11111, 22222]
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/bulk/pay/apply \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "store_id": 000,
  "otp": "111111",
  "transaction_id": [11111, 22222]
}
'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "store_transaction": [
        {
            "success_trans_id": 2728805,
            "trans_id": 45702,
            "store": {
                "id": 000,
                "name": "Store name",
                "desc": "",
                "logo": null,
                "ga_id": null
            },
            "terminal_id": "7777777",
            "account": "user_1",
            "amount": 50000,
            "confirmed": true,
            "prepay_time": 1635828973000,
            "confirm_time": 1635829043427,
            "label": {
                "type_id": 49,
                "label_ru": "Номер инвойса",
                "label_uz": "Invoys raqami",
                "label_en": "Invoice number"
            },
            "details": "Для услуги 1",
            "commission_value": "0",
            "commission_type": "0",
            "total": 50000,
            "card_id": "<card-id>",
            "status_code": "0",
            "status_message": "Success"
        },
        {
            "success_trans_id": 2728806,
            "trans_id": 45703,
            "store": {
                "id": 271,
                "name": "Store name",
                "desc": "",
                "logo": null,
                "ga_id": null
            },
            "terminal_id": "7777777",
            "account": "user_1",
            "amount": 100000,
            "confirmed": true,
            "prepay_time": 1635828973000,
            "confirm_time": 1635829043432,
            "label": {
                "type_id": 49,
                "label_ru": "Номер инвойса",
                "label_uz": "Invoys raqami",
                "label_en": "Invoice number"
            },
            "details": "Для услуги 2",
            "commission_value": "0",
            "commission_type": "0",
            "total": 100000,
            "card_id": "<card-id>",
            "status_code": "0",
            "status_message": "Success"
        }
    ]
}

Подтверждает мультитранзакцию и списыввет средства с карты на терминалы мерчанта(store).

HTTP Request

POST https://partner.atmos.uz/merchant/bulk/pay/apply

Параметры запроса

Параметр Описание Обязательность
otp Код из sms да
store_id id мерчанта да
transaction_id номер созданной прежде транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction массив объектов с детализацией по транзакциям
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции

(OFD) Подтверждение транзакции с отправкой данных ИКПУ товаров

Запрос:

POST /merchant/pay/confirm-with-ofd-list HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
x-jwt-assertion: ---
Content-Length: 359

{
            "store_id": 7659,
            "transaction_id": 67665,
            "otp": "111111",
            "ofd_items": [
                {
                    "ofdCode": "222222",
                    "amount": 100000
                },
                {
                    "ofdCode": "33333",
                    "amount": 40000
                }
            ]
        }
curl --location 'https://partner.atmos.uz/merchant/pay/confirm-with-ofd-list' \
--header 'x-jwt-assertion: ---' \
--header 'Content-Type: application/json' \
--data '{
            "store_id": 7659,
            "transaction_id": 67665,
            "otp": "111111",
            "ofd_items": [
                {
                    "ofdCode": "222222",
                    "amount": 100000
                },
                {
                    "ofdCode": "33333",
                    "amount": 40000
                }
            ]
        }'

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

{
   "result": {
       "code": "STPIMS-ERR-092",
       "description": "Транзакция закрыта"
   },
   "store_transaction": {
            "success_trans_id": 0123456,
            "trans_id": 67665,
            "store": {
                "id": 1111,
                "name": "<Store name>",
                "desc": "",
                "logo": null,
                "ga_id": null
            },
            "terminal_id": "00000000",
            "account": "9989999999999",
            "amount": 140000,
            "confirmed": true,
            "prepay_time": 1677588413000,
            "confirm_time": 1677588425000,
            "label": {
                "type_id": 49,
                "label_ru": "Номер инвойса",
                "label_uz": "Invoys raqami",
                "label_en": "Invoice number"
            },
            "details": null,
            "commission_value": "0",
            "commission_type": "0",
            "total": 100000,
            "card_id": null,
            "status_code": "0",
            "status_message": "Success",
            "ofd_url": "https://ofd.atmos.uz/api/ofd/eEw5UE5EK2N0L3ZzbkpjMk11RGYzdz08"
        }
}

Подтверждает созданную ранее транзакцию и списывает средства с карты на терминал мерчанта, отличается от родительского метода тем, что в теле запроса принимает данные о товарах с их стоимостью и ИКПУ в объекте ofd_items. По итогу возвращает фискальный чек к транзакции.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/confirm-with-ofd-list

Параметры запроса

Параметр Описание Обязательность
store_id id мерчанта да
transaction_id номер созданной прежде транзакции да
otp код подтверждения транзакции да
ofd_items массив объектов по товарам
- ofdCode ИКПУ товара
- amount стоимость товара(тийин)

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction массив с детализацией по транзакциям
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции
- ofd_url ссылка на фискальный чек

(OFD) Подтверждение транзакции с генерацией фискального чека

Запрос:

POST /merchant/pay/apply-ofd HTTP/1.1
Content-Type: application/json
Authorization: Bearer Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 63

{
    "transaction_id": 00000,
    "otp": 111111,
    "store_id": 0000
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/apply-ofd \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "transaction_id": 00000,
    "otp": 111111,
    "store_id": 0000
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "store_transaction": {
        "success_trans_id": 0000000,
        "trans_id": 11111,
        "store": {
            "id": 0000,
            "name": "XXXXX",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "00000000",
        "account": "0001",
        "amount": 5000000,
        "confirmed": true,
        "prepay_time": 1656326498000,
        "confirm_time": 1656326529324,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": null,
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": "XXXXXX",
        "status_code": "0",
        "status_message": "Success"
    },
  "ofd_url": "http://test.ofd.atmos.uz/api/ofd/0000000"
}

Подтверждает транзакцию и списывает средства с карты на терминал мерчанта, отличается от родительского метода тем, что по итогу генерирует возвращает ссылку на фискальный чек(OFD)

HTTP Request

POST https://partner.atmos.uz/merchant/pay/apply-ofd

Параметры запроса

Параметр Описание Обязательность
otp Код из sms да
store_id id мерчанта да
transaction_id номер созданной прежде транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction объект с детализацией по транзакции
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции
- ofd_url ссылка на фискальный чек

Повторный запрос кода подтверждения

Запрос:

POST /merchant/pay/otp-resend HTTP/1.1
Content-Type: application/json
Authorization: Bearer 9281a6ab-c963-3c1c-9d95-dbed95db955c
Host: api.atmos.uz
Content-Length: 28

{
    "transaction_id": 00001
}
curl --request POST \
  --url https://api.atmos.uz/merchant/pay/otp-resend \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <access-token>' \
  --data '{
    "transaction_id": 10000
}'

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

{
  "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "transaction_id": 10000
}

Переотправляет SMS-код подтверждения держателю карты.

HTTP Request

POST https://api.atmos.uz/merchant/pay/otp-resend

Параметры запроса

Параметр Описание Обязательность
transaction_id номер созданной прежде транзакции да

Параметры ответа

Параметр Описание
transaction_id номер транзакции для которой был переотправлен код подтверждения

Отмена транзакции

Запрос:

POST /merchant/pay/reverse HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 54

{
    "transaction_id": 000001,
    "reason": "Something"
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/reverse \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "transaction_id": 000001,
    "reason": "Something"
}'

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

{
  "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "transaction_id": 000001
}

Отменяет ранее оплаченную транзакцию и возвращает средства на карту.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/reverse

Параметры запроса

Параметр Описание Обязательность
transaction_id номер отменяемой транзакции да
hold_amount удерживаемая сумма в тиинах нет
reason причина отмены транзакции нет

Параметры ответа

Параметр Описание
transaction_id номер отмененной транзакции

Получение информации о транзакции

Запрос:

POST /merchant/pay/get HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 47

{
    "store_id": 0001,
    "transaction_id": 51827
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/get \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "store_id": 0001,
    "transaction_id": 51827
}'

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

{
    "result": {
        "code": "STPIMS-ERR-092",
        "description": "Транзакция закрыта"
    },
    "store_transaction": {
        "success_trans_id": 2730590,
        "trans_id": 51827,
        "store": {
            "id": 0001,
            "name": "XXXXX",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "000001",
        "account": "XXXXXX",
        "amount": 5000000,
        "confirmed": true,
        "prepay_time": 1656326498000,
        "confirm_time": 1656326529000,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": null,
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": null,
        "status_code": "0",
        "status_message": "Success"
    }
}

Запрос данных о ранее созданной/подтвержденной/закрытой транзакции. Данный метод также используется, если после запроса merchant/pay/apply клиент не получил в теле ответа объект result (случился обрыв связи в сети, или сервис не ответил в рамках заданного клиентом срока (time out), или получили ошибку от шины) необходимо проверить статус транзакции через данный метод.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/get

Параметры запроса

Параметр Описание Обязательность
store_id id мерчанта(store) в системе ATMOS да
transaction_id номер запрашиваемой транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
store_transaction объект с детализацией по транзакции
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции

(OFD) Получение информации о транзакции с фискальным чеком

Запрос:

POST /merchant/pay/get-with-ofd HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 47

{
    "store_id": 0001,
    "transaction_id": 51827
}
curl --request POST \
  --url https://partner.atmos.uz/merchant/pay/get-with-ofd \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "store_id": 0001,
    "transaction_id": 51827
}'

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

{
    "result": {
        "code": "STPIMS-ERR-092",
        "description": "Транзакция закрыта"
    },
    "store_transaction": {
        "success_trans_id": 2730590,
        "trans_id": 51827,
        "store": {
            "id": 0001,
            "name": "XXXXX",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "000001",
        "account": "XXXXXX",
        "amount": 5000000,
        "confirmed": true,
        "prepay_time": 1656326498000,
        "confirm_time": 1656326529000,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": null,
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": null,
        "status_code": "0",
        "status_message": "Success"
    },
    "ofd_url": "https://ofd.atmos.uz/api/ofd/eEw5UE5EK2N0L3ZzbkpjMk11RGYzdz09"
}

Запрос данных о ранее созданной/подтвержденной/закрытой транзакции, с незначительым отличием от исходного метода. В теле ответа возвращает ссылку на фискальный чек в поле ofd_url Данный метод также используется, если после запроса merchant/pay/apply клиент не получил в теле ответа объект result (случился обрыв связи в сети, или сервис не ответил в рамках заданного клиентом срока (time out), или получили ошибку от шины) необходимо проверить статус транзакции через данный метод.

HTTP Request

POST https://partner.atmos.uz/merchant/pay/get-with-ofd

Параметры запроса

Параметр Описание Обязательность
store_id id мерчанта(store) в системе ATMOS да
transaction_id номер запрашиваемой транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
store_transaction объект с детализацией по транзакции
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции
ofd_url ссылка на фискальный чек

(OFD) Получение данных о прикрепленных к транзакции товарах

Запрос:

curl --location 'https://partner.atmos.uz/merchant/pay/ofd-list' \
--header 'x-jwt-assertion: ---' \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data '{
  "store_id": 7659,
  "success_transaction_id": 2741154
}'
POST /merchant/pay/ofd-list HTTP/1.1
Host: partner.atmos.uz
Authorization: Bearer <access-token>
x-jwt-assertion: ---
Content-Type: application/json
Content-Length: 62

{
  "store_id": 7659,
  "success_transaction_id": 2741154
}

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

{
   "result": {
       "code": "OK",
       "description": "Нет ошибок"
   },
   "store_id": 7659,
   "transaction_id": 2741154,
   "ofd_items": [
       {
           "id": 6,
           "amount": 1000,
           "init_time": "2023-02-28 17:47:05.000",
           "ofd_code": "SADADD#D"
       }
   ]
}

Используется для получения детализации о прикрепленных к транзакции товарах, зарегистрированных для фискализации

HTTP Request

POST https://partner.atmos.uz/merchant/pay/ofd-list

Параметры запроса

Параметр Описание Обязательность
store_id id мерчанта да
success_stransaction_id id запрашиваемой транзакции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
store_id id мерчанта
transaction_id id операции
ofd_items массив с данными о товарах, прикрепленных к транзакции

Привязка карт

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

  1. Заявка на создание токена карты (держателю карты высылается sms-код подтверждения);
  2. Подтверждение привязки карты через сообщение API ATMOS кода подтверждения;
  3. Получение токена карты.

Запрос на привязку карты

Запрос:

POST /partner/bind-card/init HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 57

{
    "card_number": "8600490744313347",
    "expiry": "2410"
}
curl --request POST \
  --url https://partner.atmos.uz/partner/bind-card/init \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "card_number": "8600332914249390",
    "expiry": "2509"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "transaction_id": 442,
    "phone": "998900222222"
}

Создание заявки на привязку карты. Если все данные верны, возвращает в поле transaction_id значение для дальнейшего подтверждения заявки и высылает sms-код подтверждения держателю карты.

HTTP Request

POST https://partner.atmos.uz/partner/bind-card/init

Параметры запроса

Параметр Описание Обязательность
card_number 16-значный код на лицевой стороне карты да
expiry дата действительности карты (YYmm) да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
transaction_id id операции
phone номер телефона держателя карты

Подтверждение привязки карты

Запрос:

POST /partner/bind-card/confirm HTTP/1.1
Content-Type: application/json
Authorization: Bearer Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 44

{
    "transaction_id": 383,
    "otp": "111111"
}
curl --request POST \
  --url https://partner.atmos.uz/partner/bind-card/confirm \
  --header 'Authorization: Bearer Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "transaction_id": 383,
    "otp": "111111"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "data": {
        "card_id": 1579076,
        "pan": "986009******1840",
        "expiry": "2505",
        "card_holder": "TEST",
        "balance": 1000000000,
        "phone": "998989999999",
        "card_token": "<card-token>"
    }
}

Подтверждает созданную ранее операцию по привязке карты к сервису мерчанта и выдает токен для совершения платежей.

HTTP Request

POST https://partner.atmos.uz/partner/bind-card/confirm

Параметры запроса

Параметр Описание Обязательность
transaction_id номер созданной ранее операции да
otp код, полученный держателем карты в виде sms да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
data объект с данными карты

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

Запрос:

PUT /partner/bind-card/dial HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 26

{
    "transaction_id": 442
}
curl --request PUT \
  --url https://partner.atmos.uz/partner/bind-card/dial \
  --header 'Authorization: Bearer <access-token> \
  --header 'Content-Type: application/json' \
  --data '{
    "transaction_id": 442
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    }
}

Звонит держателю карты и сообщает код подтверждения в автоматическом порядке.

HTTP Request

https://partner.atmos.uz/partner/bind-card/dial

Параметры запроса

Параметр Описание Обязательность
transaction_id номер созданной ранее операции да

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера

Список привязанных к мерчанту карт

Запрос:

POST /partner/list-cards HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 32

{
    "page": 1,
    "page_size": 10
}
curl --request POST \
  --url https://partner.atmos.uz/partner/list-cards \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "page": 1,
    "page_size": 10
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "card_list": [
        {
            "card_id": 1579076,
            "card_token": "<card-token>",
            "pan": "986009******1840",
            "expiry": "2505"
        }
    ]
}

Возвращает список всех привязанных к сервису мерчанта карточек.

HTTP Request

https://partner.atmos.uz/partner/list-cards

Параметры запроса

Параметр Описание Обязательность
page номер страницы нет
page_size кол-во элементов на страницк нет

Параметры ответа

Параметр Описание
result объект со статусом ответа сервера
card_list массив привязанных к сервису карт

Аннулировать привязанную карту

Запрос:

POST /partner/remove-card HTTP/1.1
Content-Type: application/json
Authorization: Bearer <bearer-token>
Host: partner.atmos.uz
Content-Length: 64

{
    "id": 1666711,
    "token": "<card-token>"
}
curl --request POST \
  --url https://partner.atmos.uz/partner/remove-card \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "id": 1666711,
    "token": "<card-token>"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "data": {
        "card_id": 1666711,
        "pan": null,
        "expiry": null,
        "card_holder": null,
        "balance": null,
        "phone": null,
        "card_token": null
    }
}

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

HTTP Request

https://partner.atmos.uz/partner/remove-card

Параметры запроса:

Параметр Описание Обязательность
id id карты да
token токен карты да

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

Параметр Описание
result объект со статусом ответа сервера
data объект с аннулированными данными

Реккурентные платежи

Поставщики услуг, которые интегрируется к системе ATMOS по API (глубокая интеграция) имеют возможность настроить рекуррентные платежи. Рекуррентные платежи представляют из себя периодическое автосписание определенной суммы в счет оплаты услуг Поставщика.

Внимание! Для пользования API реккурентных платежей, карта должна быть предварительно привязана к сервису.

Подробнее: привязка карт

Создать планировщик

Запрос:

POST /pay-scheduler/create HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 256

{
    "payment": {
        "date_start": "2022-12-13", 
        "date_finish": "2023-12-13", 
        "login": "998991234567", 
        "pay_day": 16, 
        "pay_time": "10:22",
        "repeat_interval":2,
        "repeat_times":2,
        "ext_id": "2410",
        "repeat_low_balance": true,
        "amount": 751240000, 
        "cards": "[1666741]",
        "store_id": 7777, 
        "account": "998974445566" 
    }
}       
curl --request POST \
  --url https://partner.atmos.uz/pay-scheduler/create \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "payment": {
        "date_start": "2022-12-13", 
        "date_finish": "2023-12-13", 
        "login": "998991234567", 
        "pay_day": 16, 
        "pay_time": "10:22",
        "repeat_interval":2,
        "repeat_times":2,
        "ext_id": "2410",
        "repeat_low_balance": true,
        "amount": 751240000, 
        "cards": "[1666741]",
        "store_id": 7777, 
        "account": "998974445566" 
    }
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "scheduler_id": "12345"
}

Создает планировщик для карты, с возможностью указания суммы, дня списания для каждого месяца, времени дня для списания. При условии нехватки денег на карте, может списывать средства с дополнительно указанных карт. После создания планировщик должен быть подтвержден вызовом следующего метода.

HTTP Request

https://partner.atmos.uz/pay-scheduler/create

Параметры запроса:

Параметр Описание Обязательность
payment объект с данными о планировщике да
- date_start дата создания планировщика да
- date_finish дата завершения работы планировщика да
- login номер телефона, к которому привязана карта* да
- pay_day день месяца для списаний (1-28, last)* да
- pay_time время оплаты в заданный день. Формат HH24:MI. да
- repeat_interval интервал повторных попыткок в минутах да
- repeat_times кол-во повторных попыток списания да
- ext_id персональный счет клиента в биллинге поставщика да
- repeat_low_balance повторять ли, в случае, если на балансе недостаточно средств да
- amount сумма списания в тиинах да
- cards id карт, с которых произведется списание, если на основной не хватает средств да
- store_id id мерчанта(store) в системе ATMOS да
- account идентификатор платежа да

Примечания:

  1. Login - номер телефона, к которому привязана карта, можно запросить через метод https://partner.atmos.uz/card/1/check-card-token;

  2. Pay_day - значение last указывает на последний день месяца.

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

Параметр Описание
result объект со статусом ответа сервера
scheduler_id id созданного планировщика

Подтвердить создание планировщика

Запрос:

POST /pay-scheduler/confirm HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 43

{
    "sсheduler_id": 12345,
    "otp": "111111"
}
curl --request POST \
  --url https://partner.atmos.uz/pay-scheduler/confirm \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "sheduler_id": 12345,
    "otp": "111111"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    }
}

Метод подтверждает и активирует созданный планировщик.

HTTP Request

https://partner.atmos.uz/pay-scheduler/confirm

Параметры запроса:

Параметр Описание Обязательность
scheduler_id id созданного ранее планировщика да
otp код из sms, высланный владельцу карты да

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

Параметр Описание
result объект со статусом ответа сервера

Удалить или изменить планировщик

Запрос:

POST /pay-scheduler/change HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 256

{
    "sсheduler_id": 75127,
    "delete": false,
    "payment": {
        "date_start": "2022-12-13", 
        "date_finish": "2023-12-13", 
        "login": "9989881234567", 
        "pay_day": 16, 
        "pay_time": "14:14",
        "repeat_interval":2,
        "repeat_times":10,
        "ext_id": "2410",
        "repeat_low_balance": true,
        "amount": 111110000, 
        "cards": "[1666741]",
        "store_id": 7777, 
        "account": "998974445566" 
    }
}   
curl --request POST \
  --url https://partner.atmos.uz/pay-scheduler/change \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "sсheduler_id": 75127,
    "delete": false,
    "payment": {
        "date_start": "2022-12-13", 
        "date_finish": "2023-12-13", 
        "login": "9989881234567", 
        "pay_day": 16, 
        "pay_time": "14:14",
        "repeat_interval":2,
        "repeat_times":10,
        "ext_id": "2410",
        "repeat_low_balance": true,
        "amount": 111110000, 
        "cards": "[1666741]",
        "store_id": 7777, 
        "account": "998974445566" 
    }
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "scheduler_id": 12345
}

Метод удаляет или вносит изменения в созданный ранее планировщик.

HTTP Request

https://partner.atmos.uz/pay-scheduler/change

Параметры запроса:

Параметр Описание Обязательность
scheduler_id id созданного ранее планировщика да
delete boolean - если true, планировщик удаляется да
payment объект с данными о планировщике да
- date_start дата создания планировщика нет
- date_finish дата завершения работы планировщика нет
- login номер телефона, к которому привязана карта* нет
- pay_day день месяца для списаний (1-28, last)* нет
- pay_time время оплаты в заданный день. Формат HH24:MI. нет
- repeat_interval интервал повторных попыткок в минутах нет
- repeat_times кол-во повторных попыток списания нет
- ext_id персональный счет клиента в биллинге поставщика нет
- repeat_low_balance повторять ли, в случае, если на балансе недостаточно средств нет
- amount сумма списания в тиинах нет
- cards id карт, с которых произведется списание, если на основной не хватает средств нет
- store_id id мерчанта(store) в системе ATMOS нет
- account идентификатор платежа нет

Примечания:

  1. Login - номер телефона, к которому привязана карта, можно запросить через метод https://partner.atmos.uz/card/1/check-card-token;

  2. Pay_day - значение last указывает на последний день месяца.

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

Параметр Описание
result объект со статусом ответа сервера
scheduler_id id созданного планировщика

Холдирование

Холдирование - инструмент по заморозке денежных средств на карте на определенный временной промежуток без списания. ATMOS API позволяет холдировать сумму на счету покупателя и сразу производить списание по мере необходимости. Также, мерчантам доступна отмена холдирования.

Создать заявку на холдирование

Запрос:

POST /hold/create HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 168

{
    "card_token": "<card-token>",
    "store_id": "0001",
    "account": "12345",
    "payment_details": "",
    "amount": "50000",
    "duration": "1"
}
curl --request POST \
  --url https://partner.atmos.uz/hold/create \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "card_token": "<card-token>",
    "store_id": "0001",
    "account": "12345",
    "payment_details": "",
    "amount": "50000",
    "duration": "1"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "hold_id": 1173,
    "account": null
}

Создает заявку на холдирование, высылает код подтверждения держателю карты(если карта не привязана) и возвращает номер операции, для дальнейшего ее подтверждения.

HTTP Request

POST https://partner.atmos.uz/hold/create

Параметры запроса:

Параметр Описание Обязательность
card_token токен карты +/-
card_number номер карты +/-
card_expiry срок действия карты(YYmm) +/-
store_id id мерчанта(store) да
account идентификатор платежа да
payment_details детали платежа нет
amount сумма холдирования в тиинах да
duration срок холдирования в минутах да

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

Параметр Описание
result объект со статусом ответа сервера
hold_id номер созданной операции

Подтвердить заявку на холдирование

Запрос:

PUT /hold/apply/{id} HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 20

{
    "otp": "111111"
}
curl --request PUT \
  --url https://partner.atmos.uz/hold/apply/{id} \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "otp": "111111"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "hold_id": 1173,
    "card_token": "<card-token>",
    "card_pan": "986009******1840",
    "hold_till": "2022-06-30T14:55:19.597"
}

Подтверждает запрос на холдирование и замораживает средства на карте.

HTTP Request

PUT https://partner.atmos.uz/hold/apply/{id}}

Параметры URL:

Параметр Описание Обязательность
id id созданной ранее транзакции да

Параметры запроса:

Параметр Описание Обязательность
otp код из sms да

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

Параметр Описание
result объект со статусом ответа сервера
hold_id номер подтвержденной операции
hold_till дата разморозки средств

Создать заявку на множественное холдирование

Запрос:

POST /hold/multiple/create HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz
Content-Length: 168

{
    "card_token": "<card-token>",
    "duration": "1",
    "items": [
        {
        "store_id": "<store_id>",
        "account": "<account>",
        "payment_details": "",
        "amount": "1000000"
        },
        {
        "store_id": "<store_id>",
        "account": "<account>",
        "payment_details": "",
        "amount": "1000000"
        }
    ]
}
curl --request POST \
  --url https://partner.atmos.uz/hold/multiple/create \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "card_token": "<card-token>",
    "duration": "1",
    "items": [
        {
        "store_id": "<store_id>",
        "account": "<account>",
        "payment_details": "",
        "amount": "1000000"
        },
        {
        "store_id": "<store_id>",
        "account": "<account>",
        "payment_details": "",
        "amount": "1000000"
        }
    ]
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "parent_id": 261,
    "items": [
        {
            "result": null,
            "hold_id": 1543,
            "account": "255432"
        },
        {
            "result": null,
            "hold_id": 1544,
            "account": "2345645"
        }
    ]
}

Создает заявку на несколько операций(средства за которые могут быть списаны по отдельности) в контексте холдирования общей суммы, высылает код подтверждения держателю карты(если карта не привязана) и возвращает номер операции, для дальнейшего ее подтверждения.

HTTP Request

POST https://partner.atmos.uz/hold/multiple/create

Параметры запроса:

Параметр Описание Обязательность
card_token токен карты +/-
duration срок холдирования в минутах да
items массив заявок на холдирование да

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

Параметр Описание
result объект со статусом ответа сервера
parent_id номер созданной(главной) операции
items массив принятых заявок на холдирование, ожидающих подтверждения

Подтвердить заявку на множественное холдирование

Запрос:

PUT /hold/multiple/apply/{id} HTTP/1.1
Content-Type: application/json
Authorization: Bearer <access-token>
Host: partner.atmos.uz 
Content-Length: 168

{
    "otp": "111111"
}
curl --request PUT \
  --url https://partner.atmos.uz/hold/multiple/{id} \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json' \
  --data '{
      "otp": "111111"
}'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "parent_id": 260,
    "items": [
        {
            "result": {
                "code": "OK",
                "description": "Нет ошибок"
            },
            "hold_id": 1541,
            "card_token": "<card-token>",
            "card_pan": "XXXXXXXXXXXXXXXX",
            "hold_till": "2022-09-28T16:46:22.762"
        },
        {
            "result": {
                "code": "OK",
                "description": "Нет ошибок"
            },
            "hold_id": 1542,
            "card_token": "<card-token>",
            "card_pan": "XXXXXXXXXXXXXXXX",
            "hold_till": "2022-09-28T16:46:23.118"
        }
    ]
}


Подтверждает ранее созданную заявку на несколько операций в контексте холдирования общей суммы, делая доступным списание средств.

HTTP Request

PUT https://partner.atmos.uz/hold/multiple/{id}

Параметры запроса:

Параметр Описание Обязательность
otp стандартное значение "111111", если списание идет по токену карты да

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

Параметр Описание
result объект со статусом ответа сервера
parent_id номер главной операции
items массив принятых заявок на холдирование, с их статусами

Произвести списание захолдированной суммы

Запрос:

POST /hold/{id} HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
Host: partner.atmos.uz
curl --request POST \
  --url https://partner.atmos.uz/hold/{id} \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    },
    "store_transaction": {
        "success_trans_id": 000001,
        "trans_id": 12345,
        "store": {
            "id": 0001,
            "name": "XXXXX",
            "desc": "",
            "logo": null,
            "ga_id": null
        },
        "terminal_id": "0000001",
        "account": "12345",
        "amount": 5000000,
        "confirmed": true,
        "prepay_time": 1656325395000,
        "confirm_time": 1656325681944,
        "label": {
            "type_id": 64,
            "label_ru": "Номер инвойса",
            "label_uz": "Invoys raqami",
            "label_en": "Number of Invoice"
        },
        "details": "",
        "commission_value": "0",
        "commission_type": "0",
        "total": 5000000,
        "card_id": "<card-token>",
        "status_code": "0",
        "status_message": "Success"
    }
}

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

HTTP Request

POST https://partner.atmos.uz/hold/{id}

Параметры URL:

Параметр Описание Обязательность
id id транзакции да

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

Параметр Описание
result объект со статусом ответа сервера
transaction_id номер созданной в системе транзакции
store_transaction объект с детализацией по транзакции
- success_trans_id постоянный номер успешной транзакции
- trans_id номер транзакции
- store объект с данными мерчанта
- terminal_id id терминала через который была создана транзакция
- account идентификатор платежа
- amount сумма транзакции в тиинах
- confirmed подтверждена ли транзакция
- prepay_time время пред-подтверждения транзакции
- confirm_time время подтверждения транзакции
- label Объект с номером и мета-данными инвойса
- details детали транзакции
- commission_value размер комиссии в тиинах
- commission_type сервисное поле
- total итоговая сумма транзакции
- card_id токен карты
- status_code сервисное поле
- status_message статус транзакции

Отмена холдирования

Запрос:

DELETE /hold/{id} HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
Host: partner.atmos.uz
curl --request DELETE \
  --url https://partner.atmos.uz/hold/{id} \
  --header 'Authorization: Bearer <access-token>' \
  --header 'Content-Type: application/json'

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

{
    "result": {
        "code": "OK",
        "description": "Нет ошибок"
    }
}

Отменяет ранее созданный холд.

HTTP Request

https://partner.atmos.uz/hold/{id}

Параметры URL:

Параметр Описание Обязательность
id id транзакции да

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

Параметр Описание
result объект со статусом ответа сервера

Списание по ПИНФЛ

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

Для нижеперечисленных эндпоинтов, предусмотрен следующий адрес для работы с сервисом

Base URL: https://apigw.atmos.uz/ppa

Создание транзакции (ПИНФЛ)

Запрос:

curl -X POST https://apigw.atmos.uz/ppa/transaction/create \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access-token>" \
-d '{
  "ext_id": "12345789",
  "first_name": "Ivan",
  "last_name": "Ivanov",
  "middle_name": "Ivanovich",
  "pinfl": "123456789123456789",
  "passport_series": "AA",
  "passport_number": "123456789",
  "contract_number": "123456",
  "amount": 100500,
  "partial_debit": true,
  "ofd_items": {
        "ofd_code": "ofd_code_exm",
        "package_code": "123456",
        "tin" : "100100100"
    },
  "epos": {
        "branch_id": "branch_id",
        "terminal_group_id": "terminal_group_id"
    }
}'
POST /transaction/create HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>

{
  "ext_id": "12345789",
  "first_name": "Ivan",
  "last_name": "Ivanov",
  "middle_name": "Ivanovich",
  "pinfl": "123456789123456789",
  "passport_series": "AA",
  "passport_number": "123456789",
  "contract_number": "123456",
  "amount": 100500,
  "partial_debit": true,
  "ofd_items": {
        "ofd_code": "ofd_code_exm",
        "package_code": "123456",
        "tin" : "100100100"
    },
  "epos": {
        "branch_id": "branch_id",
        "terminal_group_id": "terminal_group_id"
    }
}

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

{
  "payload": {
    "transaction_status": "CREATED",
    "transaction_id": "12345678",
    "ext_id": "12345789",
    "amount": "100500",
    "first_name": "Ivan",
    "middle_name": "Ivanovich",
    "last_name": "Ivanov",
    "date_created": "2023-12-12 00:00:00"
  },
  "code": "200",
  "description": "Transaction confirmed"
}

HTTP Request

POST https://apigw.atmos.uz/ppa/transaction/create

Создание транзакции на стороне платформы для дальнейшей работы

Параметры запроса

название описание обязательность
ext_id уникальный идентификатор транзакции на стороне клиента да
first_name имя да
last_name фамилия да
middle_name отчество да
pinfl пинфл да
passport_series серия паспорта да
passport_number номер паспорта да
contract_number номер договора с клиентом да
amount сумма списания в тиинах да
partial_debit флаг частичного списания (true/false). по умолчанию - false нет
ofd_items данные ОФД нет
ofd_items.ofd_code код ОФД нет
ofd_items.package_code маркировочный код нет
ofd_items .tin ИНН нет
epos данные epos и филиала партнера, от которых производится списание нет
epos.branch_id id филиала/департамента партнера нет
epos.terminal_group_id id группы терминалов партнера нет

Параметры ответа

Название Описание Обязательность
code статус ответа (ok, progress, error) да
description описание статуса ответа нет
payload объект с данными о созданной транзакции да

Подтверждение транзакции (ПИНФЛ)

Запрос:

curl -X POST https://apigw.atmos.uz/ppa/transaction/confirm \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access-token>" \
-d '{
  "ext_id": "12345789",
  "transaction_id": "1113423543"
}'
POST /ppa/transaction/confirm HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>

{
  "ext_id": "12345789",
  "transaction_id": "1113423543"
}

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

{
  "payload": {
    "transaction_id": "12345678",
    "ext_id": "12345789",
    "transaction_status": "SUCCESS",
    "details": [
      {
        "pan": "860066******5544",
        "amount": "100",
        "upper_commission": "1",
        "status": "SUCCESS"
      }
    ],
    "ofd_url": "www.ofd_url_example.uz"
  },
  "code": "200",
  "description": "Transaction confirmed"
}

Подтверждение списания средств по уникальным идентификаторам транзакции

HTTP Request

POST https://apigw.atmos.uz/ppa/transaction/confirm

Параметры запроса

Название Описание Обязательность
ext_id уникальный идентификатор транзакции да
transaction_id id транзакции на стороне atmos да

Параметры ответа

Название Описание Обязательность
code статус ответа (ok, progress, error) да
description описание статуса ответа нет
payload объект с данными о созданной транзакции да

Запрос данных о транзакции

Запрос:

POST /transaction/check HTTP/1.1
Host: apigw.atmos.uz
Authorization: Bearer <access-token>
Content-Type: application/json
{
  "ext_id": 12345789,
  "pinfl": "123456789123456789",
  "passport_series": "AA",
  "passport_number": "123456789",
  "contract_number": "123456",
  "amount": 100500
}
curl -X POST https://apigw.atmos.uz/ppa/transaction/check \
-H "Authorization: Bearer <access-token>" \
-H "Content-Type: application/json" \
-d '{
  "ext_id": 12345789,
  "pinfl": "123456789123456789",
  "passport_series": "AA",
  "passport_number": "123456789",
  "contract_number": "123456",
  "amount": 100500
}'

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

{
  "payload": {
    "transaction_id": 12345678,
    "ext_id": 12345789,
    "transaction_status": "SUCCESS",
    "details": [
      {
        "pan": "860066******5544",
        "amount": 100,
        "upper_commission": 1,
        "status": "SUCCESS"
      }
    ],
    "ofd_url": "www.ofd_url_example.uz"
  },
  "code": "200",
  "description": "Transaction confirmed"
}

Находит транзакцию по указанным реквизитам, и возвращает по ней детализацию

HTTP Request

POST https://apigw.atmos.uz/ppa/transaction/check

Параметры запроса

Параметр Описание Обязательность
ext_id уникальный идентификатор транзакции да
pinfl пинфл да
passport_series серия паспорта да
passport_number номер паспорта да

Параметры ответа

Параметр Описание Обязательность
code статус ответа (ok, progress, error) да
description описание статуса ответа нет
payload объект с данными о созданной транзакции да

Отмена транзакции (ПИНФЛ)

Запрос:

curl -X POST https://apigw.atmos.uz/ppa/transaction/cancel \
-H "Authorization: Bearer <access-token>" \
-H "Content-Type: application/json" \
-d '{
  "ext_id": 12345789,
  "transaction_id": "1113423543"
}'
POST /ppa/transaction/cancel HTTP/1.1
Host: apigw.atmos.uz
Authorization: Bearer <access-token>
Content-Type: application/json

{
  "ext_id": 12345789,
  "transaction_id": "1113423543"
}

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

{
  "payload": {
    "transaction_id": 12345678,
    "ext_id": 12345789,
    "transaction_status": "CANCELED"
  },
  "code": "200",
  "description": "Transaction Canceled"
}

Отменяет транзакцию в ATMOS.PAY по паре ее уникальных идентификаторов, до того, как она будет подтверждена

HTTP Request

POST https://apigw.atmos.uz/ppa/transaction/cancel

Параметры запроса

Параметр Описание Обязательность
ext_id уникальный идентификатор транзакции да
transaction_id id транзакции на стороне atmos да

Параметры ответа

Параметр Описание Обязательность
code статус ответа (ok, progress, error) да
description описание статуса ответа нет
payload объект с данными о созданной транзакции да

Актуализация карт по ПИНФЛ

Запрос:

curl -X POST https://apigw.atmos.uz/ppa/cards/update-cards-list \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access-token>" \
-d '{
  "pinfl": "12345678911234",
  "ext_id": "1234567"
}'
POST /ppa/cards/update-cards-list HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>

{
  "pinfl": "12345678911234",
  "ext_id": "1234567"
}

HTTP Request

POST https://apigw.atmos.uz/ppa/cards/update-cards-list

Синхронизировать/обновить данные карт по запрошенному ПИНФЛ

Метод используется в следующих случаях:

Параметры запроса

название описание обязательность
pinfl ПИНФЛ запрашиваемого лица да
ext_id Уникальный идентификатор запроса на стороне клиента нет

Параметры ответа

отсутствуют

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

Запрос:

curl -X POST https://apigw.atmos.uz/ppa/cards/check/{ext_id} \
-H "Authorization: Bearer <access-token>" \
POST /ppa/cards/check/{ext_id} HTTP/1.1
Host: apigw.atmos.uz
Authorization: Bearer <access-token>

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

{
  "code": 200,
  "message": null,
  "payload": {
    "ext_id": "example_ext_id",
    "masked_pinfl": "3210xxxxxxx067",
    "status": "SUCCESSFUL",
    "request_date": "2024-11-26 16:11:47"
  }
}

HTTP Request

POST https://apigw.atmos.uz/ppa/cards/check/{ext_id}

Используется для выяснения статуса актуализации списка карт по ПИНФЛ. В поле payload.status возвращает состояние запроса в системе. Значение SUCCESSFUL свидетельствует о том, что карты физ.лица по ПИНФЛ были успешно обновлены в системе.

Параметры запроса

название описание обязательность
ext_id уникальный идентификатор запроса да

Параметры ответа

Название Описание
code статус ответа (ok, progress, error)
message описание статуса ответа
payload.ext_id Уникальный идентификатор запроса
payload.masked_pinfl Замаскированный идентификатор пользователя
payload.status Статус выполнения запроса
payload.request_date Дата и время создания запроса

Справочник статусов

В теле каждого ответа сервера содержится поле status, которое хранит в себе состояние той, или иной операции. По умолчанию, при успешном выполнении запроса пользователя, поле содержит код 200.

Детализации к статусам ошибок приведены в таблице ниже.

Код ошибки Текст ошибки Описание
-100 Unexpected exception Непредвиденная ошибка. Обратитесь в техническую поддержку.
-101 Contract registration was unsuccessful Ошибка при регистрации контракта.
-102 Client registration was unsuccessful Ошибка при регистрации клиента.
-103 Client with PINFL [pin num] is not available Клиент, зарегистрированный с указанным [pin num] ПИНФЛ, недоступен для выполнения транзакции.
-105 No cards with sufficient balance were found Карты с доступным минимальным балансом для выполнения транзакции не найдены.
-106 Not enough balance Недостаточно средств для выполнения транзакции (только если "partial_debit": "false").
-107 Could not initiate payment in full amount Недостаточно средств для выполнения транзакции на указанную сумму (нечастичное списание).
-108 Cards balance is not available Баланс карт недоступен.
-109 Cards attributable to PINFL [pinfl] not found Карты, принадлежащие указанному ПИНФЛ [pinfl], не найдены. Требуется обновление списка карт с помощью метода update-cards-list.
-200 Unexpected error. Please try again later Непредвиденная ошибка. Попробуйте позже или обратитесь в техническую поддержку.
-202 Transaction with external id: [trans id] failed Неуспешная транзакция [trans id]. Возвращается только в методе Check.
-301 Client or contract or ePOS not found Указанные данные для подтверждения транзакции не соответствуют данным, указанным при создании транзакции.
-302 External id [external id] is already used Указанный external_id уже был использован.
-303 Invalid external id Неправильный идентификатор external_id.
-303 Invalid firstname Неправильное имя клиента.
-303 Invalid lastname Неправильная фамилия клиента.
-303 Invalid middle name Неправильное отчество клиента.
-303 Invalid PINFL Неправильный ПИНФЛ.
-303 Invalid passport series Неправильная серия паспорта.
-303 Invalid passport number Неправильный номер паспорта.
-303 Invalid contract number Неправильный номер контракта.
-303 Invalid amount Неправильная сумма.
-303 Invalid packageCode Неправильный packageCode.
-303 Invalid TIN Неправильный ИНН.
-303 branch_id must not be null or empty Поле branch_id не должно быть пустым.
-303 terminal_group_id must not be null or empty Поле terminal_group_id не должно быть пустым.
-306 Requested amount is less than minimum allowed Указанная сумма меньше минимально допустимой для списания.
-307 ePOS with branch id: [branch id] not found ePOS с указанными параметрами не найден.
-307 ePOS details were not sent Детали ePOS не были отправлены.
-308 Request with provided external id not found Запрос с указанным external_id не найден

Эквайринг Visa/Mastercard

Система МПС - это эквайринг платформа, позволяющая юридическим лицам, осуществляющим свою деятельность на территории Республики Узбекистан, принимать платежи с карт Visa и Mastercard.

При подключении к системе, партнеру выдается уникальный API ключ, который должен быть включен в любой запрос, при работе с платформой, в виде заголовка apikey

Base URL: https://apigw.atmos.uz/mps

Авторизация

Запрос:

curl --location 'https://apigw.atmos.uz/mps/auth' \
--header 'apikey: <spi-key>' \
--header 'Content-Type: application/json' \
--data '{
    "api_key" : <api-key>
}'
POST /mps/auth HTTP/1.1
Host: apigw.atmos.uz
apikey: <api-key>
Content-Type: application/json

{
    "api_key": <api-key
}

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

{
  "access_token": "string",
  "refresh_token": "string",
  "expires_in": 1234
}

HTTP Request

POST https://apigw.atmos.uz/mps/auth

Выдает токен доступа при передаче API ключа

Продление срока действия токена

Запрос:

curl -X POST https://apigw.atmos.uz/mps/auth/refresh \
-H "Content-Type: application/json" \
-d '{
    "refresh_token": "string"
}'
POST /mps/auth/refresh HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json

{"refresh_token": "string"}

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

{
  "access_token": "string",
  "refresh_token": "string",
  "expires_in": 1234
}

HTTP Request

POST https://apigw.atmos.uz/mps/auth/refresh

Принимает в теле запроса параметр refresh_token c значением, полученным при авторизации в аналогичном поле ответа сервера, и выдает в результате новый токен, с новым сроком действительности

Привязка карт - BIND

Привязка карты

Запрос:

curl --location 'https://apigw.atmos.uz/mps/card/bind' \
--header 'apikey: <api-key>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access-token>' \
--data-raw '{
    "store_id": 1,
    "pan": "4278310022884134",
    "expiry": "2508",
    "card_name": "TEST",
    "cvc2": "075",
    "client_ip_addr": "192.168.200.01",
    "ext_id": "1"
}'
POST /mps/card/bind HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>
apikey: <api-key>

{
    "store_id": 1,
    "pan": "4278310022884134",
    "expiry": "2508",
    "card_name": "TEST",
    "cvc2": "075",
    "client_ip_addr": "192.168.200.01",
    "ext_id": "1"
}

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

{
  "payload": {
    "id": 144,
    "status": 1,
    "type": "DEFAULT",
    "amount": 10000,
    "card": {
      "id": 67,
      "status": true,
      "masked_pan": "402306********9999",
      "masked_card_holder": "CUSTOMER NAME",
      "card_type": "VISA",
      "date_created": "2024-03-26 14:28:11",
      "date_updated": "2024-03-26 14:28:11",
      "verified_state": "PENDING",
      "card_region": "DOMESTIC"
    },
    "api_id": 1,
    "card_id": 67,
    "external_id": "82b9c105-95f2-45ce-b33a-74ba4ea11ee4",
    "mps_ext_id": "r2PlRV8Y8CjwBAM4gzzFcVJ504c=",
    "status_ps": "Approved",
    "result_code": "Approved",
    "masked_pan": "402306********9327",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-03-26 14:28:11",
    "date_updated": "2024-03-26 14:28:11",
    "redirect_uri": "https://ecomm.kapital24.uz:6443/ecomm2/ClientHandler?trans_id=r2PlRV8Y8CjwBAM4gzzFcVJ504c%3D"
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "6602952bd44ca285f56c38255f2c1e15"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/card/bind

Позволяет привязать карту для совершения дальнейших регулярных платежей

Параметры запроса

Параметр Описание Обязательность
store_id ID партнера да
pan Номер карты да
expiry Срок действия карты в формате MMYY да
card_name Название карты да
cvc2 Код безопасности карты (CVC2/CVV2) да
client_ip_addr IP-адрес клиента да
ext_id Внешний id карты да

Параметры ответа

Параметр Описание
payload Объект с данными о транзакции
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции в валюте
payload.card Объект с данными о карте
payload.card.id Идентификатор карты
payload.card.status Статус карты
payload.card.masked_pan Маскированный номер карты
payload.card.masked_card_holder Маскированное имя владельца карты
payload.card.card_type Тип карты
payload.card.date_created Дата создания карты
payload.card.date_updated Дата обновления карты
payload.card.verified_state Состояние верификации карты
payload.card.card_region Регион карты
payload.api_id ID API
payload.card_id Идентификатор карты
payload.external_id Внешний ID транзакции
payload.mps_ext_id MPS внешний ID транзакции
payload.status_ps Статус PS
payload.result_code Код результата
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата обновления транзакции
payload.redirect_uri Ссылка для перенаправления клиента после 3DS
status Объект с данными о статусе операции
status.code Код статуса операции
status.message Сообщение статуса операции
status.trace_id Идентификатор трассировки операции

Привязка карты владельцем

Запрос:

curl -X POST "https://apigw.atmos.uz/mps/checkout/card-bind/create" \
-H "Host: https://apigw.atmos.uz" \
-H "jAuthorization: <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
  "request_id": "1231312312",
  "store_id": 3,
  "account": "DFSDF",
  "success_url": "https://atmos.uz"
}'
POST https://apigw.atmos.uz/mps/checkout/card-bind/create HTTP/1.1
Host: https://apigw.atmos.uz
jAuthorization: <ACCESS_TOKEN>
Content-Type: application/json
{
  "request_id": "1231312312",
  "store_id": 3,
  "account": "DFSDF",
  "success_url": "https://atmos.uz",
}

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

{
  "store_id": 3,
  "payment_id": 272,
  "token": "9Y53Bh_hFirZgxxFqBTwtA==",
  "url": "https://checkout.atmos.uz/bind?id=9Y53Bh_hFirZgxxFqBTwtA==",
  "status": {
    "code": "OK",
    "description": "Success",
    "trace_id": "6602952bd44ca285f56c38255f2c1e15"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/checkout/card-bind/create

Метод для генерации ссылки по привязке карты держателем (владельцем карты). После привязки, партнер имеет доступ к произведению списаний средств с карты на своей стороне.

Последовательность процесса:

  1. По вызову метода формируется ссылка;
  2. Ссылка передается держателю карты. Вводятся данные карты, производится привязка по одноразовому SMS-паролю;
  3. В случае успешной привязки система выполняет запрос в билинг партнера со следующис содержимым: { "api_key" : <API-KEY> "card_id" : 1231 };
  4. Система ожидает ответ от билинга партнера со следующим содержимым: { "status": 1, "message": "Успешно" };
  5. Карта успешно привязана, и партнер может производить списания по выданному card_id.

Параметры запроса

Параметр Описание Обязательность
request_id Уникальный идентификатор (формируется на стороне партнера) да
store_id id партнера в системе да
account Идентификтор операции (формируется на стороне партнера) да
success_url Страница перенаправления пользователя при успешном ответе да

Параметры ответа

Параметр Описание
store_id id партнера
payment_id Идентификатор транзакции
token Токен транзакции
url Ссылка для привязки карты
status Объект с данными о статусе операции
status.code Код статуса операции
status.message Сообщение статуса операции
status.trace_id Идентификатор трассировки операции

Получение деталей привязанной карты

Запрос:

    curl --location 'https://apigw.atmos.uz/mps/card/32' \
    --header 'apikey: <api-key>' \
    --header 'Authorization: Bearer <access-token>'
    GET /mps/card/32 HTTP/1.1
    Host: apigw.atmos.uz
    apikey: <api-key>
    Authorization: Bearer <access-token>

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

{
  "payload": {
    "card": {
      "id": 928,
      "status": true,
      "approved": true,
      "masked_pan": "427831********5430",
      "masked_card_holder": "TEST",
      "card_type": "VISA",
      "date_created": "2024-11-21 10:58:12",
      "date_updated": "2024-11-21 10:58:12",
      "verified_state": "FAILED",
      "status_3ds": "FAILED",
      "card_region": "ONUS",
      "store_id": 1
    },
    "card_id": 928
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "65dd6c72a94bfe3856d7f821e8ac37eb"
  }
}

HTTP Request

GET https://apigw.atmos.uz/mps/card/32

Возвращает данные по ранее привязанной к сервису карте

Параметры запроса

Параметр Описание Обязательность
id Идентификатор карты да

Параметры ответа

название описание
payload Объект с данными
card Объект с данными о карте
card.id Идентификатор карты
card.status Статус привязки карты
card.masked_pan Замаскированный номер карты
card.masked_card_holder Замаскированное имя владельца карты
card.card_type Тип карты
card.date_created Дата создания привязки карты
card.date_updated Дата обновления привязки карты
card.verified_state Состояние верификации карты
card.status_3ds Статус 3DS
card.card_region Регион регистрации карты
card.store_id ID партнера
card_id ID карты в системе
status Объект с данными о статусе операции
status.code Код статуса операции
status.message Сообщение статуса операции
status.trace_id Идентификатор трассировки операции

Создание драфта транзакции (bind)

Запрос:

curl -X POST https://apigw.atmos.uz/mps/transaction/pre-create \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access-token>" \
-d '{
  "amount": 10000,
  "ext_id": "{{$randomUUID}}",
  "store_id": 3,
  "ofd_items": [],
  "account": "i-203451",
  "invoice_id": "00023213"
}'
POST /mps/transaction/pre-create HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>

{
  "amount": 10000,
  "ext_id": "{{$randomUUID}}",
  "store_id": 3,
  "ofd_items": [],
  "account": "i-203451",
  "invoice_id": "00023213"
}

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

{
  "payload": {
    "id": 898,
    "status": 0,
    "type": "DEFAULT",
    "amount": 10000,
    "api_id": 1,
    "external_id": "9f7ab26c-9ddd-47bf-b5ee-c7e04714f162",
    "date_created": "2024-11-20 16:12:38",
    "date_updated": "2024-11-20 16:12:38",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/bVYxRGo5cjQxOFN4RlRpZjRST3hFdz09",
    "store_id": 3,
    "upper_commission": 0,
    "lower_commission": 0
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "673dc426d9e792630a9dec5bb25603a8"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/pre-create

Создание драфта(черновика) транзакции для последующего списания с привязанной карты

Параметры запроса

Название Описание Обязательность
amount Сумма транзакции (в тиинах) Да
ext_id Уникальный идентификатор запроса Да
store_id Идентификатор партнера Да
ofd_items Список ОФД объектов Да
account ID операции на стороне клиента Да
invoice_id Номер счёта Да

Параметры ответа

Название поля Описание
id Уникальный идентификатор транзакции
status Статус транзакции
type Тип транзакции
amount Сумма транзакции (в тиинах)
api_id Идентификатор API
external_id Внешний идентификатор транзакции
date_created Дата создания транзакции
date_updated Дата последнего обновления транзакции
ofd_redirect_uri Ссылка для перенаправления OFD
store_id Идентификатор партнера
upper_commission Верхняя комиссия
lower_commission Нижняя комиссия
code Код статуса ответа
message Сообщение статуса ответа
trace_id Уникальный идентификатор запроса

Создание транзакции из драфта (bind)

Запрос:

curl -X POST https://apigw.atmos.uz/mps/transaction/create/bind \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access-token>" \
-d '{
  "card_id": 855,
  "amount": 1000,
  "client_ip_addr": "192.168.200.201",
  "transaction_id": 883
}'
POST /mps/transaction/create/bind HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>

{
  "card_id": 855,
  "amount": 1000,
  "client_ip_addr": "192.168.200.201",
  "transaction_id": 883
}

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

{
  "payload": {
    "id": 735,
    "status": 1,
    "rrn": "420810227278",
    "type": "DEFAULT",
    "amount": 10000,
    "card": {
      "id": 923,
      "status": true,
      "masked_pan": "419525********1540",
      "masked_card_holder": "NAME TEST",
      "card_type": "VISA",
      "date_created": "2024-11-20 16:20:19",
      "date_updated": "2024-11-20 16:20:19",
      "verified_state": "PENDING",
      "card_region": "DOMESTIC"
    },
    "api_id": 1,
    "card_id": 923,
    "external_id": "fce222d7-2f5a-4052-9170-b68c30bd9890",
    "mps_ext_id": "BhOEry3oY7G5hHtNTFABHiCLsfQ=",
    "status_ps": "Approved",
    "result_code": "Approved",
    "app_code": "249138",
    "masked_pan": "419525********1540",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-11-20 16:20:19",
    "date_updated": "2024-11-20 16:20:19",
    "redirect_uri": "https://ecomm.kapital24.uz:2443/ecomm2/ClientHandler?trans_id=BhOEry3oY7G5hHtNTFABHiCLsfQ%3D",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/blBlR3p1RmVlS0pQSHY4QjRlM1k3UT09",
    "store_id": 3,
    "upper_commission": 100,
    "lower_commission": 0,
    "ofd_commission_uri": "https://ofd.atmos.uz/api/ofd/SDRxWDc3ejc0cmZYQmlDT3BGMVFmQT09"
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "673dc5f3080d8074fd3a272cb3d0c365"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/create/bind

Создание транзакции из драфта(черновика) и привязка к ней карты для платежа

Параметры запроса

Название поля Описание Обязательное
card_id Идентификатор карты, с которой будет выполнена транзакция Да
amount Сумма транзакции (в тиинах) Да
client_ip_addr IP-адрес клиента, инициировавшего транзакцию Да
transaction_id Идентификатор транзакции, с которым будет связана операция Да

Параметры ответа

Название поля Описание
id Уникальный идентификатор транзакции
status Статус транзакции
rrn Номер ссылки на запрос (Retrieval Reference Number)
type Тип транзакции
amount Сумма транзакции
card.id Уникальный идентификатор карты
card.status Статус карты (true/false)
card.masked_pan Маскированный номер карты
card.masked_card_holder Маскированное имя владельца карты
card.card_type Тип карты
api_id Идентификатор API
card_id Идентификатор карты
external_id Внешний идентификатор транзакции
mps_ext_id Внешний идентификатор платформы MPS
status_ps Статус на стороне процессинга
result_code Код результата транзакции
app_code Код приложения, связанного с транзакцией
masked_pan Маскированный номер карты
client_ip_addr IP-адрес клиента
date_created Дата и время создания транзакции
date_updated Дата и время обновления транзакции
redirect_uri URI для перенаправления после транзакции
ofd_redirect_uri URI для перенаправления в систему OFD
store_id Идентификатор партнера
upper_commission Верхняя комиссия
lower_commission Нижняя комиссия
ofd_commission_uri URI для комиссии OFD

Подтверждение транзакции (bind)

Запрос:

curl -X POST https://apigw.atmos.uz/mps/transaction/apply \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access-token>" \
-d '{
  "transaction_id": 59
}'
POST https://apigw.atmos.uz/mps/transaction/apply HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json
Authorization: Bearer <access-token>

{
  "transaction_id": 59
}

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

{
  "payload": {
    "id": 735,
    "status": 4,
    "rrn": "420810227278",
    "type": "DEFAULT",
    "amount": 10000,
    "card": {
      "id": 923,
      "status": true,
      "masked_pan": "419525********1540",
      "masked_card_holder": "NAME TEST",
      "card_type": "VISA",
      "date_created": "2024-11-20 16:20:19",
      "date_updated": "2024-11-20 16:20:19",
      "verified_state": "VERIFIED",
      "card_region": "DOMESTIC"
    },
    "api_id": 1,
    "card_id": 923,
    "external_id": "fce222d7-2f5a-4052-9170-b68c30bd9890",
    "mps_ext_id": "BhOEry3oY7G5hHtNTFABHiCLsfQ=",
    "status_ps": "Approved",
    "result_code": "Approved",
    "app_code": "249138",
    "masked_pan": "419525********1540",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-11-20 16:20:19",
    "date_updated": "2024-11-20 16:20:19",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/blBlR3p1RmVlS0pQSHY4QjRlM1k3UT09",
    "store_id": 3,
    "upper_commission": 100,
    "lower_commission": 0,
    "ofd_commission_uri": "https://ofd.atmos.uz/api/ofd/SDRxWDc3ejc0cmZYQmlDT3BGMVFmQT09"
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "673dc5f3080d8074fd3a272cb3d0c365"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/apply

Подтверждение созданной и подтвержденной ранее транзакции

Параметры запроса

Название поля Описание Обязательность
transaction_id Идентификатор созданной транзакции да

Параметры ответа

Название Описание
id Идентификатор транзакции
status Статус транзакции
rrn Референсный номер транзакции
amount Сумма транзакции
card.id Идентификатор карты
card.status Статус карты
card.masked_pan Маскированный номер карты
card.masked_card_holder Маскированное имя владельца карты
card.card_type Тип карты
card.date_created Дата создания карты
card.date_updated Дата обновления карты
card.verified_state Состояние верификации карты
card.card_region Регион карты
api_id Идентификатор API
card_id Идентификатор карты
external_id Внешний идентификатор
mps_ext_id Идентификатор в системе MPS
status_ps Статус платежной системы
result_code Код результата
app_code Код приложения
masked_pan Маскированный номер карты
client_ip_addr IP-адрес клиента
date_created Дата создания транзакции
date_updated Дата обновления транзакции
ofd_redirect_uri URI для OFD редиректа
store_id Идентификатор партнера
upper_commission Верхняя комиссия
lower_commission Нижняя комиссия
ofd_commission_uri URI для комиссии OFD
status Объект со статусом запроса
code Код статуса (0 - успешный запрос)
message Сообщение статуса
trace_id Идентификатор трассировки запроса

Оплаты (МПС)

Выставление счета (МПС)

Запрос:

curl -X POST 'https://apigw.atmos.uz/mps/checkout/invoice/create' \
--header 'jAuthorization: <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
    "request_id": "1231312312",
    "store_id": 3,
    "expiration_time": 10,
    "expiration_date": "2024-07-11T11:12:12",
    "account": "DFSDF",
    "amount": 100000,
    "success_url": "https://atmos.uz",
    "items": [
        {
            "items_id": "1",
            "name": "book 1",
            "amount": 50000,
            "quantity": 3,
            "details": {
                "name": "some key",
                "values": "some value"
            }
        },
        {
            "items_id": "2",
            "name": "service",
            "amount": 50000,
            "details": {
                "name": "some key 2",
                "values": "some value 2"
            }
        }
    ]
}'
POST https://apigw.atmos.uz/mps/checkout/invoice/create HTTP/1.1
Host: https://apigw.atmos.uz
jAuthorization: <ACCESS_TOKEN>
Content-Type: application/json

{
    "request_id": "1231312312",
    "store_id": 3,
    "expiration_time": 10,
    "expiration_date": "2024-07-11T11:12:12",
    "account": "DFSDF",
    "amount": 100000,
    "success_url": "https://atmos.uz",
    "items": [
        {
            "items_id": "1",
            "name": "book 1",
            "amount": 50000,
            "quantity": 3,
            "details": {
                "name": "some key",
                "values": "some value"
            }
        },
        {
            "items_id": "2",
            "name": "service",
            "amount": 50000,
            "details": {
                "name": "some key 2",
                "values": "some value 2"
            }
        }
    ]
}

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

{
    "store_id": 3,
    "payment_id": 272,
    "token": "9Y53Bh_hFirZgxxFqBTwtA==",
    "url": "https://checkout.atmos.uz/ru/invoice?id=9Y53Bh_hFirZgxxFqBTwtA==", # ссылка инвойса для открытия в браузере
    "status": {
        "code": "OK",
        "description": "Success"
    }
}

HTTP Request

POST https://apigw.atmos.uz/mps/checkout/invoice/create

Создает платеж в системе с оплатой через веб-интерфейс (платежная страница). URL платежной страницы будет передан в ответе сервера.

Параметры запроса

Параметр Описание Обязательность
request_id Уникальный идентификатор запроса да
store_id Идентификатор партнера да
expiration_time Время до истечения инвойса в минутах нет
expiration_date Дата и время истечения инвойса в формате YYYY-MM-DDTHH:MM:SS нет
account Партнерский идентификатор платежа да
amount Сумма (тийины) да
success_url Ссылка для редиректа при успешной оплате да
items Список товаров или услуг да
items[].items_id Идентификатор товара или услуги да
items[].name Наименование товара или услуги да
items[].amount Сумма для товара или услуги (тийины) да
items[].quantity Количество товара или услуги (если применимо) нет
items[].details Детали товара или услуги нет
items[].details.name Название ключа детали товара или услуги нет
items[].details.values Значение ключа детали товара или услуги нет

Параметры ответа

Параметр Описание
store_id Идентификатор партнера
payment_id Идентификатор платежа
token Токен инвойса
url Ссылка на инвойс для открытия в браузере
status Статус ответа
status.code Код статуса
status.description Описание статуса

Создание транзакции (МПС)

Запрос:

curl --location 'https://apigw.atmos.uz/mps/transaction/create' \
--header 'apikey: <api-key>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access-token>' \
--data-raw '{
    "pan": "4278310021875430",
    "expiry": "2508",
    "amount": 10000,
    "transaction_id": 1,
    "card_name": "TEST",
    "cvc2": "680",
    "client_ip_addr": "192.168.200.01",
    "ext_id": "64bedd41-f21b-4298-aa88-1206107670b8"
}'
POST /mps/transaction/create HTTP/1.1
Host: apigw.atmos.uz
apikey: <api-key>
Authorization: Bearer <access-token>
Content-Type: application/json

{
    "pan": "4278310021875430",
    "expiry": "2508",
    "amount": 10000,
    "transaction_id": 1,
    "card_name": "TEST",
    "cvc2": "680",
    "client_ip_addr": "192.168.200.01",
    "ext_id": "64bedd41-f21b-4298-aa88-1206107670b8"
}

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

{
  "payload": {
    "id": 735,
    "status": 1,
    "rrn": "420810227278",
    "type": "DEFAULT",
    "amount": 10000,
    "card": {
      "id": 929,
      "status": true,
      "masked_pan": "419525********1540",
      "masked_card_holder": "ANDREY PAK",
      "card_type": "VISA",
      "date_created": "2024-11-21 16:00:15",
      "date_updated": "2024-11-21 16:00:15",
      "verified_state": "PENDING",
      "card_region": "DOMESTIC"
    },
    "api_id": 1,
    "card_id": 929,
    "external_id": "fce222d7-2f5a-4052-9170-b68c30bd9890",
    "mps_ext_id": "EueYPCDKlXDhyE9chwPzPcHO89s=",
    "status_ps": "Approved",
    "result_code": "Approved",
    "app_code": "249138",
    "masked_pan": "419525********1540",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-11-21 16:00:15",
    "date_updated": "2024-11-21 16:00:15",
    "redirect_uri": "https://ecomm.kapital24.uz:2443/ecomm2/ClientHandler?trans_id=EueYPCDKlXDhyE9chwPzPcHO89s%3D",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/blBlR3p1RmVlS0pQSHY4QjRlM1k3UT09",
    "store_id": 3,
    "upper_commission": 100,
    "lower_commission": 0,
    "ofd_commission_uri": "https://ofd.atmos.uz/api/ofd/SDRxWDc3ejc0cmZYQmlDT3BGMVFmQT09"
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "673f12bff4d74919c7fcd40ef4dd24ce"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/create

Создает транзакцию в системе, которая в дальнейшем подлежит подтверждению

Параметры запроса

Параметр Описание Обязательность
transaction_id ID драфта транзакции да
pan Номер карты да
expiry Срок действия карты в формате MMYY да
amount Сумма транзакции в тиинах да
card_name Название карты да
cvc2 Код безопасности карты (CVC2/CVV2) да
client_ip_addr IP-адрес клиента да
ext_id Уникальный идентификатор (UUID) транзакции, сгенерированный на стороне клиента да

Параметры ответа

Параметр Описание
payload Объект с данными о транзакции
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.rrn Номер ссылки возврата транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции в валюте
payload.card Объект с данными о карте
payload.card.id Идентификатор карты
payload.card.status Статус карты
payload.card.masked_pan Маскированный номер карты
payload.card.masked_card_holder Маскированное имя владельца карты
payload.card.card_type Тип карты (например, VISA)
payload.card.date_created Дата создания карты
payload.card.date_updated Дата обновления карты
payload.card.verified_state Статус верификации карты
payload.card.card_region Регион карты
payload.api_id ID API
payload.card_id Идентификатор карты
payload.external_id Внешний ID транзакции
payload.mps_ext_id MPS внешний ID транзакции
payload.status_ps Статус PS
payload.result_code Код результата
payload.app_code Параметры процессинга
payload.masked_pan Маскированный номер карты
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата обновления транзакции
payload.redirect_uri Ссылка для перенаправления клиента после 3DS
payload.ofd_redirect_uri Ссылка для перенаправления в OFD
payload.store_id ID партнера
payload.upper_commission Верхняя комиссия
payload.lower_commission Нижняя комиссия
payload.ofd_commission_uri Ссылка чека фискализации
status Объект с данными о статусе операции
status.code Код статуса операции
status.message Сообщение статуса операции
status.trace_id Идентификатор трассировки операции

Создание рекуррентного платежа (МПС)

Запрос:

curl --location 'https://apigw.atmos.uz/mps/transaction/create/template' \
--header 'apikey: <api-key>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access-token>' \
--data-raw '{
    "card_id": 1,
    "amount": 1000,
    "client_ip_addr": "192.168.200.201",
    "ext_id": "12d649ad-38ac-44c5-8f10-3700bfda5efe"
}'
POST /mps/transaction/create/template HTTP/1.1
Host: apigw.atmos.uz
apikey: <api-key>
Authorization: Bearer <access-token>
Content-Type: application/json

{
    "card_id": 1,
    "amount": 1000,
    "client_ip_addr": "192.168.200.201",
    "ext_id": "12d649ad-38ac-44c5-8f10-3700bfda5efe"
}

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

{
  "payload": {
    "id": 110,
    "status": 1,
    "type": "TEMPLATE",
    "api_id": 1,
    "card_id": 36,
    "external_id": "c4cea503-4838-440e-aac2-4509e1319f4e",
    "mps_ext_id": "I7cQTxAUXz0LPy75q09sldnOzTk=",
    "status_ps": "Approved",
    "status_3ds": "AUTHENTICATED",
    "result_code": "Approved",
    "masked_pan": "427831********5430",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-02-26 17:13:05",
    "date_updated": "2024-02-26 17:13:05",
    "redirect_uri": null
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "65dc805134eb63b90d2e048d1d4fb38a"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/create/template

Метод создает регулярный платеж в системе. Для успешного создания платежа, передаваемая в запросе карта должна быть ранее привязана к системе, и проведена 3DS верификация при добавлении. Статус 3DS верификации можно проверить методом /card/{id}

Параметры запроса

Параметр Описание Обязательность
card_id Идентификатор карты да
amount Сумма регулярного платежа в тиинах да
client_ip_addr IP-адрес клиента да
ext_id Уникальный идентификатор (UUID) транзакции, сгенерированный на стороне клиента да

Параметры ответа

Параметр Описание
payload Объект с данными о регулярном платеже
id Идентификатор регулярного платежа
status Статус регулярного платежа
type Тип регулярного платежа
api_id ID API
card_id Идентификатор карты
external_id Внешний ID регулярного платежа
mps_ext_id MPS внешний ID регулярного платежа
status_ps Статус PS регулярного платежа
status_3ds Статус 3DS регулярного платежа
result_code Код результата регулярного платежа
masked_pan Маскированный номер карты
client_ip_addr IP-адрес клиента
date_created Дата создания регулярного платежа
date_updated Дата обновления регулярного платежа
redirect_uri Ссылка для перенаправления клиента после 3DS
status Объект с данными о статусе операции
code Код статуса операции
message Сообщение статуса операции
trace_id Идентификатор трассировки операции

Получение деталей транзакции (МПС)

Запрос:

curl --location 'https://apigw.atmos.uz/mps/transaction/get/52' \
--header 'apikey: <api-key>' \
--header 'Authorization: Bearer <access-token>'
GET /mps/transaction/get/52 HTTP/1.1
Host: apigw.atmos.uz
apikey: <api-key>
Authorization: Bearer <access-token>
Content-Type: application/json

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

{
  "payload": {
    "id": 235,
    "status": 6,
    "rrn": "417310203285",
    "type": "DEFAULT",
    "amount": 100000,
    "api_id": 2,
    "card_id": 220,
    "external_id": "checkout_32157",
    "mps_ext_id": "JEpQ9xa98OhSPPHLRIExPZBlufQ=",
    "status_ps": "Accepted (for reversal)",
    "result_code": "Accepted",
    "app_code": "999284",
    "masked_pan": "419525********1783",
    "client_ip_addr": "10.228.1.26",
    "date_created": "2024-06-21 05:38:25",
    "date_updated": "2024-06-21 05:38:57",
    "redirect_uri": "https://ecomm.kapital24.uz:2443/ecomm2/ClientHandler?trans_id=JEpQ9xa98OhSPPHLRIExPZBlufQ%3D",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/bjhMWnRWaDNxb2NWMHRGL2hLMXlYQT09",
    "store_id": 3,
    "upper_commission": 0,
    "lower_commission": 0
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "673f1773cdc429d9cdb5bc0b0d982291"
  }
}

HTTP Request

GET https://apigw.atmos.uz/mps/transaction/get/${id}

Возвращает имеющуюся в системе детализацию по запрошенной транзакции

Параметры запроса

Параметр Описание Обязательность
transaction_id Идентификатор транзакции да

Параметры ответа

Параметр Описание
payload Объект с данными о транзакции
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.rrn Номер ссылки возврата транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции в валюте
payload.api_id ID API
payload.card_id Идентификатор карты
payload.external_id Внешний ID транзакции
payload.mps_ext_id MPS внешний ID транзакции
payload.status_ps Статус PS
payload.result_code Код результата
payload.app_code Код авторизации
payload.masked_pan Маскированный номер карты
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата обновления транзакции
payload.redirect_uri Ссылка для перенаправления клиента после 3DS
payload.ofd_redirect_uri Ссылка для перенаправления в OFD
payload.store_id ID партнера
payload.upper_commission Верхняя комиссия
payload.lower_commission Нижняя комиссия
status Объект с данными о статусе операции
status.code Код статуса операции
status.message Сообщение статуса операции
status.trace_id Идентификатор трассировки операции

Получение деталей транзакции по внешнему идентификатору (МПС)

Запрос:

curl -X POST \
  https://apigw.atmos.uz/mps/get/ext_id \
  -H 'Content-Type: application/json' \
  -d '{
    "ext_id": "<ext-id>"
}'
POST /mps/get/ext_id HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json

{
"ext_id": "<ext-id>"
}

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

{
  "payload": {
    "id": 131,
    "status": 1,
    "type": "DEFAULT",
    "amount": 10000,
    "card": {
      "id": 55,
      "status": true,
      "masked_pan": "427831********9999",
      "masked_card_holder": "TEST",
      "card_type": "VISA",
      "date_created": "2024-03-18 05:27:54",
      "date_updated": "2024-03-18 05:27:54",
      "verified_state": "PENDING",
      "card_region": "ONUS"
    },
    "api_id": 1,
    "card_id": 55,
    "external_id": "f6d7c050-1927-43d6-a828-6a22235d6f32",
    "mps_ext_id": "E0ZwTIl60PFsSbOz1o8yCwcXEn8=",
    "status_ps": "Approved",
    "result_code": "Approved",
    "masked_pan": "427831********5430",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-03-18 05:27:54",
    "date_updated": "2024-03-18 05:27:54"
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "66029622c951aa197d8196bd89d65308"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/get/ext_id

возвращает данные транзакции по ее внешнему ключу

Параметры запроса

Параметр Описание Обязательность
ext_id Внешний идентификатор транзакции да

Параметры ответа

Параметр Описание
payload Объект с данными о транзакции
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции в валюте
payload.card Объект с данными о карте
payload.card.id Идентификатор карты
payload.card.status Статус карты
payload.card.masked_pan Маскированный номер карты
payload.card.masked_card_holder Маскированное имя владельца карты
payload.card.card_type Тип карты
payload.card.date_created Дата создания карты
payload.card.date_updated Дата обновления карты
payload.card.verified_state Состояние верификации карты
payload.card.card_region Регион карты
payload.api_id ID API
payload.card_id Идентификатор карты
payload.external_id Внешний ID транзакции
payload.mps_ext_id MPS внешний ID транзакции
payload.status_ps Статус PS
payload.result_code Код результата
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата обновления транзакции
status Объект с данными о статусе операции
status.code Код статуса операции
status.message Сообщение статуса операции
status.trace_id Идентификатор трассировки операции

Отмена платежа (МПС)

Запрос:

curl --location 'https://apigw.atmos.uz/mps/transaction/cancel' \
--header 'apikey: <api-key>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access-token>' \
--data-raw '{
    "store_id": 1,
    "transaction_id": 52
}'
POST /mps/transaction/cancel HTTP/1.1
Host: apigw.atmos.uz
apikey: <api-key>
Authorization: Bearer <access-token>
Content-Type: application/json

{
    "store_id": 1,
    "transaction_id": 52
}

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

{
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "673f17938be49a18e27cbb013cfc4625"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/cancel

Отменяет совершенный ранее платеж без удержаний из суммы платежа.

Параметры запроса

Параметр Описание Обязательность
transaction_id Идентификатор транзакции для отмены да
store_id ID партнера да

Параметры ответа

Параметр Описание
payload Объект с данными о результирующей транзакции
id Идентификатор транзакции
status Статус транзакции
type Тип транзакции
api_id ID API
card_id Идентификатор карты
external_id Внешний ID транзакции
mps_ext_id Внешний ID MPS транзакции
status_ps Статус платежной системы
status_3ds Статус 3DS
result_code Код результата
masked_pan Маскированный номер карты
client_ip_addr IP-адрес клиента
date_created Дата создания транзакции
date_updated Дата обновления транзакции
status Объект с данными о статусе операции
code Код статуса операции
message Сообщение статуса операции
trace_id Идентификатор трассировки операции

Возврат платежа (МПС)

Запрос:

curl --location 'https://apigw.atmos.uz/mps/transaction/revert' \
--header 'apikey: <api-key>' \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "transaction_id": 52
}'
POST /mps/transaction/revert HTTP/1.1
Host: apigw.atmos.uz
apikey: <api-key>
Authorization: Bearer <access-token>
Content-Type: application/json

{
    "transaction_id": 52
}

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

{
  "payload": {
    "id": 110,
    "status": 5,
    "type": "DEFAULT",
    "api_id": 1,
    "card_id": 36,
    "external_id": "c4cea503-4838-440e-aac2-4509e1319f4e",
    "mps_ext_id": "I7cQTxAUXz0LPy75q09sldnOzTk=",
    "status_ps": "Missing mandatory parameters\n",
    "status_3ds": "AUTHENTICATED",
    "result_code": "Decline",
    "masked_pan": "427831********5430",
    "client_ip_addr": "192.168.200.01",
    "date_created": "2024-02-26 12:13:05",
    "date_updated": "2024-02-26 12:13:17"
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "65dd6baa145542eebadc9ba6a8f10291"
  }
}

HTTP Request

POST https://apigw.atmos.uz/mps/transaction/revert

Возвращает совершенный ранее платеж.

Параметры запроса

Параметр Описание Обязательность
transaction_id Идентификатор транзакции для возврата да

Параметры ответа

Параметр Описание
payload Объект с данными о результирующей транзакции
id Идентификатор транзакции
status Статус транзакции
type Тип транзакции
api_id ID API
card_id Идентификатор карты
external_id Внешний ID транзакции
mps_ext_id Внешний ID MPS транзакции
status_ps Статус платежной системы
status_3ds Статус 3DS
result_code Код результата
masked_pan Маскированный номер карты
client_ip_addr IP-адрес клиента
date_created Дата создания транзакции
date_updated Дата обновления транзакции
status Объект с данными о статусе операции
code Код статуса операции
message Сообщение статуса операции
trace_id Идентификатор трассировки операции

Холдирование (МПС)

Создание операции холдирования (МПС)

Запрос:

curl -X POST "https://apigw.atmos.uz/mps-extend/uklon/hold" \
-H "Content-Type: application/json" \
-d '{
  "ext_id": "uklon_001",
  "amount": 12000,
  "store_id": 100002,
  "ofd_items": [
    {
      "items_id": "1",
      "ofd_code": "03402004012000000",
      "name": "105 UMUMIY TOZALASH 1000 ML",
      "amount": 6000,
      "quantity": 1
    },
    {
      "items_id": "1",
      "ofd_code": "10105001001000000",
      "name": "Yetkazib berish",
      "amount": 6000,
      "quantity": 1
    }
  ],
  "account": "user_account",
  "invoice_id": "INV-00001",
  "card_id": 947,
  "client_ip_addr": "192.168.1.1"
}'
POST /mps-extend/uklon/hold HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json

{
  "ext_id": "uklon_001",
  "amount": 12000,
  "store_id": 100002,
  "ofd_items": [
    {
      "items_id": "1",
      "ofd_code": "03402004012000000",
      "name": "105 UMUMIY TOZALASH 1000 ML",
      "amount": 6000,
      "quantity": 1
    },
    {
      "items_id": "1",
      "ofd_code": "10105001001000000",
      "name": "Yetkazib berish",
      "amount": 6000,
      "quantity": 1
    }
  ],
  "account": "user_account",
  "invoice_id": "INV-00001",
  "card_id": 947,
  "client_ip_addr": "192.168.1.1"
}

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

{
  "payload": {
    "id": 925,
    "status": 4,
    "rrn": "435206074577",
    "type": "TEMPLATE",
    "amount": 12000,
    "card": {
      "id": 947,
      "status": true,
      "approved": true,
      "masked_pan": "419525********11111",
      "masked_card_holder": "NAME LASTNAME",
      "card_type": "VISA",
      "date_created": "2024-12-16 12:21:43",
      "date_updated": "2024-12-16 12:21:43",
      "verified_state": "VERIFIED",
      "status_3ds": "AUTHENTICATED",
      "card_region": "DOMESTIC",
      "store_id": 000002
    },
    "card_id": 947,
    "external_id": "PARTNER_001",
    "mps_ext_id": "TrZZ5RRDVRr4GY5FBub5Pjubix8=",
    "status_ps": "Approved",
    "status_3ds": "AUTHENTICATED",
    "result_code": "Approved",
    "masked_pan": "419525********9556",
    "client_ip_addr": "192.168.1.1",
    "date_created": "2024-12-17 06:42:43",
    "date_updated": "2024-12-17 11:42:43",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/T1VXWkVMejFYQVhvS3dNVHNXV1kwZz00",
    "store_id": 100002,
    "upper_commission": 0,
    "lower_commission": 0
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "67611d6344179f211d0ed71bf666e71c"
  }
}

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

HTTP Request

POST https://apigw.atmos.uz/mps-extend/uklon/hold

Параметры запроса

Параметр Описание Обязательность
ext_id Внешний идентификатор да
amount Сумма транзакции да
store_id Идентификатор партнера да
ofd_items.items_id Идентификатор товара в списке OFD да
ofd_items.ofd_code Код товара в списке OFD да
ofd_items.name Наименование товара в списке OFD да
ofd_items.amount Сумма товара в списке OFD да
ofd_items.quantity Количество товара в списке OFD да
account Внутренний идентификатор да
invoice_id Идентификатор счета да
card_id Идентификатор карты да
client_ip_addr IP-адрес клиента да

Параметры ответа

Параметр Описание
code Статус ответа (например, ok, error, progress)
description Описание статуса ответа
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.rrn Номер транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции
payload.card.id Идентификатор карты
payload.card.status Статус карты
payload.card.approved Статус одобрения карты
payload.card.masked_pan Маскированный номер карты
payload.card.masked_card_holder Маскированное имя владельца карты
payload.card.card_type Тип карты
payload.card.date_created Дата создания карты
payload.card.date_updated Дата последнего обновления карты
payload.card.verified_state Состояние верификации карты
payload.card.status_3ds Статус 3DS проверки карты
payload.card.card_region Регион карты
payload.card.store_id Идентификатор партнера
payload.card_id Идентификатор карты (совпадает с payload.card.id)
payload.external_id Внешний идентификатор
payload.mps_ext_id Внешний идентификатор транзакции
payload.status_ps Статус платежа
payload.status_3ds Статус 3DS транзакции
payload.result_code Результат платежа
payload.masked_pan Маскированный номер карты (совпадает с payload.card.masked_pan)
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата последнего обновления транзакции
payload.ofd_redirect_uri URI для перенаправления
payload.store_id Идентификатор партнера (совпадает с payload.card.store_id и payload.store_id)
payload.upper_commission Верхняя комиссия
payload.lower_commission Нижняя комиссия
status.trace_id Идентификатор отслеживания запроса

Списание холдированной суммы (МПС)

Запрос:

curl -X POST "https://apigw.atmos.uz/mps-extend/uklon/apply" \
-H "Content-Type: application/json" \
-d '{
  "transaction_id": 925
}'
POST /mps-extend/uklon/apply HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json

{
  "transaction_id": 925
}

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

{
  "payload": {
    "id": 925,
    "status": 4,
    "rrn": "435206074577",
    "type": "TEMPLATE",
    "amount": 12000,
    "card": {
      "id": 947,
      "status": true,
      "approved": true,
      "masked_pan": "419525********1111",
      "masked_card_holder": "NAME LASTNAME",
      "card_type": "VISA",
      "date_created": "2024-12-16 12:21:43",
      "date_updated": "2024-12-16 12:21:43",
      "verified_state": "VERIFIED",
      "status_3ds": "AUTHENTICATED",
      "card_region": "DOMESTIC",
      "store_id": 100002
    },
    "card_id": 947,
    "external_id": "uklon_001",
    "mps_ext_id": "TrZZ5RRDVRr4GY5FBub5Pjubix8=",
    "status_ps": "Approved",
    "status_3ds": "AUTHENTICATED",
    "result_code": "Approved",
    "masked_pan": "419525********9556",
    "client_ip_addr": "192.168.1.1",
    "date_created": "2024-12-17 06:42:43",
    "date_updated": "2024-12-17 06:42:43",
    "redirect_uri": "https://ecomm.kapital24.uz:2443/ecomm2/ClientHandler?trans_id=TrZZ5RRDVRr4GY5FBub5Pjubix8%30",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/T1VXWkVMejFYQVhvS3dNVHNXV1kwZz00",
    "store_id": 100002,
    "upper_commission": 0,
    "lower_commission": 0
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "67611e3b6b932e56690f31668951dbf2"
  }
}

Выполняет списание денежных средств на основе ранее захолдированной суммы

HTTP Request

POST https://apigw.atmos.uz/mps-extend/uklon/apply

Параметры запроса

Параметр Описание Обязательность
transaction_id Идентификатор транзакции да

Параметры ответа

Параметр Описание
code Статус ответа (например, ok, error, progress)
description Описание статуса ответа
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.rrn Номер транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции
payload.card.id Идентификатор карты
payload.card.status Статус карты
payload.card.approved Статус одобрения карты
payload.card.masked_pan Маскированный номер карты
payload.card.masked_card_holder Маскированное имя владельца карты
payload.card.card_type Тип карты
payload.card.date_created Дата создания карты
payload.card.date_updated Дата последнего обновления карты
payload.card.verified_state Состояние верификации карты
payload.card.status_3ds Статус 3DS проверки карты
payload.card.card_region Регион карты
payload.card.store_id Идентификатор партнера
payload.card_id Идентификатор карты (совпадает с payload.card.id)
payload.external_id Внешний идентификатор
payload.mps_ext_id Внешний идентификатор транзакции
payload.status_ps Статус платежа
payload.status_3ds Статус 3DS транзакции
payload.result_code Результат платежа
payload.masked_pan Маскированный номер карты (совпадает с payload.card.masked_pan)
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата последнего обновления транзакции
payload.redirect_uri URI для перенаправления клиента
payload.ofd_redirect_uri URI для перенаправления в систему OFD
payload.store_id Идентификатор партнера (совпадает с payload.card.store_id и payload.store_id)
payload.upper_commission Верхняя комиссия
payload.lower_commission Нижняя комиссия
status.trace_id Идентификатор отслеживания запроса

Отмена операции холдирования (МПС)

Запрос:

curl -X POST "https://apigw.atmos.uz/mps-extend/uklon/cancel" \
-H "Content-Type: application/json" \
-d '{
  "store_id": 100002,
  "transaction_id": 925
}'
POST /mps-extend/uklon/cancel HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json

{
  "store_id": 100002,
  "transaction_id": 925
}

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

{
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "67611fd176ffefc6b963f36dbe32e582"
  }
}

Отменяет созданную ранее операцию холдирования

HTTP Request

POST https://apigw.atmos.uz/mps-extend/uklon/cancel

Параметры запроса

Параметр Описание Обязательность
store_id Идентификатор партнера да
transaction_id Идентификатор транзакции да

Параметры ответа

Параметр Описание
code Статус ответа (например, ok, error, progress)
description Описание статуса ответа
status.code Код статуса ответа (например, 0 - успешный запрос)
status.message Описание статуса ответа (например, Success)
status.trace_id Идентификатор отслеживания запроса

Возврат средств по завершенной операции холдирования (МПС)

Запрос:

curl -X POST "https://apigw.atmos.uz/mps-extend/uklon/return" \
-H "Content-Type: application/json" \
-d '{
  "transaction_id": 923
}'
POST /mps-extend/uklon/return HTTP/1.1
Host: apigw.atmos.uz
Content-Type: application/json

{
  "transaction_id": 923
}

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

{
  "payload": {
    "id": 923,
    "status": 7,
    "rrn": "000206071000",
    "type": "TEMPLATE",
    "amount": 10000,
    "card_id": 947,
    "external_id": "store_1",
    "mps_ext_id": "AYhQoiCyvfwBOJLqEj24w0ioLHU0",
    "status_ps": "Approved",
    "status_3ds": "AUTHENTICATED",
    "result_code": "Approved",
    "masked_pan": "419525********1111",
    "client_ip_addr": "192.168.1.1",
    "date_created": "2024-12-17 06:17:17",
    "date_updated": "2024-12-17 12:12:17",
    "redirect_uri": "https://ecomm.kapital24.uz:2443/ecomm2/ClientHandler?trans_id=AYhQoiCyvfwBOJLqEj24w0ioLHU%30",
    "ofd_redirect_uri": "https://ofd.atmos.uz/api/ofd/blMxbUNIUEZ0WTNNWGFDVC9VVGQ1dz00",
    "upper_commission": 0,
    "lower_commission": 0
  },
  "status": {
    "code": 0,
    "message": "Success",
    "trace_id": "676124513032520bff53bc5309ac8488"
  }
}

Выполняет возврат средств, списанных ранее на основе операции холдирования

HTTP Request

POST https://apigw.atmos.uz/mps-extend/uklon/return

Параметры запроса

Параметр Описание Обязательность
transaction_id Идентификатор транзакции да

Параметры ответа

Параметр Описание
code Статус ответа (например, ok, error, progress)
description Описание статуса ответа
payload.id Идентификатор транзакции
payload.status Статус транзакции
payload.rrn Номер транзакции
payload.type Тип транзакции
payload.amount Сумма транзакции
payload.card_id Идентификатор карты
payload.external_id Внешний идентификатор
payload.mps_ext_id Внешний идентификатор транзакции
payload.status_ps Статус платежа
payload.status_3ds Статус 3DS транзакции
payload.result_code Результат платежа
payload.masked_pan Маскированный номер карты
payload.client_ip_addr IP-адрес клиента
payload.date_created Дата создания транзакции
payload.date_updated Дата последнего обновления транзакции
payload.redirect_uri URI для перенаправления клиента
payload.ofd_redirect_uri URI для перенаправления в систему OFD
payload.upper_commission Верхняя комиссия
payload.lower_commission Нижняя комиссия
status.trace_id Идентификатор отслеживания запроса

Системные статусы и ошибки

В случае ошибок ATMOS API возвращает общепринятые статусы, которые приведены в таблице ниже:

Статус ответа Значение
400 Bad Request -- Запрос содержит ошибку.
401 Unauthorized -- Вы не авторизованы в системе.
403 Forbidden -- Доступ запрещен.
404 Not Found -- Удовлетворяющих результатов не найдено.
405 Method Not Allowed -- Метода не существует.
429 Too Many Requests -- Слишком много запросов.
500 Internal Server Error -- На стороне сервера произошла ошибка. Попробуйте позже.
503 Service Unavailable -- Сервис временно недоступен.

Ошибки при совершении транзакций

Код ошибки Описание ошибки
STPIMS-ERR-001 Внутренняя ошибка
STPIMS-ERR-003 Неправильный партнер
STPIMS-ERR-004 Карта не найдена
STPIMS-ERR-005 Карта не подключена к номеру
STPIMS-ERR-006 Требуемые параметры не найдены
STPIMS-ERR-007 Неправильный формат параметра
STPIMS-ERR-008 Карта не зарегистрирована
STPIMS-ERR-009 Неправильные параметры
STPIMS-ERR-010 Учетная запись не существует
STPIMS-ERR-011 Неправильные опции для платежа
STPIMS-ERR-012 Неправильный id транзакции
STPIMS-ERR-013 Неправильные данные пользователя
STPIMS-ERR-014 Неправильная попытка входа
STPIMS-ERR-015 Неправильная регистрация
STPIMS-ERR-016 Неправильный платеж
STPIMS-ERR-017 Неактивный партнер
STPIMS-ERR-021 Неправильный номер телефона
STPIMS-ERR-022 Мобильный оператор не работает
STPIMS-ERR-023 Сервис не найден
STPIMS-ERR-024 Нет соединения с банком
STPIMS-ERR-025 Банк не найден
STPIMS-ERR-026 Попробуйте позже
STPIMS-ERR-027 Соединитесь с администратором
STPIMS-ERR-028 Отказ в соединении с банком
STPIMS-ERR-029 Незарегистрированный банк
STPIMS-ERR-030 Карта не найдена в банке
STPIMS-ERR-031 Превышен лимит запросов
STPIMS-ERR-032 Агент не найден
STPIMS-ERR-033 Телефонный номер не соответствует
STPIMS-ERR-034 Транзакция не прошла
STPIMS-ERR-037 Не найден ID магазина
STPIMS-ERR-039 Неверная сумма для платежа
STPIMS-ERR-042 Не разрешенная сумма платежа
STPIMS-ERR-043 Банковская Карта не найдена
STPIMS-ERR-044 Магазин с текущим ID не найден
STPIMS-ERR-048 Номер уже зарегистрирован
STPIMS-ERR-050 Карта не может быть зарегистрирована
STPIMS-ERR-051 Информация не найдена
STPIMS-ERR-053 Мобильный префикс не найден
STPIMS-ERR-054 Больше двух мобильных обновлений
STPIMS-ERR-055 Номера не найдены
STPIMS-ERR-056 Проблема при авторизации
STPIMS-ERR-057 Недостаточно средств
STPIMS-ERR-058 Карта заблокирована
STPIMS-ERR-060 Не зарегистрированный пользователь
STPIMS-ERR-061 Запрашиваемая транзакция не найдена
STPIMS-ERR-062 Неправильный запрос
STPIMS-ERR-064 Оплата отменена
STPIMS-ERR-065 Оплата в процессе
STPIMS-ERR-066 Вы недавно оплатили на этот лицевой счет, попробуйте позже
STPIMS-ERR-067 Срок действия вашей карты истек. Просим обратиться в банк.
STPIMS-ERR-068 Свяжитесь с эмитентом. Просим обратиться в банк.
STPIMS-ERR-069 Обнаружена подозрительная карта. Просим обратиться в банк.
STPIMS-ERR-070 Отказано в транзакции. Просим обратиться в банк.
STPIMS-ERR-072 Ваши операции запрещены. Просим обратиться в банк.
STPIMS-ERR-073 Ваша карта является утерянной. Просим обратиться в банк.
STPIMS-ERR-074 Что-то не так с вашей картой. Просим обратиться в банк.
STPIMS-ERR-075 Что-то не так с вашей картой. Просим обратиться в банк.
STPIMS-ERR-076 Карта недействительна. Просим обратиться в банк.
STPIMS-ERR-077 Что-то не так с вашей картой. Просим обратиться в банк.
STPIMS-ERR-078 Что-то не так с вашей картой. Просим обратиться в банк.
STPIMS-ERR-079 Ваша карта заблокирована (не активированная). Просим обратиться в банк.
STPIMS-ERR-080 Превышено количество попыток ввода PIN кода. Просим обратиться в банк.
STPIMS-ERR-081 Принудительная смена PIN-кода. Просим обратиться в банк.
STPIMS-ERR-082 Ваша карта заблокирована по причине задолженности по кредиту. Просим обратиться в банк.
STPIMS-ERR-083 Виртуальная карта не активирована
STPIMS-ERR-084 По данной карте доступны только PIN-транзакции
STPIMS-ERR-085 Ваша карта не персонифицирована. Просим обратиться в банк.
STPIMS-ERR-086 Что-то не так с вашей картой. Просим обратиться в банк.
STPIMS-ERR-087 Временно заблокировано пользователем
STPIMS-ERR-088 Данная карта заблокирована пользователем. Просим обратиться в банк.
STPIMS-ERR-089 Не подключено SMS-информирование. Просим подключить SMS-информирование
STPIMS-ERR-090 Карта с данным номером не найдена. Неверно указана дата истечения срока вашей карты.
STPIMS-ERR-092 Транзакция закрыта
STPIMS-ERR-093 Ошибка в системе биллинга поставщика
STPIMS-ERR-094 Нет связи с ЕОПЦ
STPIMS-ERR-095 Пользователь заблокирован
STPIMS-ERR-097 Карта существует
STPIMS-ERR-098 OTP код указан неверно
STPIMS-ERR-099 Данные EPOS не указаны
STPIMS-ERR-100 Запрашиваемая транзакция ранее была отменена
STPIMS-ERR-101 Транзакция не отменилась
STPIMS-ERR-102 СМС не отправилось, скорее всего СМС шлюз не доступен
STPIMS-ERR-103 Терминал не найден
STPIMS-ERR-104 P2P переводы отключены для данного банка
STPIMS-ERR-105 Пользователь и карта не взаимосвязанны
STPIMS-ERR-106 Некорректный формат СМС
STPIMS-ERR-107 Рассрочка / Автоплатеж / Кредит не найден
STPIMS-ERR-108 Некорретные данные платежа
STPIMS-ERR-109 Данные EPOS некорректы
STPIMS-ERR-111 Карты отправителя и получателя не должны быть идентичными
STPIMS-ERR-112 Недостаточно средств на балансе карты для проведения платежа
STPIMS-ERR-113 Платеж закрыт
STPIMS-ERR-114 Платеж закрыт
STPIMS-ERR-116 Ошибка при получении информации по карте
STPIMS-ERR-117 Неправильный номер карты
STPIMS-ERR-118 Статус платежа неизвестен
STPIMS-ERR-120 Оплата временно невозможна
STPIMS-ERR-121 Перевод в обработке
STPIMS-ERR-124 Ключ сессии пользователя не создан
STPIMS-ERR-125 Сессия пользователя не удалена
STPIMS-ERR-127 У партнера не добавлено ни одной карты, либо карта неактивна
STPIMS-ERR-128 Указанный номер счета не найден в указанной транзакции
STPIMS-ERR-130 При создании планировщика необходимо указать карту для списания
STPIMS-ERR-134 Не указана карта отправителя
STPIMS-ERR-135 Не указана карта получателя
STPIMS-ERR-136 Переводы с использованием корпоративных карт запрещены
STPIMS-ERR-137 Переводы с использованием корпоративных карт запрещены
STPIMS-ERR-138 Ежемесячный лимит превышен для p2p
STPIMS-ERR-139 Одноразовый лимит превышен для p2p
STPIMS-ERR-140 Одноразовый лимит превышен для p2p
STPIMS-ERR-142 Холдирование не подтверждено
STPIMS-ERR-143 Холдирование не снято
STPIMS-ERR-144 Время холдирования истекло
INFO-201 Код подтверждения отправлен на номер СМС-информирования
INFO-202 Платеж в обработке

Системные ошибки (МПС)

Код Описание Комментарий
0 Успех Операция завершилась успешно
-1 Внутренняя ошибка Обратитесь к администратору, произошла системная ошибка
-20 Терминал не найден Терминал не найден или не зарегистрирован. Обратитесь к администратору
-11 Транзакция находится в неопределенном состоянии Транзакция не может быть продолжена. Зависит от выполняемой операции и состояния транзакции
-12 Транзакция не найден Транзакция не найдена по заданному идентификатору
-100 В процессинге произошла ошибка В процессинге произошла ошибка
-200 Карта не найдена Карта не найдена
-201 Карта неверифицирована Карта не прошла 3DS верификацию

Системные статусы (МПС)

Статус Описание
1 Транзакция создана
2 Ожидание статуса создания транзакции
3 Ожидание статуса подтверждения транзакции
4 Подтверждение транзакции
5 Транзакция завершилась неуспешно
6 Отмена транзакции завершилась успешно
7 Возврат транзакции завершился успешно
8 Ожидание статуса отмены транзакции
9 Ожидание статуса возврата транзакции

Состояния 3DS верификации (МПС)

Статус Описание
PENDING Ожидание 3DS верификации карты
VERIFIED 3DS верификация прошла успешно
FAILED 3DS верификация завершилась неуспешно

Справочник статусов и типов (МПС - Привязка карт)

Коды ошибок

Код Название Описание
0 OK Успешный запрос
-1 ERROR Произошла системная ошибка
-2 UNDEFINED Неопределенная ошибка
-100 PROCESSING_ERROR Ошибка при обработке запроса
-10 TRANSACTION_UNIQUENESS_ERROR Транзакция уже существует
-11 TRANSACTION_INVALID_STATE_ERROR Транзакция в неверном состоянии
-12 TRANSACTION_NOT_FOUND Транзакция не найдена
-15 TRANSACTION_NOT_CANCELLED Невозможно отменить транзакцию, попробуйте позже
-203 TRANSACTION_DECLINED Транзакция отклонена платежным провайдером
-300 INSUFFICIENT_FUNDS Транзакция отклонена из-за недостаточности средств
-13 COMMISSION_ERROR Ошибка при расчете комиссии
-200 CARD_NOT_FOUND Карта не найдена
-201 CARD_NOT_VERIFIED Ожидается 3D-авторизация карты
-202 CARD_NOT_VALID Карта не является действительной
-204 CARD_BIND_NOT_VALID Привязка карты не активна
-20 TERMINAL_NOT_FOUND Терминал не найден
-21 TERMINAL_CONFIGURATION_ERROR Ошибка конфигурации терминала
-350 STORE_NOT_FOUND Магазин не найден по идентификатору
-400 API_KEY_NOT_FOUND API-ключ не найден

Статусы транзакций (status)

Код Статус
0 NEW
1 OPEN
2 PENDING_OPEN
3 PENDING_CONFIRM
4 SUCCESS
5 FAILED
6 CANCELLED
7 REVERTED
8 PENDING_CANCELLED
9 PENDING_REVERTED

Статусы верификации карт (verified_state)

Статус
OPEN
PENDING
VERIFIED
FAILED

Типы процессинговых транзакций (card_type)

Тип
VISA
MASTERCARD

Песочница

Для тестирования и интеграции с API рекомендуется использование тестовых платежных данных. Все операции, проводимые с приведенными картами имеют демонстративный характер, и не подразумевают списание настоящих денежных средств.

Тестовые карты:

  1. PAN: 8600490744313347 Expiry: 10/24

  2. PAN: 8600332914249390 Expiry: 09/25

  3. PAN: 8600492993407481 Expiry: 10/24

  4. PAN: 8600312990314318 Expiry: 08/23

  5. PAN: 9860090101431907 Expiry: 05/25

Тестовые карты для отладки ошибок:

  1. PAN: 8600312987000557 Expiry: 12/22 - ошибка на стороне процессинга

  2. PAN: 8600493214116133 Expiry: 10/24 - не подключено SMS информирование

  3. PAN: 8600492986215602 Expiry: 03/20 - истек срок действия карты

  4. PAN: 8600312998546358 Expiry: 10/23 - недостаточно средств на балансе

Callback API

Callback API - механизм согласования с мерчантом проводимых транзакций. При проведении каждой транзакции система ATMOS обращается в биллинговую систему мерчанта, и передает ей данные платежа в формате JSON. Только после получения успешного статуса со стороны мерчанта сумма будет списана.

Для Поставщика услуг в системе ATMOS предоставляется api_key для проверки входящих сообщений.

Отправляемые данные

Callback API отправляет в систему поставщика следующие данные:

Параметр Значение
store_id ID мерчанта
transaction_id ID транзакции
transaction_time время оплаты
amount сумма оплаты
invoice идентификатор оплаченного инвойса
sign уникальная цифровая подпись
{
   "status": 1,
   "message": "Успешно"
}

{
   "status": 0,
   "message": "Инвойс с номером 123 отсутствует в системе"
}

Примеры ответа биллинга поставщика(мерчанта)

Callback API подтверждает оплату только в том случае, если ответ от биллинга мерчанта имеет значение параметра status 1 и код ответа 200. Примеры ответов приведены в области сбоку

Параметр Значение
status статус ответа
message текстовое сообщение(детали статуса)

Последовательность действий

Следуя изложенной информации, можно пошагово описать приницип работы механизма Callback API следующим образом:

  1. На стороне ATMOS формируется платеж и запускается процесс оплаты;
  2. Перед подтверждением оплаты система ATMOS обращается к биллингу мерчанта, отправляя данные платежа(см. отправляемые данные);
  3. Мерчант подтверждает или отклоняет оплату (см. примеры ответа биллинга поставщика(мерчанта))
  4. Транзакция завершена

Альтернативные виды оплаты

HTML-виджет

Оплата через виджет - решение для упрощенной интеграции с платежным сервисом ATMOS. Платежный виджет предоставляет возможность принимать оплаты на стороне сайта мерчанта, через сгенерированный специальный виджет оплаты. Виджет оплаты создается через конструктор, с указанием необходимых параметров, которые будут приведены ниже.

Инструкция по установке виджета на сайт

Встраиваемый код:

    <!--  тег head -->
    <script src="https://cdn.pays.uz/checkout/js/v1.0.1/test-checkout.js">
    </script>
    <!--  тег head -->

    <div id="parent-frame">
        <script th:inline="javascript">
            /*<![CDATA[*/
            paymo_open_widget({
                parent_id: "parent-frame",  // id html-элемента для встраивания виджета
                store_id: 0,                // уникальный id вашего store
                account: "abc",             // идентификатор платежа
                terminal_id: 0,             // id терминала(если есть)
                success_redirect: "url",    // адрес перенаправления после успешной оплаты
                fail_redirect: "url",       // адрес перенаправления после неудачной оплаты
                version: "1.0.0",           // версия виджета
                amount: 500000,             //сумма платежа в тиинах
                details: "string",          // детали платежа (строка)
                lang:"ru",                  // язык виджета (en, ru, uz)
                key:                        // ключ авторизации,
                theme: "blue"               // Цвет виджета
            });
            /*]]>*/
        </script>
    <div/>
  1. Встройте на Вашу страницу html-тег <script src="url"></script>. В атрибуте src тега script укажите url получения скрипта:

    • на время тестирования: http://cdn.pays.uz/checkout/js/v1.0.1/test-checkout.js
    • на принятие реальных оплат: https://cdn.pays.uz/checkout/js/v1.0.1/checkout.js
  2. Встройте в html разметку Вашего сайта приведенный в боковой панели код;

  3. Укажите параметры, необходимые для работы виджета;

  4. Виджет готов к использованию.

Параметры виджета

Параметр Описание Обязательность
parent_id id html-элемента для встраивания виджета да
store_id id вашего store да
account идентификатор платежа(прозизв.строка) да
terminal_id id терминала(если есть) нет
success_redirect url адрес перенаправления после успешной оплаты да
fail_redirect url адрес перенаправления при неудачной оплате да
version версия виджета нет
amount сумма платежа в тиинах да
details детали платежа (прозизв.строка) нет
lang язык виджета (en, ru, uz) нет
key ключ авторизации да
theme цветовое оформление виджета нет

Платежная странца

Платежная странца - наиболее удобное решение для мобильных приложений, поддерживающих webview. Представляет из себя безопасную оплату на стороне ATMOS.

Для оплаты создания через платежную страницу требутся:

  1. вызвать метод /merchant/pay/create и создать драфт транзакции для оплаты;
  2. перейти на страницу оплаты, с указанием следующих параметров:
    • storeId - уникальный id вашего store;
    • transactionId - id созданной ранее транзакции;
    • redirectLink - url для перенаправления после оплаты(необязательно).

В итоге, сгенерированная ссылка должна иметь подобный вид:

https://test-checkout.pays.uz/invoice/get?storeId=1111&transactionId=222222&redirectLink=http://site.com

Тестовая страница(песочница): http://test-checkout.pays.uz/invoice/get

Платежная страница(production): https://checkout.pays.uz/invoice/get