MENU navbar-image

Introduction

MagicPayments API

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

Gate Invoice

  1. Пользователь вводит сумму и данные карты и отправляет запрос на создание инвойса мерчанту
  2. Мерчант создает инвойс через /api/{wallet_id}/invoice
  3. Мерчант разбирает ответ от MagicPayments:
    1. Если http_code == 200 и data.status == 'success': инвойс создан успешно, перенаправить клиента по ссылке data.url
    2. Если (http_code >= 400 и http_code < 500) и data.status == 'error': причина ошибки передается в поле data.error . Инвойс считать неуспешным. Сообщить пользователю об ошибке
    3. Если таймаут: считать инвойс неуспешным. Внимание: это возможно только при гейт-интеграции. Сообщить пользователю об ошибке
    4. Если http_code >= 500 : считать инвойс неуспешным. Сообщить пользователю об ошибке
  4. Мерчант отвечает пользователю ссылкой для редиректа или ошибкой
  5. При получении колбека по инвойсу мерчант обновляет его статус

Payout

  1. Пользователь вводит сумму и отправляет запрос на создание выплаты мерчанту
  2. Мерчант создает выплату через /api/{wallet_id}/withdraw
  3. Мерчант разбирает ответ от MagicPayments:
    1. Если http_code == 200 и data.status == 'success': выплата создана успешно. Сообщить пользователю. Внимание: в ответе может прийти сразу как финальным статус (в этом случае никаких дальнейших изменений с выплатой не предполагается), так и промежуточный (в этом случае при изменении статуса придет колбек)
    2. Если (http_code >= 400 и http_code < 500) и data.status == 'error': причина ошибки передается в поле data.error . Выплату считать неуспешной. Сообщить пользователю об ошибке
    3. Если таймаут: считать выплату созданной. Запросить актуальный статус через /status по order_id или обратиться в поддержку MagicPayments для уточнения статуса
    4. Если http_code >= 500 : считать выплату неуспешной. Сообщить пользователю об ошибке
  4. При получении колбека по выплате мерчант обновляет ее статус

Аутентификация запросов

Для аутентификации запросов включите заголовок Authorization со значением "Bearer {ACCESS_TOKEN}".

Все методы которые требуют авторизации помечены значком "requires authentication" в документации ниже.

Операции

Пополнение

requires authentication

