По любому вопросу мы в одном клике

Задать вопрос

Введение

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

В процессе выплат участвуют следующие стороны:

Общий процесс взаимодействия с использованием только API вызовов (для работы с реквизитами получателя может потребоваться сертификация PCI DSS):

  1. Получатель обращается к Оператору Партнера или самостоятельно в Сервис Партнера за получением Выплаты;
  2. При получении обращения Сервис Партнера осуществляет сбор платежных реквизитов Получателя;
  3. Сервис Партнера регистрирует проведение Выплаты в МВ и подтверждает Выплату;
  4. Производится Выплата и возврат результата проведения Выплаты;
  5. Сервис Партнера может запросить статус Выплаты в любой момент.

Общий процесс взаимодействия с использованием API вызовов и страниц Банка (страница сбора реквизитов получателя, финишная страница):

  1. Получатель обращается к Оператору Партнера или самостоятельно в Сервис Партнера за получением Выплаты;
  2. При получении обращения Сервис Партнера регистрирует проведение выплаты в МВ;
  3. Сервис Партнера получает адрес страницы сбора реквизитов Получателя для ввода платежных реквизитов Получателя для отображения Оператору или Получателю;
  4. Страница сбора реквизитов Получателя осуществляет сбор платежных реквизитов Получателя и подтверждение Выплаты;
  5. Производится Выплата и возврат результата проведения Выплаты;
  6. Сервис Партнера может запросить статус Выплаты в любой момент.

Для выплаты денежных средств с транзитного счета Партнера необходимо поддержать следующие сценарии выплаты:

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

Особенности реализации и ограничения

  1. Отмены и возвраты ранее выполненных выплат не поддерживаются;
  2. Поддерживаются выплаты только в валюте с кодом 398 (KZT);
  3. Выплаты осуществляются только на карты банков Казахстана.

Сценарии работы с использованием API

Запрос баланса выплат через API

Данный сценарий описывает последовательность действий по запросу баланса выплат с использованием API.

sequenceDiagram participant O as Оператор participant PS as Сервис Партнера participant PM as Модуль выплат autonumber O->>PS: Инициация запроса баланса activate O activate PS PS->>PM: Запрос на получение баланса
(getAmount.do) activate PM PM->>PM: Проверка данных запроса,
сбор данных по балансу PM-->>PS: Ответ с данными
о балансе deactivate PM PS-->>O: Отображение баланса deactivate PS deactivate O
  1. Оператор принимает решение о запросе баланса по выплатам и выполняет на стороне Сервиса Партнера необходимые действия;
  2. Сервис Партнера отправляет запрос баланса (getAmount.do) в Модуль Выплат;
  3. Входная проверка данных, формирование информации о балансе выплат;
  4. Модуль Выплат возвращает в Сервис Партнера данные о балансе;
  5. Сервис Партнера отображает Оператору информацию о балансе.

Выплата денежных средств только через API

Данный сценарий описывает последовательность выплаты из сервиса партнера с использованием API. Сбор реквизитов Получателя реализуется на стороне Партнера (для работы с реквизитами получателя может потребоваться сертификация PCI DSS).

sequenceDiagram participant O as Оператор participant PS as Сервис Партнера participant PM as Модуль выплат autonumber O->>PS: Инициация выплаты activate O activate PS PS->>PM: Запрос на осуществление выплаты
(performPayout.do) activate PM PM->>PM: Проверка данных запроса,
выполнение регистрационных
и платежных операций PM-->>PS: Ответ с результатом
осуществления выплаты deactivate PM PS-->>O: Статус выплаты deactivate PS deactivate O
  1. Оператор (или Получатель) принимает решение о проведении выплаты и выполняет на стороне Сервиса Партнера необходимые действия;
  2. Сервис Партнера отправляет запрос на осуществление выплаты (performPayout.do) в Модуль Выплат и передает все необходимые параметры выплаты;
  3. Входная проверка данных, выполнение регистрационных и платежных операций;
  4. Модуль Выплат возвращает в Сервис Партнера итоговый статус выплаты;
  5. Сервис Партнера уведомляет Оператора (или Получателя) о статусе выплаты.

Выплата денежных средств через API и страницы выплат Банка

Данный сценарий описывает последовательность выплаты из сервиса партнера с использованием API и страницы выплат Банка. Сбор карточных данных Получателя реализуется с использованием страницы на стороне Банка (для этого не требуется сертификация PCI DSS).

sequenceDiagram participant O as Оператор participant PS as Сервис Партнера participant PM as Модуль выплат autonumber O->>+PS: Инициация выплаты activate O PS->>+PM: Запрос на регистрацию выплаты
(registerPayout.do) PM->PM: Регистрация выплаты PM-->>-PS: URL страницы для указания
реквизитов Получателя PS-->>-O: URL страницы для указания
реквизитов Получателя O->>+PM: Открытие страницы
Заполнение реквизитов Получателя
Подтвержение выплаты PM->PM: Выполнение выплаты PM-->>-O: Редирект на финишную страницу O->>+PM: Загрузка финишной страницы,
запрос результата выплаты activate PM PM->>PM: Формирование статуса PM-->>O: Результат осуществлении выплаты deactivate PM deactivate O
  1. Оператор (или Получатель) принимает решение о проведении выплат и выполняет на стороне Сервиса Партнера необходимые действия;
  2. Сервис Партнера отправляет в Модуль Выплат запрос на регистрацию выплаты (registerPayout.do) и передает все необходимые параметры для регистрации;
  3. Модуль Выплат регистрирует выплату;
  4. Модуль Выплат возвращает URL страницы (в ссылке присутствует уникальный идентификатор выплаты);
  5. Сервис Партнера перенаправляет Оператора (или Получателя) на полученный URL страницы;
  6. Оператор (или Получатель) переходит на страницу, заполняет реквизиты Получателя и подтверждает выплату;
  7. Модуль Выплат выполняет выплату;
  8. Модуль Выплат возвращает URL страницы (в ссылке присутствует уникальный идентификатор выплаты);
  9. Оператор (или Получатель) переходит на страницу, и инициирует получение статуса;
  10. Модуль Выплат формирует статус;
  11. Модуль Выплат показывает статус на странице.

Запрос статуса выплаты

Данный сценарий описывает последовательность запроса статуса выплаты с использованием API. Запросить актуальный статус выплаты можно на любом этапе ее проведения.

sequenceDiagram participant O as Оператор/Получатель participant PS as Сервис Партнера participant PM as Модуль выплат autonumber O->>PS: Запрос Статуса выплаты activate O activate PS PS->>PM: Запрос результата выплаты
(getPayoutStatus.do) activate PM PM->>PM: Проверка данных запроса
и формирование ответа PM-->>PS: Ответ с результатом
проведения выплаты deactivate PM PS-->>O: Результат статуса выплаты deactivate PS deactivate O
  1. Оператор (или Получатель) запрашивает статус выплаты в Сервисе Партнера;
  2. Сервис Партнера отправляет в Модуль Выплат запрос статуса выплаты (getPayoutStatus.do);
  3. Модуль Выплат проверяет данные запроса и формирует ответ;
  4. Модуль Выплат возвращает в Сервис Партнера итоговый статус выплат;
  5. Сервис Партнера уведомляет Оператора (или Получателя) о статусе выплаты.

