# Для транзакций
Данное api позволяет получать информацию о ваших транзакциях с использованием различных фиьтров и сортировок. Основные принципы работы с api описаны выше
Точка входа для боевого (production) окружения:
GET /payment-gateway/v3/transactions
GET /api/public/transactions
# Выгрузка транзакций
Для лучшего понимания принципов работы с данным ендпоинтом предлагаем рассмотреть ряд примеров
Запрос на данную точку входа позволяет получить список транзакций клиента (например, платежи).
Для выполнения требуется скоуп transactions.read, который необходимо запросить при аутентификации
Каждая транзакция содержит opcode - тип транзакции (число).
| Значение opcode | Наименование | Описание |
|---|---|---|
| 1 | Purchase | Платеж (одностадийная оплата) |
| 2 | Refund | Отмена платежа |
| 3 | Rebill | Платеж рекуррентный (автосписание) |
| 4 | PreAuth | Авторизация (в том числе с использованием токена карты) |
| 5 | Reversal | Отмена авторизации |
| 6 | ConfirmAuth | Платеж (завершение расчетов в рамках авторизованной суммы) |
| 22 | RefundAFT | Отмена платежа AFT |
| 472 | MoneySend | Выплата |
# Пример 1. Список успешных платежей за определенный период, по 10 транзакций на странице
Формируем критерии отбора:
updated >= 2019-08-12T00:00:00Z(в UTC, точность - до секунды).updated < 2019-08-13T00:00:00Z(в UTC, точность - до секунды).status = success(оставляем только успешные платежи-погашения).mw_type = transaction(позволяет убрать списания для привязки карт и оставить только платежи).
Объединяем критерии символом амперсанда &: updated>=2019-08-12T00:00:00Z&updated<2019-08-13T00:00:00Z&status=success&mw_type=transaction
После операции "urlencode": updated%3E%3D2019-08-12T00%3A00%3A00Z%26updated%3C2019-08-13T00%3A00%3A00Z%26status%3Dsuccess%26mw_type%3Dtransaction
Вставляем в запрос параметр limit_to=10 и критерии отбора. Результат приведен ниже.
Запрос
GET https://api.psp.io/payment-gateway/v3/transactions?limit_to=10&filter_by=updated%3E%3D2019-08-12T00%3A00%3A00Z%26updated%3C2019-08-13T00%3A00%3A00Z%26status%3Dsuccess%26mw_type%3Dtransaction
Для выполнения требуется скоуп transactions.read.
Ответ
{
"cursor": {
"count": 10,
"prev": null,
"total": 129,
"next": "8fdce98f0d6a59348c93434040ac3eefa01a793e4788669eceb2c4f7b9f0e82e"
},
"transactions": [{
"account_id": 659,
"amount": 2310,
"amount_converted": 2310,
"authcode": "274000",
"card_type": "2",
"ccadress": null,
"channel_id": 52,
"client_id": 44,
"contract_id": null,
"contract_token": null,
"created": "2019-05-22T19:22:17.488741Z",
"cs0": null,
"cs1": "1e68b13b34e247fd9ac3583ae9947127",
"cs2": null,
"cs3": null,
"cs4": null,
"cs5": null,
"cs6": null,
"cs7": null,
"cs8": null,
"cs9": null,
"currency_id": 643,
"currency_id_converted": 643,
"customer_info": null,
"email": "guess_who@yandex.ru",
"gw_node_id": null,
"hash": "2389d02074b695d1da9447d61bc2f335",
"id": 19532557,
"instrument_id": null,
"instrument_type_id": 1,
"ip": null,
"is_aft": true,
"lang": "en",
"md": "366297521-E24D925A87503FF9",
"mw_id": "1e68b13b-34e2-47fd-9ac3-583ae9947127",
"mw_merchant_id": 516,
"mw_node_id": null,
"mw_timestamp_created": "2019-05-22T19:22:17.488765Z",
"mw_type": "transaction",
"opcode": 1,
"order_id": "Иванов Иван Иванович AG9211234 14 дней",
"pan": "533669******3074",
"pan_id": "1bf1f988e19d2b1c3312bdedd77b3e16",
"phone": null,
"price": {
"counterparty_total_price": 0,
"mandarin_total_price": 35
},
"product_descr": "Оплата заказа № Иванов Иван Иванович AG9211234 14 дней",
"product_id": 1,
"rebill_from": null,
"rebill_status": null,
"rebill_statusreason": null,
"reference_id": null,
"remote_id": "CD31465822B1551C",
"remote_id2": null,
"remote_id3": null,
"remote_id4": null,
"remote_id5": null,
"remote_id_ext": null,
"remotely_processed": "2019-05-22T19:22:37.086658Z",
"request_id": null,
"response_code": 0,
"rrn": "914291462363",
"secure_mode": 1,
"site_id": 1,
"site_notified": null,
"status": "success",
"status_changes_counter": 106312335,
"subprovider_id": null,
"terminal_id": null,
"termurl": null,
"updated": "2019-05-22T19:22:37Z"
},
{
"еще 9 элементов": "с такой же структурой"
}
]
}
Получить следующие 10 элементов можно запросом:
GET https://api.psp.io/payment-gateway/v3/transactions?cursor=8fdce98f0d6a59348c93434040ac3eefa01a793e4788669eceb2c4f7b9f0e82e
Общее количество страниц можно узнать, разделив total на count: 129/10 =
12 полных страницы по 10 элементов, и еще третья страница на 9 элементов.
Если параметр limit_to не указан, то по умолчанию выводится по 50 элементов
на странице.
# Пример 2. Полная информацию о транзакции по transaction_id
Любая транзакция имеет уникальный 8-значный числовой номер. По нему вы можете
получить полную информацию по транзакции. Вы можете увидеть его в личном
кабинете. Например, 22943496.
Вставляем в запрос номер транзакции:
GET https://api.psp.io/payment-gateway/v3/transactions/22943496
Для выполнения требуется скоуп transactions.read.
Поскольку номер транзакции уникален, запрос всегда возвращает один элемент.
# Пример 3. Полную информацию о транзакции по payment_id
При создании транзакции, ее уникальный численно-буквенный идентификатор
возвращается в синхронном
ответе в поле id.
Например, 43913ddc000c4d3990fddbd3980c1725.
При запросе в API это значение находится в поле cs1.
Формируем критерии отбора: cs1 = 43913ddc000c4d3990fddbd3980c1725
После операции "urlencode": cs1%3D43913ddc000c4d3990fddbd3980c1725
Вставляем в запрос критерии отбора:
GET https://api.psp.io/payment-gateway/v3/transactions?filter_by=cs1%3D43913ddc000c4d3990fddbd3980c1725
Для выполнения требуется скоуп transactions.read.
Структура ответа аналогична той, которая указана в примере 1.
Поскольку идентификатор транзакции уникален, запрос всегда возвращает массив из одного элемента.
# Выгрузка реестра транзакций в файл
# Инициализация процесса выгрузки
Данное api позволяет массово выгрузить реестр по транзакциям в формате xls. Основные принципы работы с api описаны выше.
ОБРАТИТЕ ВНИМАНИЕ!
Реестр формируются асинхронно, время формирования реестра варьируется от нескольких секунд и, ориентировочно, до получаса, в зависимости от количества операций в запросе.
Для выполнения требуются скоупы report-generator:public.read report-generator:public.write , которые необходимо запросить при аутентификации.
Для метода доступны следующие фильтры, параметры:
| Параметр | Обязателен | Описание |
|---|---|---|
| updated | да | даты в формате updated >= 2019-08-12T00:00:00Z updated < 2019-08-13T00:00:00Z (в UTC, точность - до секунды) |
| opcode | нет | тип транзакции |
| channel_id | нет | id банка |
| report_format=xls | да | тип выгрузки, на данный момент доступен только формат xls |
| limit_to | нет | Лимит выгрузки, ограничений по колличеству нет, однако отсутствие лимита может увеличить время ожидания отчета. |
Описание типов транзакций:
| Значение opcode | Наименование | Описание |
|---|---|---|
| 1 | Purchase | Платеж (одностадийная оплата) |
| 2 | Refund | Отмена платежа |
| 3 | Rebill | Платеж рекуррентный (автосписание) |
| 4 | PreAuth | Авторизация (в том числе с использованием токена карты) |
| 5 | Reversal | Отмена авторизации |
| 6 | ConfirmAuth | Платеж (завершение расчетов в рамках авторизованной суммы) |
| 22 | RefundAFT | Отмена платежа AFT |
| 472 | MoneySend | Выплата |
Список id банков:
| channel_id | Описание |
|---|---|
| 61 | банк ПСБ |
| 64 | банк Открытие |
| 66 | банк Русский Стандарт |
| 100 | Apex bank |
Запрос:
GET https://api.psp.io/report-generator-nt/public/pay_transactions/export?report_format=xls&filter_by=status%20in%20success%26updated%3E%3D2024-05-28T21%3A00%3A00Z%26updated%3C2024-05-30T21%3A00%3A00Z%26channel_id%3D61&limit_to=100
Ответ в случае успешного создания запроса:
{
"report": {
"id": "9506073e-457d-4385-8eab-837672704c91",
"status": "initial",
"report_type": "report",
"error_message": null,
"created_at": "2023-05-29T20:38:55.469834Z",
"updated_at": "2023-05-29T20:38:55.469834Z"
}
}
# Проверка статуса выгрузки
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| id | string | Да | id запроса - в конце Url строки указывается id запроса, полученный в ответе на инициализацию процесса |
Запрос:
GET https://api.psp.io/report-generator-nt/public/report/afe31f52-3993-48cc-bb86-3eaadc5acd7d
Ответ в случае успешного создания запроса:
{
"report": {
"id": "9506073e-457d-4385-8eab-837672704c91",
"status": "success",
"report_type": "report",
"error_message": null,
"created_at": "2023-05-29T20:38:55.469834Z",
"updated_at": "2023-05-29T20:38:56.091098Z"
}
}
Если status запроса success, то он успешно сформирован и можно скачивать реестр.
# Выгрузка реестра в xls
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| id | string | Да | id запроса - в Url строке указывается id запроса, полученный в ответе на инициализацию процесса |
Запрос:
GET https://api.psp.io/report-generator-nt/public/report/427992c7-e630-4391-8923-7f8d0f127494/download
Ответ, в случае успешного создания запроса:
Ответ будет содержать набор символов файла xls. Данный ответ нужно сохранить в файл. По итогу будет получен реестр.
# Метод получения данных о транзакции в secure
Для выполнения требуется скоуп secure:transactions.read, который необходимо запросить при аутентификации
Получить данные о транзакции можно по её id или используя фильтр по параметрам:
# 1. Получение данных о транзакции по id
Запрос
GET https://secure.mandarinpay.com/api/public/transactions/da28496b6a5e4c6480e63755d7cdbfd7
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| id | string | да | id транзакции - в конце Url строки указывается id транзакции, данные по которой необходимо получить. |
| mid | string | нет | номер проекта, по которому совершена была транзакция. Необходимо передать в заголовке (Header) |
Ответ
{
"id": "bea3bdbb2bcb44b5a2eaf91eb5036013",
"merchant_id": 395,
"query_string": "?merchantId=395&orderId=177e54fd-ae90-4b4e-8542-61442ba5d778&email=a.test%test.com&orderActualTill=2024-08-01%2009%3A02%3A30Z&price=50.00&callbackUrl=https%3A%2F%2Fsecure.mandarinpay.com%2Fcallback%2F&action=payout&customer_fullName=%20%20&customer_phone=%2B79121111111&customer_email=a.test%test.com",
"gw_transaction_id": "23193036",
"bank_transaction_id": null,
"state": 1,
"created_at": "2024-07-30T09:02:30.208341",
"processed_at": "2024-07-30T09:02:32.157039",
"expires_at": "2024-08-01T09:02:30+00:00",
"next_action_scheduled_at": null,
"type": 1,
"order_id": "177e54fd-ae90-4b4e-8542-61442ba5d778",
"creator_ip": "33.22.11.11",
"extra": "{\n \"Active3dsOperationId\": null,\n \"customer_creditcard_number\": \"400000XXXXXX0002\",\n \"CreditCardHolder\": null,\n \"CreditCardExpirationYear\": 0,\n \"CreditCardExpirationMonth\": 0,\n \"Rrn\": \"2977333333\",\n \"AuthCode\": null,\n \"RemoteSystemId\": null,\n \"ErrorCode\": null,\n \"ErrorDescription\": null,\n \"Had3DSecure\": null,\n \"DocumentFileId\": null,\n \"RouteOverride\": null,\n \"Channel\": \"internal\",\n \"SavedCreditCardNumber\": null,\n \"IsPayoutOnlyCardBinding\": false,\n \"UsedPreAuth\": false,\n \"GwMerchantAccountId\": 1,\n \"CardId\": \"214d269a62bbfb698711b41a1f564sd\",\n \"PaymentReceiver\": null,\n \"FailedGwMerchantAccountIds\": null,\n \"IsSandbox\": false,\n \"FiscalInformation\": {\n \"Items\": [\n {\n \"Description\": \"Товар\",\n \"Quantity\": 1.0,\n \"TotalPrice\": 50.0,\n \"Vat\": 6,\n \"ProductType\": null,\n \"Shipper\": null,\n \"AgentType\": null,\n \"CalculationMethod\": \"FULL_PAY\",\n \"PaymentSubject\": \"PRODUCT\"\n }\n ],\n \"TaxationSystem\": 0\n }\n}",
"extra_data": {
"active3ds_operation_id": null,
"customer_creditcard_number": "400000XXXXXX0002",
"credit_card_holder": null,
"credit_card_expiration_year": 0,
"credit_card_expiration_month": 0,
"rrn": "2977333333",
"auth_code": null,
"remote_system_id": null,
"error_code": null,
"error_description": null,
"had3_d_secure": null,
"document_file_id": null,
"route_override": null,
"channel": "internal",
"saved_credit_card_number": null,
"is_payout_only_card_binding": false,
"used_pre_auth": false,
"gw_merchant_account_id": 1,
"card_id": "214d269a62bbfb698711b41a1f564sd",
"payment_receiver": null,
"failed_gw_merchant_account_ids": null,
"is_sandbox": false,
"fiscal_information": {
"items": [
{
"description": "Товар",
"quantity": 1.0,
"total_price": 50.0,
"vat": 6,
"product_type": null,
"shipper": null,
"agent_type": null,
"calculation_method": "FULL_PAY",
"payment_subject": "PRODUCT"
}
],
"taxation_system": 0
}
},
"target_type": 3,
"target": "5hGlT9iTQw/W1h6sdfs121sPnvnHocMx",
"last_error": null,
"update_stamp": 197251925,
"subscription_id": null,
"needs_auto_reversal": false,
"custom_values": []
}
# 2. Получение списка транзакций с фильтрами(filter_by)
Список доступных фильтров:
| Параметр | Описание |
|---|---|
| id | Идентификатор транзакции. |
| order_id | Идентификатор заказа в вашей системе. |
| state | Статус транзакции. Возможные значения: Success = 1 (Успех); Failed = 4 (Неуспех); PendingConfirmation = 3 (Ожидание); PendingExecution = 5 (Ожидание); Interrupted = 6 (Ожидание); Unknown = 7 (Неизвестный). |
| merchant_id | Идентификатор проекта. |
| processed_start_at и processed_end_at | Дата проведения операции. Возможность выбора диапазона дат по полю processed_at |
| type | Тип транзакции. Возможные значения: Pay = 0 (Платеж); PayOut = 1 (Выплата); PreAuth = 2 (Авторизация); Reversal = 3 (Отмена); Binding = 4 (Привязка). |
| target_type | Тип ссылки на существующую транзакцию. Возможные значения: Web = 0; BoundCard = 1; Transaction = 2; KnownCardNumber = 3; PayoutBestMt = 4; PayoutPhone = 5; PayoutYandexMoney = 6; PayoutWebMoney = 7; BankAccount = 8; PayoutQiwi = 9; Wallet = 10; PayoutGos = 11; PayoutSbp = 12. |
| created_start_date и created_end_date | Дата создания операции. Возможность выбора диапазона дат по полю created_at |
Для построения фильтра в запросе используется параметр filter_by.
Критерии запроса разделяются символом амперсанда &.
Для регулирования количества транзакций в ответе используется параметр limit_to.
Если параметр limit_to не указан, то по умолчанию выводится по 25 элементов на странице.
Чтобы узнать общее количество страниц, нужно разделить total на count. Например: 129/10 = 12 полных страницы по 10 элементов, и еще третья страница на 9 элементов.
Запрос
GET https://secure.mandarinpay.com/api/public/transactions?filter_by=created_start_date>2024-07-30&created_end_date<2024-08-10
Ответ
{
"cursor": {
"count": 25,
"next": "aea21d3bdc111519",
"prev": null,
"total": 123
},
"transactions": [
{
"id": "bea3bdbb2bcb44b5a2eaf91eb5036013",
"merchant_id": 395,
"query_string": "?merchantId=395&orderId=177e54fd-ae90-4b4e-8542-61442ba5d778&email=a.test%test.com&orderActualTill=2024-08-01%2009%3A02%3A30Z&price=50.00&callbackUrl=https%3A%2F%2Fsecure.mandarinpay.com%2Fcallback%2F&action=payout&customer_fullName=%20%20&customer_phone=%2B79121111111&customer_email=a.test%test.com",
"gw_transaction_id": "23193036",
"bank_transaction_id": null,
"state": 1,
"created_at": "2024-07-30T09:02:30.208341",
"processed_at": "2024-07-30T09:02:32.157039",
"expires_at": "2024-08-01T09:02:30+00:00",
"next_action_scheduled_at": null,
"type": 1,
"order_id": "177e54fd-ae90-4b4e-8542-61442ba5d778",
"creator_ip": "33.22.11.11",
"extra": "{\n \"Active3dsOperationId\": null,\n \"customer_creditcard_number\": \"400000XXXXXX0002\",\n \"CreditCardHolder\": null,\n \"CreditCardExpirationYear\": 0,\n \"CreditCardExpirationMonth\": 0,\n \"Rrn\": \"2977333333\",\n \"AuthCode\": null,\n \"RemoteSystemId\": null,\n \"ErrorCode\": null,\n \"ErrorDescription\": null,\n \"Had3DSecure\": null,\n \"DocumentFileId\": null,\n \"RouteOverride\": null,\n \"Channel\": \"internal\",\n \"SavedCreditCardNumber\": null,\n \"IsPayoutOnlyCardBinding\": false,\n \"UsedPreAuth\": false,\n \"GwMerchantAccountId\": 1,\n \"CardId\": \"214d269a62bbfb698711b41a1f564sd\",\n \"PaymentReceiver\": null,\n \"FailedGwMerchantAccountIds\": null,\n \"IsSandbox\": false,\n \"FiscalInformation\": {\n \"Items\": [\n {\n \"Description\": \"Товар\",\n \"Quantity\": 1.0,\n \"TotalPrice\": 50.0,\n \"Vat\": 6,\n \"ProductType\": null,\n \"Shipper\": null,\n \"AgentType\": null,\n \"CalculationMethod\": \"FULL_PAY\",\n \"PaymentSubject\": \"PRODUCT\"\n }\n ],\n \"TaxationSystem\": 0\n }\n}",
"extra_data": {
"active3ds_operation_id": null,
"customer_creditcard_number": "400000XXXXXX0002",
"credit_card_holder": null,
"credit_card_expiration_year": 0,
"credit_card_expiration_month": 0,
"rrn": "2977333333",
"auth_code": null,
"remote_system_id": null,
"error_code": null,
"error_description": null,
"had3_d_secure": null,
"document_file_id": null,
"route_override": null,
"channel": "internal",
"saved_credit_card_number": null,
"is_payout_only_card_binding": false,
"used_pre_auth": false,
"gw_merchant_account_id": 1,
"card_id": "214d269a62bbfb698711b41a1f564sd",
"payment_receiver": null,
"failed_gw_merchant_account_ids": null,
"is_sandbox": false,
"fiscal_information": {
"items": [
{
"description": "Товар",
"quantity": 1.0,
"total_price": 50.0,
"vat": 6,
"product_type": null,
"shipper": null,
"agent_type": null,
"calculation_method": "FULL_PAY",
"payment_subject": "PRODUCT"
}
],
"taxation_system": 0
}
},
"target_type": 3,
"target": "5hGlT9iTQw/W1h6sdfs121sPnvnHocMx",
"last_error": null,
"update_stamp": 197251925,
"subscription_id": null,
"needs_auto_reversal": false,
"custom_values": []
},
{
"еще 122 элемента": "с такой же структурой"
}
]
}
# Метод для запроса баланса
Метод позволяет получить информацию по остатку средств на счете для выплат. В ответе вы получите все актуальные балансы банков, которые у вас подключены, а также дата и время последнего обновления баланса.
Для выполнения требуется скоуп pay_bank_account_balance.read, который необходимо запросить при аутентификации
Запрос
GET https://api.psp.io/balance/v3/client/{client_id}/balance
В качестве значения {client_id} необходимо передать ваш client id
Ответ в случае успешного запроса (200 ОК)
{
"status": {
"success": true,
"errors": []
},
"client": {
"id": 12345,
"balances": [
{
"name": "psb",
"description": "Промсвязьбанк",
"balance": [
{
"account_id": 1112,
"account_number": "40701810600000003456",
"real": {
"amount": 8740.43,
"updated_at": "2025-03-06T11:35:03.415986"
},
"virtual": {
"amount": 8740.43,
"updated_at": "2025-03-06T11:35:03.415986"
}
}
]
},
{
"name": "brs",
"description": "Банк Русский Стандарт",
"balance": [
{
"account_id": 1113,
"account_number": "",
"real": {
"amount": 2853812.00,
"updated_at": "2025-03-06T08:10:39.464010"
},
"virtual": {
"amount": 2853812.00,
"updated_at": "2025-03-06T08:10:39.464010"
}
}
]
}
],
"total_balance": 2862552.43
}
}