Запрос на пополнение кошелька

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/75e9a565-6b36-3b67-9ed1-2050314314f9/invoice" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"amount\": 1000,
    \"calculate\": true,
    \"tokenize_card\": true,
    \"tag\": \"trusted\",
    \"callback_method\": \"POST\",
    \"callback_url\": \"http:\\/\\/flatley.com\\/rerum-et-odit-ratione-qui-qui.html\",
    \"success_url\": \"https:\\/\\/daugherty.com\\/aspernatur-quas-qui-non-eaque-ut.html\",
    \"fail_url\": \"http:\\/\\/www.wisoky.com\\/et-sed-tempore-sed-aut-voluptatem-error-qui\",
    \"card_token\": \"officia\",
    \"payin_address\": {
        \"type\": \"phone\",
        \"phone\": \"79991115566\",
        \"mobile_provider\": \"MTS\"
    },
    \"card\": {
        \"pan\": \"4111111111111111\",
        \"cardholder\": \"IVAN IVANOV\",
        \"month\": \"01\",
        \"year\": \"28\",
        \"cvv\": \"123\"
    },
    \"addition_data\": {
        \"email\": \"[email protected]\",
        \"payment_system_id\": \"Sberbank\"
    }
}"
const url = new URL(
    "https://api.magic-payments.com/api/75e9a565-6b36-3b67-9ed1-2050314314f9/invoice"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "amount": 1000,
    "calculate": true,
    "tokenize_card": true,
    "tag": "trusted",
    "callback_method": "POST",
    "callback_url": "http:\/\/flatley.com\/rerum-et-odit-ratione-qui-qui.html",
    "success_url": "https:\/\/daugherty.com\/aspernatur-quas-qui-non-eaque-ut.html",
    "fail_url": "http:\/\/www.wisoky.com\/et-sed-tempore-sed-aut-voluptatem-error-qui",
    "card_token": "officia",
    "payin_address": {
        "type": "phone",
        "phone": "79991115566",
        "mobile_provider": "MTS"
    },
    "card": {
        "pan": "4111111111111111",
        "cardholder": "IVAN IVANOV",
        "month": "01",
        "year": "28",
        "cvv": "123"
    },
    "addition_data": {
        "email": "[email protected]",
        "payment_system_id": "Sberbank"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/75e9a565-6b36-3b67-9ed1-2050314314f9/invoice';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'amount' => 1000.0,
            'calculate' => true,
            'tokenize_card' => true,
            'tag' => 'trusted',
            'callback_method' => 'POST',
            'callback_url' => 'http://flatley.com/rerum-et-odit-ratione-qui-qui.html',
            'success_url' => 'https://daugherty.com/aspernatur-quas-qui-non-eaque-ut.html',
            'fail_url' => 'http://www.wisoky.com/et-sed-tempore-sed-aut-voluptatem-error-qui',
            'card_token' => 'officia',
            'payin_address' => [
                'type' => 'phone',
                'phone' => '79991115566',
                'mobile_provider' => 'MTS',
            ],
            'card' => [
                'pan' => '4111111111111111',
                'cardholder' => 'IVAN IVANOV',
                'month' => '01',
                'year' => '28',
                'cvv' => '123',
            ],
            'addition_data' => [
                'email' => '[email protected]',
                'payment_system_id' => 'Sberbank',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/75e9a565-6b36-3b67-9ed1-2050314314f9/invoice'
payload = {
    "amount": 1000,
    "calculate": true,
    "tokenize_card": true,
    "tag": "trusted",
    "callback_method": "POST",
    "callback_url": "http:\/\/flatley.com\/rerum-et-odit-ratione-qui-qui.html",
    "success_url": "https:\/\/daugherty.com\/aspernatur-quas-qui-non-eaque-ut.html",
    "fail_url": "http:\/\/www.wisoky.com\/et-sed-tempore-sed-aut-voluptatem-error-qui",
    "card_token": "officia",
    "payin_address": {
        "type": "phone",
        "phone": "79991115566",
        "mobile_provider": "MTS"
    },
    "card": {
        "pan": "4111111111111111",
        "cardholder": "IVAN IVANOV",
        "month": "01",
        "year": "28",
        "cvv": "123"
    },
    "addition_data": {
        "email": "[email protected]",
        "payment_system_id": "Sberbank"
    }
}
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success",
    "comission": 12.5,
    "total": 487.5,
    "amount": 500,
    "url": "https://example.com/redirect",
    "transaction": {
        "currency": "RUB",
        "order": "73450234",
        "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
        "created_at": "2024-01-26T09:59:01.000000Z",
        "status_transaction": "created",
        "total": 487.5,
        "amount": 500,
        "type_alias": "payin",
        "card_mask": null
    }
}
 

Example response (400):


{
    "status": "error",
    "error": "Данный канал не поддерживает рекуррентные платежи",
    "code": "recurrent_not_supported"
}
 

Example response (422):


{
    "status": "error",
    "error": {
        "amount": [
            "Поле amount должно быть числом."
        ]
    }
}
 

Request      

POST api/{wallet_uuid}/invoice

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 75e9a565-6b36-3b67-9ed1-2050314314f9

Body Parameters

amount   number   

Сумма к пополнению Example: 1000

order   string  optional  

Внешний идентификатор (макс 100 символов)

calculate   boolean  optional  

Рассчитать комиссию Example: true

tokenize_card   boolean  optional  

Получить токен карты (для рекуррентных платежей) Example: true

tag   string  optional  

Тэг терминала. Example: trusted

callback_method   string  optional  

Определяет метод вызова callback. Возможные значения: POST, GET Example: POST

callback_url   string  optional  

Callback url вызывается GET/POST (определяется в поле callback_method) запросом, когда статус транзакции меняет статус. В параметрах GET запроса передаются: transaction - идентификатор транзакции, order - внешний идентификатор транзакции. В теле POST запроса передается текущая транзакция в виде JSON. Example: http://flatley.com/rerum-et-odit-ratione-qui-qui.html

success_url   string  optional  

Вызывается в случае успешной оплаты. В параметрах GET запроса передаются: transaction - идентификатор транзакции, order - внешний идентификатор транзакции. Example: https://daugherty.com/aspernatur-quas-qui-non-eaque-ut.html

fail_url   string  optional  

Вызывается в случае ошибки в оплате. В параметрах GET запроса передаются: transaction - идентификатор транзакции, order - внешний идентификатор транзакции. Example: http://www.wisoky.com/et-sed-tempore-sed-aut-voluptatem-error-qui

card_token   string  optional  

Токен карты (для рекуррентных платежей) Example: officia

payin_address   object  optional  

Адрес для пополнения (для оплаты host2host)

type   string  optional  

Тип адреса для перевода. Возможные значения: phone. Example: phone

phone   string  optional  

Номер телефона для перевода Example: 79991115566

mobile_provider   string  optional  

Идентификатор оператора мобильной связи пользователя Example: MTS

card   object  optional  

Данные карты (для оплаты host2host)

pan   string  optional  

Номер карты (для оплаты host2host) Example: 4111111111111111

cardholder   string  optional  

Держатель карты (для оплаты host2host) Example: IVAN IVANOV

month   string  optional  

Месяц срока действия карты (2 цифры) (для оплаты host2host) Example: 01

year   string  optional  

Год срока действия карты (2 цифры) (для оплаты host2host) Example: 28

cvv   string  optional  

CVV карты (3 цифры) (для оплаты host2host) Example: 123

addition_data   object  optional  

Дополнительные данные для оплаты (не обязательно)

email   string  optional  

Email клиента Example: [email protected]

phone   string  optional  

Телефон клиента

mobile_provider   string  optional  

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

address   string  optional  

Адрес клиента

city   string  optional  

Город клиента

state   string  optional  

Штат/область клиента

country   string  optional  

Страна клиента

zip_code   string  optional  

Почтовый индекс клиента

customer_ip   string  optional  

IP адрес клиента

customer_id   string  optional  

ID клиента

customer_first_name   string  optional  

Имя клиента

customer_last_name   string  optional  

Фамилия клиента

customer_doc_number   string  optional  

Номер документа удостоверяющего личность

customer_date_birth   string  optional  

Дата рождения в формате ДД-ММ-ГГГГ

device_browser_accept_header   string  optional  

Принимаемый контент (для 3DS 2.0)

device_browser_java_enabled   string  optional  

Признак работы с Java (для 3DS 2.0)

device_browser_language   string  optional  

Язык браузера (для 3DS 2.0)

device_browser_color_depth   string  optional  

Глубина цвета браузера (для 3DS 2.0)

device_browser_screen_height   string  optional  

Высота экрана (для 3DS 2.0)

device_browser_screen_width   string  optional  

Ширина экрана (для 3DS 2.0)

device_browser_window_height   string  optional  

Высота окна браузера (для 3DS 2.0)

device_browser_window_width   string  optional  

Ширина окна браузера (для 3DS 2.0)

device_browser_tz   string  optional  

Часовой пояс браузера в минутах от UTC (для 3DS 2.0)

device_browser_user_agent   string  optional  

Пользовательский агент браузера (для 3DS 2.0)

challenge_window_size   string  optional  

Размер окна для challenge (для 3DS 2.0)

payment_system_id   string  optional  

ID платежной системы Example: Sberbank

Response

Response Fields

status   string   

Статус запроса

comission   number   

Комиссия

total   number   

Сумма к зачислению

amount   number   

Сумма к оплате

url   string   

URL для перенаправления на страницу оплаты

addition_data   object   

Дополнительная информация при расчете транзакции (отсутствует если calculate=false)

payment_systems   string[]   

Список платежных систем (отсутствует если calculate=false или если в настройках выключены платежные системы)

last_error   string   

Описание ошибки при проведении транзакции (может быть null) (отсутствует если calculate=true)

transaction   object   

Блок описания транзакции (отсутствует если calculate=true)

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

Выплата

requires authentication

Запрос выплаты на карту с кошелька

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/95095c7b-a0f4-37d5-b343-5c9aab54e55f/withdrawal" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"amount\": 5309,
    \"card\": \"4111111111111111\",
    \"payout_address\": {
        \"type\": \"usdt_trc20\",
        \"address\": \"TCgBa3WVrrcQoBfd6bZdiFLatZ....\",
        \"phone\": \"79991115566\",
        \"mobile_provider\": \"MTS\"
    },
    \"calculate\": true,
    \"tag\": \"trusted\",
    \"callback_url\": \"http:\\/\\/www.ratke.com\\/vero-atque-quod-sit-dolore-vero-non-optio.html\",
    \"callback_method\": \"POST\",
    \"addition_data\": {
        \"email\": \"[email protected]\",
        \"cardholder\": \"IVAN IVANOV\",
        \"payment_system_id\": \"Sberbank\"
    }
}"
const url = new URL(
    "https://api.magic-payments.com/api/95095c7b-a0f4-37d5-b343-5c9aab54e55f/withdrawal"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "amount": 5309,
    "card": "4111111111111111",
    "payout_address": {
        "type": "usdt_trc20",
        "address": "TCgBa3WVrrcQoBfd6bZdiFLatZ....",
        "phone": "79991115566",
        "mobile_provider": "MTS"
    },
    "calculate": true,
    "tag": "trusted",
    "callback_url": "http:\/\/www.ratke.com\/vero-atque-quod-sit-dolore-vero-non-optio.html",
    "callback_method": "POST",
    "addition_data": {
        "email": "[email protected]",
        "cardholder": "IVAN IVANOV",
        "payment_system_id": "Sberbank"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/95095c7b-a0f4-37d5-b343-5c9aab54e55f/withdrawal';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'amount' => 5309.0,
            'card' => '4111111111111111',
            'payout_address' => [
                'type' => 'usdt_trc20',
                'address' => 'TCgBa3WVrrcQoBfd6bZdiFLatZ....',
                'phone' => '79991115566',
                'mobile_provider' => 'MTS',
            ],
            'calculate' => true,
            'tag' => 'trusted',
            'callback_url' => 'http://www.ratke.com/vero-atque-quod-sit-dolore-vero-non-optio.html',
            'callback_method' => 'POST',
            'addition_data' => [
                'email' => '[email protected]',
                'cardholder' => 'IVAN IVANOV',
                'payment_system_id' => 'Sberbank',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/95095c7b-a0f4-37d5-b343-5c9aab54e55f/withdrawal'
payload = {
    "amount": 5309,
    "card": "4111111111111111",
    "payout_address": {
        "type": "usdt_trc20",
        "address": "TCgBa3WVrrcQoBfd6bZdiFLatZ....",
        "phone": "79991115566",
        "mobile_provider": "MTS"
    },
    "calculate": true,
    "tag": "trusted",
    "callback_url": "http:\/\/www.ratke.com\/vero-atque-quod-sit-dolore-vero-non-optio.html",
    "callback_method": "POST",
    "addition_data": {
        "email": "[email protected]",
        "cardholder": "IVAN IVANOV",
        "payment_system_id": "Sberbank"
    }
}
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "status": "success",
    "comission": 12.5,
    "total": 487.5,
    "amount": 500,
    "transaction": {
        "currency": "RUB",
        "order": "73450234",
        "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
        "created_at": "2024-01-26T09:59:01.000000Z",
        "status_transaction": "created",
        "total": 487.5,
        "amount": 500,
        "type_alias": "payin",
        "card_mask": null
    }
}
 

Example response (400):


{
    "status": "error",
    "error": "Ошибка доступа",
    "code": "access_denied"
}
 

Example response (422):


{
    "status": "error",
    "error": {
        "amount": [
            "Поле amount должно быть числом."
        ]
    }
}
 

Request      

POST api/{wallet_uuid}/withdrawal

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 95095c7b-a0f4-37d5-b343-5c9aab54e55f

Body Parameters

amount   number   

Сумма к выплате Example: 5309

order   string  optional  

Внешний идентификатор (макс 100 символов)

card   string   

Карта для выплаты (16-19 цифр) Example: 4111111111111111

payout_address   object  optional  

Адрес для перевода

type   string  optional  

Тип адреса для перевода. Возможные значения: usdt_trc20 / phone. Example: usdt_trc20

address   string  optional  

Адрес для перевода Example: TCgBa3WVrrcQoBfd6bZdiFLatZ....

phone   string  optional  

Номер телефона для перевода Example: 79991115566

mobile_provider   string  optional  

Идентификатор оператора мобильной связи пользователя Example: MTS

calculate   boolean  optional  

Рассчитать комиссию Example: true

tag   string  optional  

Тэг терминала. Example: trusted

callback_url   string  optional  

Callback url вызывается GET запросом, когда статус транзакции меняется на completed. В параметрах GET запроса передаются: transaction - идентификатор транзакции, order - внешний идентификатор транзакции Example: http://www.ratke.com/vero-atque-quod-sit-dolore-vero-non-optio.html

callback_method   string  optional  

Определяет метод вызова callback. Возможные значения: POST, GET Example: POST

addition_data   object  optional  

Дополнительные данные для оплаты (не обязательно)

email   string  optional  

Email клиента Example: [email protected]

phone   string  optional  

Телефон клиента

address   string  optional  

Адрес клиента

city   string  optional  

Город клиента

state   string  optional  

Штат/область клиента

country   string  optional  

Страна клиента

zip_code   string  optional  

Почтовый индекс клиента

customer_ip   string  optional  

IP адрес клиента

customer_id   string  optional  

ID клиента

customer_first_name   string  optional  

Имя клиента

customer_last_name   string  optional  

Фамилия клиента

customer_doc_number   string  optional  

Номер документа удостоверяющего личность

customer_date_birth   string  optional  

Дата рождения в формате ДД-ММ-ГГГГ

card_expiration_year   string  optional  

Год строка действия карты

card_expiration_month   string  optional  

Месяц строка действия карты

cardholder   string  optional  

Держатель карты Example: IVAN IVANOV

payment_system_id   string  optional  

ID платежной системы Example: Sberbank

Response

Response Fields

status   string   

Статус запроса

comission   number   

Комиссия

total   number   

Сумма к зачислению

amount   number   

Сумма к оплате

addition_data   object   

Дополнительная информация при расчете транзакции (отсутствует если calculate=false)

payment_systems   string[]   

Список платежных систем (отсутствует если calculate=false или если в настройках выключены платежные системы)

last_error   string   

Описание ошибки при проведении транзакции (может быть null) (отсутствует если calculate=true)

transaction   object   

Блок описания транзакции (отсутствует если calculate=true)

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

Статус операции

requires authentication

Запрос статуса по операции (выплата/пополнение) (транзакцию можно получить по ее uuid или по внешнему идентификатору order)

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/5cac0fef-230c-3b18-8757-ee998a169653/status" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://api.magic-payments.com/api/5cac0fef-230c-3b18-8757-ee998a169653/status"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/5cac0fef-230c-3b18-8757-ee998a169653/status';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/5cac0fef-230c-3b18-8757-ee998a169653/status'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/status

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 5cac0fef-230c-3b18-8757-ee998a169653

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

last_error   string   

Описание последней ошибки (может быть null)

card_mask   string   

Маска карты (может быть null)

card_token   string   

Токен карты для формирования рекуррентных платежей (может отсутствовать)

payment_details   object   

Реквизиты для оплаты (может быть null)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Refund

requires authentication

Оформить refund по операции. В ответ возвращается refund транзакция.

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/b3f1bf09-4777-35b8-8fdf-391570ddfde5/refund" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://api.magic-payments.com/api/b3f1bf09-4777-35b8-8fdf-391570ddfde5/refund"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/b3f1bf09-4777-35b8-8fdf-391570ddfde5/refund';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/b3f1bf09-4777-35b8-8fdf-391570ddfde5/refund'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/refund

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: b3f1bf09-4777-35b8-8fdf-391570ddfde5

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Chargeback

requires authentication

Оформить chargeback по операции. В ответ возвращается chargeback транзакция.

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/5865bd09-ab2f-387e-b20f-4f545d9291e4/chargeback" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"arn\": null
}"
const url = new URL(
    "https://api.magic-payments.com/api/5865bd09-ab2f-387e-b20f-4f545d9291e4/chargeback"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "arn": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/5865bd09-ab2f-387e-b20f-4f545d9291e4/chargeback';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'arn' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/5865bd09-ab2f-387e-b20f-4f545d9291e4/chargeback'
payload = {
    "arn": null
}
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/chargeback

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 5865bd09-ab2f-387e-b20f-4f545d9291e4

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

arn   string   

Уникальный номер операции в клиринговом обмене между банками

reason_code   string  optional  

Характеризует причину возникновения Chargeback

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Отправка дополнительных параметров по транзакции

requires authentication

Дополнительные поля: UZS: sms_code

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/055a61b4-ca06-3cd7-9933-38edb678f8f5/additional_data" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"addition_data\": []
}"
const url = new URL(
    "https://api.magic-payments.com/api/055a61b4-ca06-3cd7-9933-38edb678f8f5/additional_data"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "addition_data": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/055a61b4-ca06-3cd7-9933-38edb678f8f5/additional_data';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'addition_data' => [],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/055a61b4-ca06-3cd7-9933-38edb678f8f5/additional_data'
payload = {
    "addition_data": []
}
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/additional_data

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 055a61b4-ca06-3cd7-9933-38edb678f8f5

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

addition_data   object  optional  

Дополнительные параметры

sms_code   string  optional  

Код из смс (для UZS)

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

last_error   string   

Описание последней ошибки (может быть null)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Оплата счета

requires authentication

Отправка чека и реквизитов плательщика по оплаченному счету

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/a8542633-b0a2-3a66-b5e3-5345b51e2797/paid" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"receipt\": {
        \"sender\": \"Иван Иванович 4432\",
        \"file_extension\": \"jpg\",
        \"file_name\": \"image\"
    }
}"
const url = new URL(
    "https://api.magic-payments.com/api/a8542633-b0a2-3a66-b5e3-5345b51e2797/paid"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "receipt": {
        "sender": "Иван Иванович 4432",
        "file_extension": "jpg",
        "file_name": "image"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/a8542633-b0a2-3a66-b5e3-5345b51e2797/paid';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'receipt' => [
                'sender' => 'Иван Иванович 4432',
                'file_extension' => 'jpg',
                'file_name' => 'image',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/a8542633-b0a2-3a66-b5e3-5345b51e2797/paid'
payload = {
    "receipt": {
        "sender": "Иван Иванович 4432",
        "file_extension": "jpg",
        "file_name": "image"
    }
}
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/paid

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: a8542633-b0a2-3a66-b5e3-5345b51e2797

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

receipt   object   

Чек

sender   string   

Реквизиты плательщика Example: Иван Иванович 4432

file_base64   string  optional  

Файл чека в base64

file_extension   string  optional  

Расширение файла чека Example: jpg

file_name   string  optional  

Имя файла чека Example: image

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

last_error   string   

Описание последней ошибки (может быть null)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Отмена оплаты по счету

requires authentication

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/f0e694fe-f782-3a81-a06e-1d69ac150102/cancel" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://api.magic-payments.com/api/f0e694fe-f782-3a81-a06e-1d69ac150102/cancel"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/f0e694fe-f782-3a81-a06e-1d69ac150102/cancel';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/f0e694fe-f782-3a81-a06e-1d69ac150102/cancel'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/cancel

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: f0e694fe-f782-3a81-a06e-1d69ac150102

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

last_error   string   

Описание последней ошибки (может быть null)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Начать спор по пополнению

requires authentication

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/86c337c4-a75b-379e-b299-35ee14e3c595/dispute" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://api.magic-payments.com/api/86c337c4-a75b-379e-b299-35ee14e3c595/dispute"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/86c337c4-a75b-379e-b299-35ee14e3c595/dispute';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/86c337c4-a75b-379e-b299-35ee14e3c595/dispute'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/dispute

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 86c337c4-a75b-379e-b299-35ee14e3c595

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

last_error   string   

Описание последней ошибки (может быть null)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Получение сообщений по спору

requires authentication

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/5f39a807-1644-3e82-9bf6-77e8fed13998/dispute/messages" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://api.magic-payments.com/api/5f39a807-1644-3e82-9bf6-77e8fed13998/dispute/messages"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/5f39a807-1644-3e82-9bf6-77e8fed13998/dispute/messages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/5f39a807-1644-3e82-9bf6-77e8fed13998/dispute/messages'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


[
    {
        "created_at": "2024-01-01T12:00:00Z",
        "direction": "INCOME",
        "type": "TEXT",
        "message": "Не пришли деньги"
    },
    {
        "created_at": "2024-01-01T12:01:00Z",
        "type": "IMAGE",
        "direction": "INCOME",
        "base64_content": "0L/RgNC40LzQtdGA",
        "filename": "photo",
        "extension": ".jpg"
    },
    {
        "created_at": "2024-01-01T12:03:00Z",
        "direction": "OUTCOME",
        "type": "TEXT",
        "message": "Разобрались"
    }
]
 

Request      

POST api/{wallet_uuid}/dispute/messages

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 5f39a807-1644-3e82-9bf6-77e8fed13998

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

Response

Response Fields

data   object[]   

Список транзакций

created_at   string   

Дата создания

type   string   

Тип сообщения. Возможные значения: IMAGE - изображение, TEXT - сообщение

direction   string   

Направление сообщения. Возможные значения: INCOME - входящие, OUTCOME - исходящие

message   string   

Текст сообщения. Обязательно, если type = TEXT

base64_content   string   

Изображение в кодировке base64. Обязательно, если type = IMAGE

filename   string   

Название файла. Обязательно, если type = IMAGE

extension   string   

Тип файла. Обязательно, если type = IMAGE

Отправка сообщения по спору

requires authentication

Example request:
curl --request POST \
    "https://api.magic-payments.com/api/5af017dd-9237-3efc-bae8-3c4f1cca7841/dispute/messages/send" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"message\": {
        \"type\": \"image\",
        \"message\": \"Не пришли деньги\",
        \"base64_content\": \"0L\\/RgNC40LzQtdGA\",
        \"filename\": \"photo\",
        \"extension\": \".jpg\"
    }
}"
const url = new URL(
    "https://api.magic-payments.com/api/5af017dd-9237-3efc-bae8-3c4f1cca7841/dispute/messages/send"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message": {
        "type": "image",
        "message": "Не пришли деньги",
        "base64_content": "0L\/RgNC40LzQtdGA",
        "filename": "photo",
        "extension": ".jpg"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/5af017dd-9237-3efc-bae8-3c4f1cca7841/dispute/messages/send';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'message' => [
                'type' => 'image',
                'message' => 'Не пришли деньги',
                'base64_content' => '0L/RgNC40LzQtdGA',
                'filename' => 'photo',
                'extension' => '.jpg',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/5af017dd-9237-3efc-bae8-3c4f1cca7841/dispute/messages/send'
payload = {
    "message": {
        "type": "image",
        "message": "Не пришли деньги",
        "base64_content": "0L\/RgNC40LzQtdGA",
        "filename": "photo",
        "extension": ".jpg"
    }
}
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "currency": "RUB",
    "order": "73450234",
    "uuid": "26549f4f-fcea-44bb-a65b-f4bf2ae78aea",
    "created_at": "2024-01-26T09:59:01.000000Z",
    "status_transaction": "created",
    "total": 487.5,
    "amount": 500,
    "type_alias": "payin",
    "card_mask": null
}
 