API запросы для выплат

Запросы осуществляются с использованием протокола HTTP 1.1 с использованием SSL (HTTPS), на адрес:

TEST: https://3dsec.berekebank.kz/payouts/api/{api_version}/{api_method}
PROD: https://securepayments.berekebank.kz/payouts/api/{api_version}/{api_method}

HTTPS POST API запросы должны отвечать следующим требованиям:

HTTPS POST API запросы должны содержать заголовки:

Актуальная версия API для указания в контексте запроса ({api_version}): v2

Требования безопасности

Запрос проверки доступности Модуля Выплат

Для проверки работоспособности Модуля Выплат необходимо использовать HTTPS GET API запрос /payouts/api/v2/echo

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

Параметры не требуются.

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

Ответ предоставляется в формате text/plain. В ответе указывается текущая версия модуля выплат и имя ноды через дефис, в квадратных скобках указано имя инстанса.

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

curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/echo'

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

Payout v2.3 is online in channel Payout_APIserver - svip01[instance:svipUAT]

Запрос баланса

Для запроса остатка баланса для выплат необходимо использовать HTTPS POST API запрос /payouts/api/v2/getAmount.do. Данный запрос возвращает данные об остатке баланса при условии успешной обработки запроса.

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

Обязательность Параметр Тип Описание
Обязательно userName String [30] Логин Партнера, полученный при подключении
Обязательно password String [30] Пароль Партнера, полученный при подключении
Условие source Object Объект для передачи информации о реквизитах источника средств. Указывается только при использовании типа фондирования "Выплата денежных средств с корпоративной карты Партнера"
Условие source.bindingId String Идентификатор связки, по реквизитам которой должно быть списание денежных средств (получить идентификатор можно в специальном разделе Личного кабинета)

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

Обязательность Параметр Тип Описание
Обязательно errorCode String Код ошибки обработки запроса
Условие errorMessage String [512] Описание ошибки
Условие balanceDescriptionList Object Объект для передачи информации об остатке
Условие balanceDescriptionList.balanceSign String Тип доступного остатка. Возможные значения:
  • C - положительный доступный остаток;
  • D - отрицательный доступный остаток.
Условие balanceDescriptionList.balanceAmount Integer Сумма доступного остатка денежных средств в минимальных единицах валюты
Условие balanceDescriptionList.balanceCurrency String Код валюты доступного остатка (ISO 4217)
Необязательно balanceDescriptionList.balanceDescription String Описание доступного остатка

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

curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/getAmount.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "payout_api_username",
    "password": "payout_api_password",
    "source": {
      "bindingId": "4908a3c3-6c7c-75d3-9707-66ab06c12040"
    }
}'

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

{
    "errorCode": "0",
    "balanceDescriptionList": {
        "balanceAmount": 49925200,
        "balanceCurrency": "398",
        "balanceSign": "C"
    }
}

Регистрация выплаты

Для регистрации выплаты необходимо использовать HTTPS POST API запрос /payouts/api/v2/registerPayout.do. Данный запрос осуществляет регистрацию Выплаты и возвращает ссылку на страницу указания реквизитов Получателя. Сбор реквизитов получателя реализуется на стороне Банка (для работы с реквизитами получателя не требуется сертификация PCI DSS).

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

Обязательность Параметр Тип Описание
Обязательно userName String [30] Логин Партнера, полученный при подключении
Обязательно password String [30] Пароль Партнера, полученный при подключении
Обязательно orderNumber String[32] Уникальный идентификатор выплаты в системе Партнера
Обязательно amount Integer [12] Сумма выплаты в минимальных единицах валюты
Обязательно

currency String Код валюты платежа в соответствии с ISO 4217
Необязательно description String [598] Описание выплаты в свободной форме
Необязательно language String [2] Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию
Необязательно sessionTimeoutSecs Integer Продолжительность жизни заказа на Выплату в секундах. В случае если параметр не задан, будет использовано значение по умолчанию (1200 секунд)
Необязательно merchantLogin String Логин дочернего мерчанта, от имени которого необходимо выполнить оплату. Используется совместно с родительско-дочерней схеме мерчантов.
Условие client Object Объект для передачи информации о Получателе выплаты
Условие client.clientId String [30] Номер (идентификатор) клиента в системе Партнера. Требуется передавать для использования функционала связок
Необязательно client.email String [30] Адрес электронной почты Получателя
Необязательно client.phone String [15] Номер телефона Получателя в международном формате (9991234567)
Обязательно client.name String [24] Имя Получателя латиницей
Условие source Object Объект для передачи информации о реквизитах источника средств. Указывается только при использовании типа фондирования "Выплата денежных средств с корпоративной карты Партнера"
Условие source.bindingId String [36] Идентификатор связки, по реквизитам которой должно быть списание денежных средств (получить идентификатор можно в специальном разделе Личного кабинета)
Условие urls Object Объект для передачи информации об используемых URL
Обязательно urls.returnUrl String Адрес, на который требуется перенаправить Оператора (или Получателя) в случае успешной Выплаты. Адрес должен быть указан полностью, включая протокол
Необязательно urls.failUrl String Адрес, на который требуется перенаправить Оператора (или Получателя) в случае неуспешной Выплаты. Адрес должен быть указан полностью, включая протокол
Необязательно jsonParams Object Объект для передачи дополнительной информации по выплате для последующего хранения. Передаются в виде: {"name1":"value1", ... ,"nameN":"valueN"}
Необязательно jsonParams.$name String Дополнительный параметр со свободным названием

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

Обязательность Параметр Тип Описание
Обязательно errorCode String Код ошибки обработки запроса
Условие errorMessage String [512] Описание ошибки
Условие formUrl String URL статической платежной страницы, на который надо перенаправить браузер клиента. Отсутствует, если регистрация заказа на Выплату не удалась по причине ошибки, указанной в errorCode
Условие orderId String Уникальный идентификатор заказа на Выплату. Отсутствует, если регистрация заказа на Выплату не удалась по причине ошибки, указанной в errorCode
Условие orderNumber String Идентификатор заказа на Выплату в системе Партнера. Копируется из запроса

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

curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/registerPayout.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "payout_api_username",
    "password": "payout_api_password",
    "orderNumber": "1645458818047",
    "amount": 1234,
    "currency": "398",
    "description": "Decent payout",
    "language": "EN",
    "sessionTimeoutSecs": 300,
    "client": {
        "name": "John Doe",
        "clientId": "12345abc-d67e-8901-23fg-h45i67jk8901",
        "email": "payee@mail.com",
        "phone": "9991234567"
    },
    "urls": {
        "returnUrl": "https://partnerdomain.com/&result=ok",
        "failUrl": "https://partnerdomain.com/&result=ok",
    },
    "jsonParams": {
        "paramname1": "paramvalue1",
        "paramname2": "paramvalue2"
    }
}'

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

