# Для транзакций

Данное 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
    }
}