Request      

POST api/{wallet_uuid}/dispute/messages/send

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 5af017dd-9237-3efc-bae8-3c4f1cca7841

Body Parameters

transaction   string  optional  

UUID транзакции

order   string  optional  

Внешний идентификатор (макс 100 символов)

message   object   

Сообщение

type   string   

Тип сообщения. Возможные значения: TEXT - текстовое сообщение, IMAGE - изображение Example: image

message   string  optional  

Текст сообщения. Обязательно, если message.type = TEXT Example: Не пришли деньги

base64_content   string  optional  

Изображение в кодировке base64. Обязательно, если message.type = IMAGE Example: 0L/RgNC40LzQtdGA

filename   string  optional  

Название файла. Обязательно, если message.type = IMAGE Example: photo

extension   string  optional  

Тип файла. Обязательно, если message.type = IMAGE Example: .jpg

Response

Response Fields

uuid   string   

UUID транзакции

order   string   

Внешний идентификатор

currency   string   

Валюта

status_transaction   string   

Статус транзакции (created - создан, working - в обработке, completed - исполнен, error - ошибка)

created_at   string   

Дата создания в UTC

total   number   

Сумма зачисления

amount   number   

Сумма заказа

last_error   string   

Описание последней ошибки (может быть null)

card_mask   string   