{
    "errorCode": "0",
    "orderNumber": "1645458818047",
    "orderId": "da42b8d9-328b-45e6-aa35-235e348268bf",
    "formUrl": "https://payoutdomain.com/payment/merchants/svip_payout_ab/payment_ru.html?mdOrder=da42b8d9-328b-45e6-aa35-235e348268bf"
}

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

Для проведения выплаты необходимо использовать HTTPS POST API запрос /payouts/api/v2/performPayout.do.
Данный запрос осуществляет связанную отработку Выплаты и возвращает статус.
Сбор реквизитов Получателя реализуется на стороне Партнера (для работы с реквизитами получателя требуется сертификация PCI DSS).

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

Обязательность Параметр Тип Описание
Обязательно userName String [30] Логин Партнера, полученный при подключении
Обязательно password String [30] Пароль Партнера, полученный при подключении
Обязательно orderNumber String[32] Уникальный идентификатор выплаты в системе Партнера
Обязательно amount Integer [12] Сумма выплаты в минимальных единицах валюты
Обязательно

currency String Код валюты платежа в соответствии с ISO 4217
Необязательно description String [598] Описание выплаты в свободной форме
Необязательно language String [2] Ключ языка по ISO 639-1. Если язык не указан, используется язык по умолчанию
Необязательно merchantLogin String Логин дочернего мерчанта, от имени которого необходимо выполнить оплату. Используется совместно с родительско-дочерней схеме мерчантов.
Условие client Object Объект для передачи информации о Получателе выплаты
Условие client.clientId String [30] Номер (идентификатор) клиента в системе Партнера. Требуется передавать для использования функционала связок
Необязательно client.email String [30] Адрес электронной почты Получателя
Необязательно client.phone String [15] Номер телефона Получателя в международном формате (9991234567)
Обязательно client.name String [24] Имя Получателя латиницей
Условие source Object Объект для передачи информации о реквизитах источника средств. Указывается только при использовании типа фондирования "Выплата денежных средств с корпоративной карты Партнера"
Условие source.bindingId String Идентификатор связки, по реквизитам которой должно быть списание денежных средств (получить идентификатор можно в специальном разделе Личного кабинета)
Условие target Object Объект для передачи информации о реквизитах получателя средств. По согласованию данный блок может отсутствовать
Условие target.bindingId String Идентификатор связки, по реквизитам которой должно быть зачисление денежных средств. Указывается target.pan или target.bindingId или target.seToken. Подробнее о создании связки см. Создание связки клиента.
Условие target.pan String Номер карты зачисления денежных средств. Указывается target.pan или target.bindingId или target.seToken
Условие target.seToken String Шифрованное значение платежных данных. Указывается target.pan или target.bindingId или target.seToken. Подробнее о генерации seToken см. Запрос открытой компоненты ключа.
Необязательно jsonParams Object Объект для передачи дополнительной информации по выплате для последующего хранения. Передаются в виде: {"paramname1":"paramvalue1", ... ,"paramnameN":"paramvalueN"}
Необязательно jsonParams.$name String Дополнительный параметр со свободным названием

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

Обязательность Параметр Тип Описание
Обязательно amount Integer [12] Сумма выплаты в минимальных единицах валюты
Необязательно fee Integer [12] Сумма комиссии в минимальных единицах валюты
Обязательно

currency String Код валюты платежа в соответствии с ISO 4217
Условие creationDate Integer Дата и время создания (регистрации) выплаты в формате timestamp
Необязательно description String [598] Описание выплаты
Обязательно errorCode String Код ошибки обработки запроса (0 - нет ошибки)
Условие errorMessage String [512] Описание ошибки
Условие orderId String [36] Уникальный номер заказа в Модуле Выплат
Обязательно orderNumber String [32] Уникальный идентификатор заказа в системе Партнера
Обязательно

orderStatus String Значение этого параметра указывает статус заказа в платежном шлюзе. Отсутствует, если заказ не был найден. Ниже приведен список доступных значений:
  • 0 - заказ зарегистрирован, но не оплачен;
  • 1 - Предавторизованная сумма захолдирована (для двухстадийных платежей);
  • 2 - проведена полная авторизация суммы заказа;
  • 3 - авторизация отменена;
  • 4 - по транзакции была проведена операция возврата;
  • 5 - инициирована авторизация через ACS банка-эмитента;
  • 6 - авторизация отклонена.
Условие orderParams Object Дополнительные параметры выплаты, переданные при выплате
Необязательно orderParams.$name String Дополнительный параметр с любым названием
Необязательно operationList Array of objects Объект, содержащий информацию о транзакциях, завершенных в заказе
Необязательно operationList.amount Integer [12] Сумма операции в минимальных единицах валюты
Необязательно operationList.cardholderName String [26] Имя держателя карты (при наличии)
Необязательно operationList.currency Integer [3] Код валюты платежа ISO 4217
Необязательно operationList.operationDate Integer Дата и время совершения операции в формате timestamp
Необязательно operationList.operationType String Тип транзакции. Доступны следующие значения:
  • P2P_CREDIT - зачисляет деньги
Необязательно operationList.orderId String Уникальный идентификатор заказа в Модуле Выплат
Необязательно operationList.orderNumber String Уникальный номер заказа в система Партнера
Необязательно operationList.refNum String [12] Идентификатор операции, который присваивается операции по ее завершению
Необязательно operationList.resultCode Integer Код ошибки при выполнении запроса. Возможные значения:
  • 0 - в случае успеха;
  • 1 - в случае ошибки.
Необязательно operationList.resultCodeDescription String [512] Описание кода ошибки транзакции
Условие source Object Объект для передачи информации о реквизитах источника средств. Указывается только при использовании типа фондирования "Выплата денежных средств с корпоративной карты Партнера"
Условие source.bindingId String [36] Идентификатор связки, по реквизитам которой должно быть списание денежных средств (получить идентификатор можно в специальном разделе Личного кабинета)
Условие target Object Объект для передачи информации о реквизитах получателя средств
Необязательно target.bindingId String [255] Идентификатор связки использованной для выплаты
Необязательно target.clientId String [255] Идентификатор клиента использованный для выплаты
Необязательно target.maskedPan String [19] Маскированный номер карты зачисления использованной для выплаты
Условие acsUrl String URL для перехода на ACS (в случае если необходимо подтверждение транзакции по 3DS)
Условие info String Информационное сообщение (в случае если необходимо подтверждение транзакции по 3DS)
Условие is3DSVer2 Boolean Если true - требуется проверка по 3DS2 (в случае если необходимо подтверждение транзакции по 3DS)
Условие mdOrder String Идентификатор заказа в Модуле выплат (в случае если необходимо подтверждение транзакции по 3DS)
Условие paReq String Значение paReq для отправки в ACS (в случае если необходимо подтверждение транзакции по 3DS)
Условие termUrl String Адрес возврата с ACS (в случае если необходимо подтверждение транзакции по 3DS)
Условие shortUrl String Короткая ссылка для прохождения 3ds на стороне РБС. (передается только для 3ds ver.2)