Маска карты (может быть null)

payment_details   object   

Реквизиты для оплаты (может быть null)

type_alias   string   

Тип транзакции (payin - пополнение, payout - выплата, refund - Refund, chargeback - Chargeback)

Профиль

Профиль

requires authentication

Получение информации по всем кошелькам

Example request:
curl --request GET \
    --get "https://api.magic-payments.com/api/profile" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.magic-payments.com/api/profile"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/profile';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/profile'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


[
    {
        "uuid": "52a38a2b-fe45-45c8-850c-11f02d7d1620",
        "currency": "RUB",
        "balance": "800.00"
    },
    {
        "uuid": "18ec8ec9-ebc0-494b-9871-eabef9404375",
        "currency": "USD",
        "balance": "100.00"
    }
]
 

Request      

GET api/profile

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Баланс

requires authentication

Получение баланса кошелька В блоке detailed перечислены балансы: active - активный баланс (транзакции в статусах Выполнен); current - текущий баланс (транзакции в статусах Создан, В обработке, Выполнен); frozen - ролинг-резерв (транзакции с типом Rolling Reserve); payout - выплатной баланс (баланс, доступный для проведения выплат);

Example request:
curl --request GET \
    --get "https://api.magic-payments.com/api/fbec57e9-0531-388d-9ee6-989d58840dec/balance" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.magic-payments.com/api/fbec57e9-0531-388d-9ee6-989d58840dec/balance"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/fbec57e9-0531-388d-9ee6-989d58840dec/balance';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/fbec57e9-0531-388d-9ee6-989d58840dec/balance'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "uuid": "52a38a2b-fe45-45c8-850c-11f02d7d1620",
    "currency": "RUB",
    "balance": "800.00",
    "detailed": {
        "active": "800.00",
        "current": "800.00",
        "frozen": "0.00",
        "payout": "500.00"
    }
}
 

Request      

GET api/{wallet_uuid}/balance

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: fbec57e9-0531-388d-9ee6-989d58840dec

Транзакции

requires authentication

Получение транзакций за период (используется пагинация)

Example request:
curl --request GET \
    --get "https://api.magic-payments.com/api/84d84009-b130-3b09-ac84-6f2e8b285412/history" \
    --header "Authorization: Bearer {ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.magic-payments.com/api/84d84009-b130-3b09-ac84-6f2e8b285412/history"
);

const headers = {
    "Authorization": "Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.magic-payments.com/api/84d84009-b130-3b09-ac84-6f2e8b285412/history';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.magic-payments.com/api/84d84009-b130-3b09-ac84-6f2e8b285412/history'
headers = {
  'Authorization': 'Bearer {ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
"current_page": 1,
"data": [
{
"uuid": "d6a2f3a4-59f2-4a23-a663-e2908bf18020",
"currency": "RUB",
"status_transaction": "created",
"created_at": "2022-03-04T08:17:54.000000Z",
"amount": "10342.22"
},
{
"uuid": "72f9b70c-e51f-4377-8040-77b3a0b0fcd0",
"currency": "RUB",
"status_transaction": "working",
"created_at": "2022-03-04T08:16:54.000000Z",
"amount": "194.45"
},
{
"uuid": "af2c715a-953c-405c-b755-2a11a89a3dad",
"currency": "RUB",
"status_transaction": "completed",
"created_at": "2022-03-04T08:15:54.000000Z",
"amount": "99.00"
},
],
"first_page_url": "http://example.com/api/52a38a2b-fe45-45c8-850c-11f02d7d1620/history?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://example.com/api/52a38a2b-fe45-45c8-850c-11f02d7d1620/history?page=1",
"next_page_url": null,
"path": "http://example.com/api/52a38a2b-fe45-45c8-850c-11f02d7d1620/history",
"per_page": 50,
"prev_page_url": null,
"to": 20,
"total": 20
}
 

Request      

GET api/{wallet_uuid}/history

Headers

Authorization      

Example: Bearer {ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

wallet_uuid   string   

UUID кошелька Example: 84d84009-b130-3b09-ac84-6f2e8b285412

Query Parameters

date_from   string  optional  

Дата от (UTC) (в формате d.m.Y)

date_to   string  optional  

Дата до (UTC) (в формате d.m.Y)

page   integer  optional  

Страница пагинации

Response

Response Fields

current_page   integer   

Текущая страница пагинации

data   object[]   

Список транзакций

from   integer   

Отображение записи с номера

to   integer   

Отображение записи до номера

total   integer   

Количество записей всего