Пример запроса - источник фондирования транзитный счет

curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/performPayout.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "payout_api_username",
    "password": "payout_api_password",
    "orderNumber": "payout_1",
    "amount": 1234,
    "currency": "398",
    "client": {
        "name": "John Doe",
        "clientId": "12345abc-d67e-8901-23fg-h45i67jk8901",
        "email": "payee@mail.com",
        "phone": "9991234567"
    },
    "target": {
        "pan": "4111111111111111"
    },
    "jsonParams": {
        "paramname1": "paramvalue1",
        "paramname2": "paramvalue2"
    }
}'

Пример запроса - источник фондирования корпоративная карта

curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/performPayout.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "payout_api_username",
    "password": "payout_api_password",
    "orderNumber": "payout_1",
    "amount": 1234,
    "currency": "398",
    "client": {
        "name": "John Doe",
        "clientId": "12345abc-d67e-8901-23fg-h45i67jk8901",
        "email": "payee@mail.com",
        "phone": "9991234567"
    },
    "source": {
        "bindingId": "e7141803-e78a-79ef-9a10-db3b06c12040"
    },
    "target": {
        "pan": "4111111111111111"
    },
    "jsonParams": {
        "paramname1": "paramvalue1",
        "paramname2": "paramvalue2"
    }
}'

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

{
    "errorCode": "0",
    "errorMessage": "Успешно",
    "amount": 1234,
    "fee": 0,
    "currency": "398",
    "orderNumber": "1645458818059_12",
    "description": "Decent payout",
    "orderStatus": "2",
    "operationList": [
        {
            "operationDate": 1665414462047,
            "operationType": "P2P_CREDIT",
            "amount": 1234,
            "currency": "398",
            "resultCode": 0,
            "resultCodeDescription": "Перевод исполнен",
            "refNum": "948498232196",
            "pan": "411111XXXXXX1111",
            "cardholderName": "CARDHOLDER NAME"
        }
    ],
    "source": {
        "bindingId": "83309cde-a56d-7409-88dd-c02e00ab3428"
    },
    "target": {
        "bindingId": "83309cde-a56d-7409-88dd-c02e00ab3428",
        "clientId": "12345abc-d67e-8901-23fg-h45i67jk8901",
        "maskedPan": "411111XXXXXX1111"
    },
    "orderParams": {
        "paramname1": "paramvalue1",
        "paramname2": "paramvalue2"
    }
}

Запрос статуса выплаты

Для получения статуса выплаты необходимо использовать HTTPS POST API запрос /payouts/api/v2/getPayoutStatus.do

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

Обязательность Параметр Тип Описание
Обязательно userName String [30] Логин Партнера, полученный при подключении
Обязательно password String [30] Пароль Партнера, полученный при подключении
Условие orderNumber String Идентификатор заказа в системе Партнера. В запросе должен присутствовать либо orderId, либо orderNumber
Условие orderId String Уникальный идентификатор заказа на Выплату (в рамках модуля выплат). В запросе должен присутствовать либо orderId, либо orderNumber
Необязательно language String Язык в кодировке ISO 639-1. Если не указан, будет использован язык по умолчанию

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

Обязательность Параметр Тип Описание
Обязательно errorCode String Код ошибки обработки запроса (0 - нет ошибки)
Условие errorMessage String [512] Описание ошибки
Обязательно amount Integer [12] Сумма выплаты в минимальных единицах валюты
Необязательно fee Integer [12] Сумма комиссии в минимальных единицах валюты
Обязательно

currency String Код валюты платежа в соответствии с ISO 4217
Обязательно orderNumber String [32] Уникальный идентификатор заказа в системе Партнера
Условие orderId String [36] Уникальный номер заказа в Модуля Выплат
Необязательно description String [598] Описание заказа
Обязательно

orderStatus String Значение этого параметра указывает статус заказа в платежном шлюзе. Отсутствует, если заказ не был найден. Ниже приведен список доступных значений:
  • 0 - заказ зарегистрирован, но не оплачен;
  • 1 - Предавторизованная сумма захолдирована (для двухстадийных платежей);
  • 2 - проведена полная авторизация суммы заказа;
  • 3 - авторизация отменена;
  • 4 - по транзакции была проведена операция возврата;
  • 5 - инициирована авторизация через ACS банка-эмитента;
  • 6 - авторизация отклонена.
Необязательно operationList Array of objects Объект, содержащий информацию о транзакциях, завершенных в заказе
Необязательно operationList.amount Integer [12] Сумма операции в минимальных единицах валюты
Необязательно operationList.cardholderName String [26] Имя держателя карты (при наличии)
Необязательно operationList.currency Integer [3] Код валюты платежа ISO 4217
Необязательно operationList.operationDate Integer Дата и время совершения операции в формате timestamp
Необязательно operationList.operationType String Тип транзакции. Доступны следующие значения:
  • P2P_CREDIT - зачисляет деньги
Необязательно

operationList.orderNumber String Уникальный номер заказа в шлюзе. Присутствует только если у Партнера настроены выплаты с раздельными операциями на дебит и кредит. Узнать или изменить тип выплат можно по обращению в службу поддержки.
    Необязательно

    operationList.orderId String [1..36] Уникальный идентификатор заказа в шлюзе. Присутствует только если у Партнера настроены выплаты с раздельными операциями на дебит и кредит. Узнать или изменить тип выплат можно по обращению в службу поддержки.
    Необязательно operationList.panMaskedTo String [19] Маскированный номер карты для зачисления средств
    Необязательно operationList.refNum String [12] Идентификатор операции, который присваивается операции по ее завершению
    Необязательно operationList.resultCode Integer Код ошибки при выполнении запроса. Возможные значения:
    • 0 - в случае успеха;
    • 1 - в случае ошибки.
    Необязательно operationList.resultCodeDescription String [512] Описание кода ошибки транзакции
    Условие source Object Объект для передачи информации о реквизитах источника средств. Указывается только при использовании типа фондирования "Выплата денежных средств с корпоративной карты Партнера"
    Условие source.bindingId String Идентификатор связки, по реквизитам которой была проведена попытка списания денежных средств
    Условие target Object Объект для передачи информации о реквизитах получателя средств
    Необязательно target.bindingId String [255] Идентификатор связки, использованной для выплаты
    Необязательно target.clientId String [255] Идентификатор клиента, использованный для выплаты
    Необязательно target.maskedPan String [19] Маскированный номер карты зачисления, использованной для выплаты
    Условие orderParams Object Дополнительные параметры выплаты, переданные при выплате
    Необязательно orderParams.$name String Дополнительный параметр с любым названием

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

    curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/getPayoutStatus.do' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "username": "payout_api_username",
        "password": "payout_api_password",
        "orderNumber": "payout_1"
    }'

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

    {
        "errorCode": "0",
        "errorMessage": "Успешно",
        "amount": 1234,
        "fee": 0,
        "currency": "398",
        "orderNumber": "1645458818059_12",
        "description": "Decent payout",
        "orderStatus": "2",
        "operationList": [
            {
                "datetime": "1665414462047",
                "operationType": "P2P_CREDIT",
                "amount": 1234,
                "currency": "643",
                "resultCode": 0,
                "resultCodeDescription": "Перевод исполнен",
                "refNum": "948498232196",
                "pan": "411111XXXXXX1111",
                "cardholderName": "CARDHOLDER NAME"
            }
        ],
        "target": {
            "bindingId": "83309cde-a56d-7409-88dd-c02e00ab3428",
            "clientId": "12345abc-d67e-8901-23fg-h45i67jk8901",
            "maskedPan": "411111XXXXXX1111"
        },
        "orderParams": {
            "name1": "value1",
            "name2": "value2"
        }
    }

    Создание связки клиента

    Для создания связки получателя средств необходимо использовать API запрос /payouts/api/v2/сreateTargetBindingId.do. Данный запрос осуществляет создание связки с указанным идентификатором клиента и возвращает её параметры.

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

    Обязательность Параметр Тип Описание
    Обязательно username String Логин Партнера, полученный при подключении.
    Обязательно password String Пароль Партнера, полученный при подключении.
    Обязательно orderNumber String Уникальный идентификатор заказа в системе Партнера. Впоследствии можно использовать этот идентификатор в запросе getPayoutStatus.do, чтобы запросить результат создания связки.
    Обязательно clientId String Номер (идентификатор) клиента в системе Партнера.
    Обязательно pan String Номер карты для которой будет создана связка.
    Необязательно month String Месяц срока действия карты
    Необязательно year String Год срока действия карты
    Необязательно cardholderName String Имя держателя карты

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

    Обязательность Параметр Тип Описание
    Обязательно errorCode String Код ошибки (0 - нет ошибки)
    Условие errorMessage String Описание ошибки. Присутствует только в случае, если произошла ошибка.
    Обязательно orderNumber String Идентификатор заказа в системе Партнера.
    Обязательно orderId String Уникальный идентификатор заказа на Выплату (в рамках модуля выплат)
    Необязательно bindingId String Идентификатор связки. Если при выполнении метода произошла ошибка, и в результате связка не была создана, то параметры связки не будут возвращены в ответе.
    Необязательно clientId String Идентификатор клиента
    Необязательно maskedPan String Маскированный номер карты
    Необязательно orderType String Тип заказа, зависит от метода на который обратился пользователь. Допустимые значения:
    • CreateBindingId - создание связки

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

    curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/сreateTargetBindingId.do' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "pan": "4111111111111111",
        "orderNumber": "1728285261_2111",
        "clientId": "TestClientID",
        "userName": "payout-api",
        "password": "payout-api"
    }'

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

    {
        "errorCode": "0",
        "errorMessage": "SUCCESS",
        "bindingId": "bff03edd-66ee-7f1d-ac01-936e088ae411",
        "clientId": "TestClientID",
        "maskedPan": "4111XXXXXXXX1111",
        "orderNumber": "1728285261_2111"
    }

    Запрос открытой компоненты ключа

    Запрос /payouts/api/v2/keys.do возвращает публичный ключ модуля Выплат.

    Для получения seToken, который можно передать в методе performPayout.do, необходимо зашифровать этим ключом строку timestamp/uuid/pan///////orderNumber с использованием алгоритма шифрования RSA "RSA/None/PKCS1Padding" с длиной ключа 2048.

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

    Запрос направляется в модуль Выплат методом GET. Параметры отсутствуют.

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

    Обязательность Параметр Тип Описание
    Обязательно keys Array[object] Список действующих публичных ключей Модуля выплат
    Обязательно keys.keyValue String Строковое представление публичного ключа, включая маркеры начала и окончания ключа
    Обязательно keys.keyExpiration Number Срок действия ключа, дата в секундах по стандарту UNIX time
    Необязательно keys.protocolVersion String Версия алгоритма шифрования

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

    Откройте в браузере ссылку https://3dsec.berekebank.kz/payouts/api/v2/keys.do или выполните запрос:

    curl 'https://3dsec.berekebank.kz/payouts/api/v2/keys.do'

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

    {
        "keys": [
        {
            "keyValue":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvnLlDQH6gu+6d7DT9EGa65QX7MgokW74S1gYIYTg3C6bf6z69Sg4EtXewCsp7txrCLBAkvns3Xf6tutYfVoFAIiZ45THXt7NNXTZw522AqfOVwDYUENwZgDqwh5LlAQv5H7Xb1gSF2H1vLPo4maZiuKiY64WzkHnDQJ6IzsHAArvXIA6f6QbRTqaI0GHUI7WHDRxNKh0p6z1HFLQxjj0yswR8eYTU2M0Zov7/4bMqB1Bgs4ByCi3AUeG2jtia04ycod2EROkddJcdPF23+G1JH0k2f3Y1XwKDuQI38oVY8HIaS1uriBrLWtCfw7sbtiowE4+cB7GOZsxtB9edKLygQIDAQAB",
            "keyExpiration":1758189688460,
            "protocolVersion":"RSA-2048"
        }]
    }

    Получение отчета по выплатам

    Запрос getReportPayout.do позволяет получить выписку по выплатам Мерчанта.

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

    Обязательность Параметр Тип Описание
    Обязательно userName String Логин мерчанта, полученный при подключении.
    Обязательно password String Пароль мерчанта, полученный при подключении.
    Обязательно startDate String Начальная дата выписки. Формат: YYYY-MM-DD.
    Обязательно endDate String Конечная дата выписки. Формат YYYY-MM-DD. Максимальная разница между начальной и конечной датой выписки - 31 день.
    Обязательно reportName String Наименование необходимого отчета для мерчанта. Возможные значения:
    • SSPV_AcctStatement
    .

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

    Обязательность Параметр Тип Описание
    Обязательно errorCode Number Код статуса обработки операции в модуле Выплат. Код 0 означает, что операция выполнена успешно.
    Обязательно errorMessage String Описание результата обработки.
    Обязательно startDate String Начальная дата выписки. Значение такое же, как в запросе.
    Обязательно endDate String Конечная дата выписки. Значение такое же, как в запросе.
    Обязательно reportName String Наименование необходимого отчета для мерчанта. Значение такое же, как в запросе.
    Необязательно terminalId String Идентификатор устройства. Пример: 4225764450179702.
    Необязательно accountNumber String Номер счета обеспечения. Пример: KZ42914992240KZ001DC.
    Необязательно balanceInput String Баланс счета на начало периода. Разделитель - ".". Формат: 2 цифры после точки.
    Необязательно balanceOutput String Баланс счета на конец периода. Разделитель - ".". Формат: 2 цифры после точки.
    Необязательно turnoverDB String Обороты по дебету за указанный период. Разделитель - ".". Формат: 2 цифры после точки.
    Необязательно turnoverCR String Обороты по кредиту. Разделитель - ".". Формат: 2 цифры после точки.
    Необязательно transactions Array[object] Массив транзакций.
    Обязательно transactions.paymentOrderNumber String Номер документа. Пример: 25905147.
    Обязательно transactions.operationDate String Дата операции. Формат: YYYY-MM-DD. Пример: 2024-09-06.
    Обязательно transactions.payerBank String Банк плательщика. Поле может быть пустым.
    Обязательно transactions.payerName String Наименование плательщика. Поле может быть пустым, если отправитель — сама организация (перевод внутри банка со своего счета), в назначении платежа будет указана информация.
    Обязательно transactions.debitAmount String Сумма по дебету. Разделитель - ".". Формат: 2 цифры после точки. Пример: 140266492.47.
    Обязательно transactions.creditAmount String Сумма по кредиту. Разделитель - ".". Формат: 2 цифры после точки. Пример: 115056640.23.
    Обязательно transactions.paymentPurpose String Назначение платежа или описание платежа. Пример: "Обеспечение по договору №129-xx/70. Платежи за финансовые услуги, за исключением платежей с кодами назначения платежа 842 и 843"

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

    curl --location 'https://3dsec.berekebank.kz/payouts/api/v2/getReportPayout.do' \
    --header 'Content-Type: application/json' \
    --data '{
      "startDate": "2025-02-03",     
      "endDate": "2025-02-06",    
      "reportName": "SSPV_AcctStatement",
      "userName": "test_user",
      "password": "test_user_password"
    }'

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

    {  
        "errorCode": "0",
        "errorMessage": "Успешно",
        "reportName": "SSPV_AcctStatement",
        "startDate": "2025-02-09",
        "endDate": "2025-04-09",
        "terminalId": "4225764450179702",
        "accountNumber": "KZ50914992240KZ001D8",
        "balanceInput": "50000000.00",
        "balanceOutput": "50000000.00",
        "turnoverDB": "2000000.00",
        "turnoverCR": "3000000.00",
        "transactions": [
            {
            "paymentOrderNumber": "25905147",
            "operationDate": "2025-02-04",
            "payerBank": "BankName",
            "payerName": "ТОО MerchantCompany",
            "debitAmount": "200.00",
            "creditAmount": "0.00",
            "paymentPurpose": "Test"
            }
         ]
    }

    Подпись запросов API

    Модуль Выплат поддерживает подпись следующих API-запросов:

    Подпись выполняется так же, как для API-запросов в платежный шлюз с тем отличием, что тело API-запросов модуля Выплат передается только в формате JSON. Модуль выплат использует для подписи запросов тот же сертификат, что и платежный шлюз. Если вы еще не сгенерировали и не загрузили сертификат, сделайте это, следуя документации.

    Ниже описан порядок реализации подписи API-запросов в модуль Выплат и приведены примеры тела запроса, его хэша и подписи.

    Реализация подписи

    1. Рассчитайте хеш SHA256 тела запроса следующим образом:

      • Используйте тело запроса в виде строки без пробелов и переносов строк, например: {"amount":953,"currency":"643","source":{"bindingId":"6e8eb975-e1ba-7072-9f7a-5b7848ca5a88"},"target":{"pan":"4111111111111111"},"client":{"name":"client_name"},"orderNumber":"1744367939_0689","description":"test","userName":"test_user","password":"test_user_password"}
      • Вычислите хэш SHA256 из этой строки в необработанных байтах (raw bytes).
      • Преобразуйте необработанные байты в кодировку base64. Результат для строки из примера выше:

        Hash Base64: hpMyyXfesrC9Z5lcRP5NiC81InQx9HRIDUHZKJg709A=

    2. Для вычисленного хеша SHA256 (в кодировке base64) сгенерируйте подпись с помощью алгоритма RSA, используя закрытый ключ.

      В примере используется следующий ключ с паролем "123456":

      -----BEGIN ENCRYPTED PRIVATE KEY-----
      MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQl1SCKeYxJARFpK4+ vpuKWAICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIKpe1cwjenNkEggTI RMyPX7K5zOVqxxWepI3SA3craSsdbxuWCc+Aa2Zgr4ZsVRgFBb+kbv1ydjD86N9y YkZAkI5J45BVPscu9TQpCN41GkprwnWCs1NFiF1ba4yYcnPUOJW1kuyh1T2B692s A+SxWY+BZX9ffZ48LAvFwAhvIdVJaDEdtMfDpuUZXExA5aEu5Pn004ObmDHB/S3n F12c7D/gPG7hNu1Bs+0XHHVvKLzk5NFwqghFa3nms5yRQ/MeF4oElnv91KK+oxMR ceoOOq0dXAJ7Go1LsIrY9k2lhaKpQHkgIxZjHh4dPBdyY8OIppVvwx1q1WE8qtbi OK4t0MiMNBJCXcRebbYuBQhG5h0ppqGHmX+HpJ5bFEo5K+fHmu91nQbhM/uAaTio M8qABkPfl7Q3bG63r54PwQag2bMRgf4HNY9kZRvQgKoqp3/cTh25I1Fy86lGKKQH KZOOIQHtAGU0xlNRO9FK154M8Pa99qJ74R96gQE08+hBWHNKf3CLnU4jsJlLnqwz IKLGZ4plZgUD8VegG1HLINi1ahnkTvlSJFZy5ygZKn3kRmtBmhL+Ns4kr6+Bu/ra EMJsVwqQCenA0IuzL/0Boq+hMY9+tsD5JpMB3x7EJxzr7/3rk+4LMWpNpxTyY1M3 Dx/KNS7+zWT1pnFwHLTz4Vqt3npEEDJFTZuPUB2J9A/mXveE6Tr+pkLVFW3Pz4xm IuRoz4I1Ag494kUivV6XqW9eVIPmJP1X4zi/BXwM9JTFQNMDsbEyP2Wp+0yKs7J6 s7Rzd71/Y5xlO1iL++oW8QdhcoX46Pr0vqgu8aItl8irFtEItrp9qGd/SS8+HvAO POC8fzwzaK/qPP1ywSidv8wys7f1V9bE/9Me9rReqR8iA5VWG2ZqJG/4peszI9i9 IQ4NsidwhtjcqMv/sYvNpSlyckMZQrZy1oTU2IDPFakV/uhxC7nhkFW7wMrS5CMs Mxzrj7zbt19MVpfvjW+DrHDHgPz+qteki86p7dEwgbe8Sirg5D57HM3XLFki9yPu eLa1TUJXknPFgcnKWRVEJaNMefQPbt6yE0lEjsSobRXlqfueHqMycPqU3KJmwkaw 2xTCtNQmrulba5BOgNX68yiUNxPLeajg7I2SRN8DO7ZNCqbsmd3v9+hh63oYuMGK Un/QQlYLpz1+ZLo7pLwBfWpaPIMm5Zdzof2W+uQB6KHKV3r0c5vYh4RVG5gufrjn zRRdp1CmdllUqepsruvhSqPo79sNYwyavbI3/8J9BCIg2kUnYEPuXmubtw7/4/+c wMtW9xrsw52rBuB288H6kcDSOKp7hCFvNShSK+hFz5uOh8DFi+8DFLMxstDS1+Or wBPXMSytHAQ0WlF1TvQvgY0L6ZPcsWp0WF3BBbMuvFx3qF6TI/k4YFbCvfi+5Ei+ 99cefeMYEkudCGvQbWqy9W4HDsNNMPHVNZ8BCDm8+dD0QPLXPx7dKGErk8W7VSjm 51WAqtwruLNolrrQL2AgKCp1Q5SQwas1Q9h7QOBTmDlU5ewbgogKMkUmTSzwZzYU S7nOt9PODRH5xOfYbgVdgJPfqDqK3hLKwl0zGRbs4vUFnlOe9uMK7mvDtQrmxndX o02fBHS9SFyMj6wfXjV+cH3INGpvsenO
      -----END ENCRYPTED PRIVATE KEY-----

      Полученная подпись:

      gEU2NarCF478VyMYG7/wqjHDP4Ok08zCaRshUocko872j3AHi91G6S/xyRYK4gYykK+F2mXb7vZJdb3WzvL+If7MlPnDl7oC7hDFp8iR75ZfqT2k4znnqOQfuNa0mBTkUG3d+4YXtyTdY0f9rZCnWU+ANWQGXmTWxHhFf1vmsYQAD3q4aMEuoksXnhi32e14N/GUx26+8MiFvLVjb7Rgynwriv5xFlQ1HjFDQXokAbIwWZ0HrulGZvBkxQs0HIKxZJPegpJt2UODcqfhvBwmTYeXdTaqNUqvcVG041XjH3aEx3AJUwLZLEnCJpPWwcXxJ++EL3L7lEz2kRtoBOKYMQ==

    3. Передайте сгенерированный хэш (X-Hash) и значение подписи (X-Signature) в заголовке запроса. Запрос будет выглядеть так:

    curl 'https://sb02.tst.rbstest.ru/payouts/api/v2/performPayout.do' \
    -H 'X-hash: hpMyyXfesrC9Z5lcRP5NiC81InQx9HRIDUHZKJg709A=' \
    -H 'X-signature: gEU2NarCF478VyMYG7/wqjHDP4Ok08zCaRshUocko872j3AHi91G6S/xyRYK4gYykK+F2mXb7vZJdb3WzvL+If7MlPnDl7oC7hDFp8iR75ZfqT2k4znnqOQfuNa0mBTkUG3d+4YXtyTdY0f9rZCnWU+ANWQGXmTWxHhFf1vmsYQAD3q4aMEuoksXnhi32e14N/GUx26+8MiFvLVjb7Rgynwriv5xFlQ1HjFDQXokAbIwWZ0HrulGZvBkxQs0HIKxZJPegpJt2UODcqfhvBwmTYeXdTaqNUqvcVG041XjH3aEx3AJUwLZLEnCJpPWwcXxJ++EL3L7lEz2kRtoBOKYMQ== -H 'Content-Type: application/json' \
    -d '{"amount":953,"currency":"643","source":{"bindingId":"6e8eb975-e1ba-7072-9f7a-5b7848ca5a88"},"target":{"pan":"4111111111111111"},"client":{"name":"client_name"},"orderNumber":"1744367939_0689","description":"test","userName":"test_user","password":"test_user_password"}'

    Чтобы запрос был выполнен, должны быть соблюдены следующие требования:

    Пример кода генерации подписи на Python

    import base64
    import hashlib
    from cryptography.hazmat.primitives import serialization, hashes
    from cryptography.hazmat.primitives.asymmetric import padding
    from cryptography.hazmat.backends import default_backend
    
    data = """{"amount":953,"currency":"643","source":{"bindingId":"6e8eb975-e1ba-7072-9f7a-5b7848ca5a88"},"target":{"pan":"4111111111111111"},"client":{"name":"client_name"},"orderNumber":"1744367939_0689","description":"test","userName":"test_user","password":"test_user_password"}"""
    
    priv_key_pem = """
    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQl1SCKeYxJARFpK4+
    vpuKWAICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIKpe1cwjenNkEggTI
    RMyPX7K5zOVqxxWepI3SA3craSsdbxuWCc+Aa2Zgr4ZsVRgFBb+kbv1ydjD86N9y
    YkZAkI5J45BVPscu9TQpCN41GkprwnWCs1NFiF1ba4yYcnPUOJW1kuyh1T2B692s
    A+SxWY+BZX9ffZ48LAvFwAhvIdVJaDEdtMfDpuUZXExA5aEu5Pn004ObmDHB/S3n
    F12c7D/gPG7hNu1Bs+0XHHVvKLzk5NFwqghFa3nms5yRQ/MeF4oElnv91KK+oxMR
    ceoOOq0dXAJ7Go1LsIrY9k2lhaKpQHkgIxZjHh4dPBdyY8OIppVvwx1q1WE8qtbi
    OK4t0MiMNBJCXcRebbYuBQhG5h0ppqGHmX+HpJ5bFEo5K+fHmu91nQbhM/uAaTio
    M8qABkPfl7Q3bG63r54PwQag2bMRgf4HNY9kZRvQgKoqp3/cTh25I1Fy86lGKKQH
    KZOOIQHtAGU0xlNRO9FK154M8Pa99qJ74R96gQE08+hBWHNKf3CLnU4jsJlLnqwz
    IKLGZ4plZgUD8VegG1HLINi1ahnkTvlSJFZy5ygZKn3kRmtBmhL+Ns4kr6+Bu/ra
    EMJsVwqQCenA0IuzL/0Boq+hMY9+tsD5JpMB3x7EJxzr7/3rk+4LMWpNpxTyY1M3
    Dx/KNS7+zWT1pnFwHLTz4Vqt3npEEDJFTZuPUB2J9A/mXveE6Tr+pkLVFW3Pz4xm
    IuRoz4I1Ag494kUivV6XqW9eVIPmJP1X4zi/BXwM9JTFQNMDsbEyP2Wp+0yKs7J6
    s7Rzd71/Y5xlO1iL++oW8QdhcoX46Pr0vqgu8aItl8irFtEItrp9qGd/SS8+HvAO
    POC8fzwzaK/qPP1ywSidv8wys7f1V9bE/9Me9rReqR8iA5VWG2ZqJG/4peszI9i9
    IQ4NsidwhtjcqMv/sYvNpSlyckMZQrZy1oTU2IDPFakV/uhxC7nhkFW7wMrS5CMs
    Mxzrj7zbt19MVpfvjW+DrHDHgPz+qteki86p7dEwgbe8Sirg5D57HM3XLFki9yPu
    eLa1TUJXknPFgcnKWRVEJaNMefQPbt6yE0lEjsSobRXlqfueHqMycPqU3KJmwkaw
    2xTCtNQmrulba5BOgNX68yiUNxPLeajg7I2SRN8DO7ZNCqbsmd3v9+hh63oYuMGK
    Un/QQlYLpz1+ZLo7pLwBfWpaPIMm5Zdzof2W+uQB6KHKV3r0c5vYh4RVG5gufrjn
    zRRdp1CmdllUqepsruvhSqPo79sNYwyavbI3/8J9BCIg2kUnYEPuXmubtw7/4/+c
    wMtW9xrsw52rBuB288H6kcDSOKp7hCFvNShSK+hFz5uOh8DFi+8DFLMxstDS1+Or
    wBPXMSytHAQ0WlF1TvQvgY0L6ZPcsWp0WF3BBbMuvFx3qF6TI/k4YFbCvfi+5Ei+
    99cefeMYEkudCGvQbWqy9W4HDsNNMPHVNZ8BCDm8+dD0QPLXPx7dKGErk8W7VSjm
    51WAqtwruLNolrrQL2AgKCp1Q5SQwas1Q9h7QOBTmDlU5ewbgogKMkUmTSzwZzYU
    S7nOt9PODRH5xOfYbgVdgJPfqDqK3hLKwl0zGRbs4vUFnlOe9uMK7mvDtQrmxndX
    o02fBHS9SFyMj6wfXjV+cH3INGpvsenO
    -----END ENCRYPTED PRIVATE KEY-----
    """
    
    # HASH в base64
    hash_bytes = hashlib.sha256(data.encode('utf-8')).digest()
    hash_base64 = base64.b64encode(hash_bytes).decode('utf-8')
    print("Hash base64: ", hash_base64)
    
    # Подпись
    private_key = serialization.load_pem_private_key(
        priv_key_pem.encode('utf-8'),
        password=b'123456',  # Пароль для расшифровки ключа
        backend=default_backend()
    )
    
    signature = private_key.sign(
        hash_base64.encode("utf-8"),
        padding.PKCS1v15(),
        hashes.SHA256()
    )
    
    signature_base64 = base64.b64encode(signature).decode('utf-8')
    print("Signature: ", signature_base64)

    Ключ для примера Python должен быть в PEM-формате с элементами BEGIN и END.

    Добавление корпоративной карты в личном кабинете

    В этом разделе описана функциональность привязки корпоративной банковской карты для осуществления выплат с использованием Личного Кабинета. Эта функциональность доступна только при наличии соответствующих прав доступа - уточните у поддержки.

    Для Настроек выполните следующие шаги:


    Раздел меню Мои карты

    Для того, чтобы привязать банковскую карту, нажмите кнопку Добавить карту. После этого откроется окно Добавление карты, где необходимо заполнить все поля:


    Добавление карты для выплат в разделе меню Мои Карты

    После заполнения всех полей в форме нажмите кнопку Сохранить карту. После чего появляется окно для подтверждения.

    В поле «Пароль» необходимо ввести пароль, высланный в СМС на ваш мобильный номер, к которому привязана карта. После ввода пароля нажмите на кнопку Подтвердить.

    Для подтверждения с добавляемой карты автоматически спишется (и сразу вернется) минимальная сумма. Добавленная карта отобразится на странице:


    Список карт в разделе меню Мои карты

    Если щелкнуть по привязанной карте, появляются кнопки:

    1. Сделать карту основной;
    2. Копировать ID связки;
    3. Удалить карту.


    Управление картами в разделе меню Мои карты

    Вам необходимо скопировать ID связки и использовать ее для указания в параметре source.bindingId HTTPS POST API запроса /payouts/api/v2/performPayout.do при проведении выплаты.

    Настройка КНП в Личном кабинете

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


    Подраздел меню Значение КНП


    Выбор значения КНП из справочника


    Сохранение выбранного значения КНП

    Описание ошибок

    HTTP code errorCode errorMessage Описание
    200 OK 116 Insufficient funds Сумма транзакции превышает доступный остаток средств
    200 OK 121 Limit is depleted Предпринята попытка выполнить транзакцию на сумму, превышающую дневной лимит, заданный банком-эмитентом.
    200 OK 98 Card is restricted Ограничение по карте (Владелец карты пытается выполнить транзакцию, которая для него не разрешена)
    400 Bad request 98 [paramName] is а required parameter При запросе в модуль выплат не указан обязательный параметр
    400 Bad request 98 [paramName] does not match required pattern [pattern] При запросе в модуль выплат указанный параметр не соответствует заданному регулярному выражению
    400 Bad request 98 Errors while parsing incoming request: [requestMessage] is not set for method [api_method] При разборе входящего сообщения невозможно найти метод указанный в запросе
    400 Bad request 98 Invalid request При разборе входящего сообщения обнаружена ошибка
    400 Bad request 98 No order identification provided to find order in database Не указан Order ID. При формировании запроса в БД неудалось найти в запросе парметра по которому можно осуществить поиск
    400 Bad request 98 Order not found in payout proxy. Check orderId or orderNumber При запросе в модуль выплат указанный номер заказа не найден
    400 Bad request 98 Currency does not match required pattern При запросе в модуль выплат выбрана не корректна валюта
    400 Bad request 98 Сard affiliation does not match required pattern При запросе в модуль выплат выбрана карта не разрешенная в данном процессе
    400 Bad request 98 userName and password are mandatory fields При запросе в модуль выплат не указан логин или пароль
    400 Bad request 98 Payout config error: debit method is incorrect for specified payout type Для данного типа оплаты должен быть определен метод дебетования
    400 Bad request 98 Source is not specified or is incorrect compared to configured debit tools Источник в запросе отличается от ожидаемого
    401 Not authorized 90 User not authenticated Авторизация пользователя (продавца) в шлюзе завершилась неудачей
    404 Not Found - - Метод не найден
    500 Server error 99 No merchant settings available Не удалось найти настройки пользователя (продавца) по логину или авторизационному токену
    500 Server error 99 There was an error getting gateway parameters Ошибка разбора параметров подключений к шлюзам и/или микросервисам
    500 Server error 99 Failed to parse incoming request for [messageType] Ошибка при разборе входящего JSON сообщения указанного типа (например, некорректный JSON)
    502 Bad Gateway 99 Failed to call hessian method: [hessian_method] Ошибка вызова метода шлюза (метод не найден, параметры некорректны и т.п.)
    502 Bad Gateway 99 Error calling rest method [service_name] Ошибка вызова метода rest (метод не найден, параметры некорректны и т.п.)
    502 Bad Gateway 99 Rest response was unsuccessfull Ошибка вызова метода rest
    502 Bad Gateway 99 3DS authorization was requested but is not supported in API calls Ошибка вызова, запрошен 3ds, выплаты не поддерживают работу с 3ds
    502 Bad Gateway 99 Unable to get card data for specified bindingId По bindingId не получены данные карты из шлюза
    502 Bad Gateway 204 Cannot find any bin range in db for [bin] Введенный bin карты, не найден в Базе данных
    502 Bad Gateway 204 Unsupported pan Pan не поддерживается
    502 Bad Gateway 400 Invalid request: bin is empty or is not numeric Бин карты получателя пустой или не число
    502 Bad Gateway 98 Mrbin can't find this card Mr.bin не может найти данный номер карты в базе, необходимо проверить корректность ввода номера карты
    504 Timeout 91 Timeout when requesting [gateway] Шлюз недоступен
    504 Timeout 91 Timeout when requesting [service_name] Сервис недоступен
    Категории:
    Payouts API V1
    Категории
    Результаты поиска