NAV

История изменений

28.06.2023

Общее

URL для API запросов

https://mychanger.icu/api2/

Ответ возвращается в формате JSON и после преобразования представляет собой массив

В случае успеха:
Если результат одно значение - то оно возвращается в поле result
Иначе результат возвращается в соответствующих полях

			{"result":"123456"}
			
			{"key1":"value1","key2":"value2"}
			

В случае ошибки - в поле error и доп.информация* (если есть) в поле info:

			{"error":"no_cards","info":"Все ушли на обед!"}

Для начального тестирования можно использовать метод echo: https://mychanger.icu/api2/echo

В него можно передать любые данные и увидеть (в payload) в каком виде их получает наш сервер. Если передать параметр key, то метод дополнительно вернет строку (в tosign) и хеш подписи этим ключом (в sign) от данных запроса.

Примеры вызова:
JSON:
curl -L 'https://mychanger.icu/api2/echo' \
-H 'Content-Type: application/json' \
-d '{
    "param1": 2,
    "param2": 1,
    "key": "KKKeeey"
}'


Обычный POST:
curl -L 'https://mychanger.icu/api2/echo' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'param2=2' \
-d 'param1=1' \
-d 'key=KKKeeey'


Обычный GET:
https://mychanger.icu/api2/echo?param2=2&param1=1&key=KKKeeey

Во всех вариантах вызова ответ одинаковый:
{
    "payload": {
        "param2": "2",
        "param1": "1",
        "key": "KKKeeey"
    },
    "tosign": "1:2:KKKeeey",
    "sign": "5c69e53c91bfd96cfc3e61604558107a314060ef"
}

Платежные направления

ID curr Валюта Метод Наименование Выдача
10 KZT P2P Банки Казахстана Номер карты
11 UZS P2P Банки Узбекистана Номер карты
23 AZN P2P Азербайджан M10 Номер телефона
51 AMD P2P Армянский драм Номер карты
58 KZT P2P СМП система моментальных платежей, перевод по номеру телефона: все банки кроме Каспи номер телефона
60 AZN P2P MPAY Номер телефона
60 AZN P2P MPAY Номер телефона
62 KZT P2P MPAY Номер телефона
63 TRY P2P Turkish Lira Номер карты
64 UAH P2P Ukraine mono банк Номер карты
101 KRW P2P Корея Номер карты
105 RUB P2P вход Сбербанк расчетный счет Номер р/с
86 RUB P2P Вход карты Номер карты
88 RUB P2P Вход номер тел Номер телефона
192 RUB P2P Тинькофф расчетный счет Номер р/с
194 RUB P2P Альфа банк расчетный счет Номер р/с
169 UZS P2P Вход банки Узбекистана Номер карты
89 RUB P2P Выплаты сбер id операции
83 RUB P2P выплаты все банки кроме сбера номер карты
93 RUB P2P выплаты сбп все банки номер телефона
109 RUB E-COM RUB url
110 UZS E-COM UZS url
153 AZN E-COM AZN url
160 KZT E-COM KZT url
157 BYN E-COM BYN url
184 UZS P2P все банки вход+выход номер карты
185 YJS P2P все банки YJS номер карты
19 AZN P2P capital bank вход+выход номер карты
59 AZN P2P emanat кошелек вход+выход номер тел
151 TRY P2P iban счета все банки вход номер счета
178 TRY P2P papara кошелек вход номер карты
179 TRY P2P payfix кошелек вход номер карты
183 BYN P2P карты все банки номер карты
164 BYN P2P iban счета все банки номер р/с
145 BYN P2P каскад вход все банки номер карты
159 KZT P2P Fridom KZ карты номер карты
125 KGS P2P mban карты номер карты
323 VND P2P карты ввод номер карты
328 VND P2P карты вывод номер карты
326 VND P2P номер счета ввод номер счета
327 VND P2P номер счета вывод номер счета
329 IDR P2P номер карты ввод номер карты
334 IDR P2P номер карты вывод номер карты
332 IDR P2P номер счета ввод номер счета
333 IDR P2P номер счета вывод номер счета

Примечание: Метод Сберпей это часть метода сбп 88 currID, вместе с реквизитами номера телефона так же присутствует кнопка для оплаты методом сберпей, по клику юзера перекидывает в приложение банка где уже заполнены реквизиты для перевода



Коды валют
----------

Согласно стандарта ISO 4217: RUB, AZN, KZT, UZS


Статусы заявок

Статусы "0 - Pending" и все статусы меньше 3, однозначно являются временными и потом поменяют значение в зависимости от выполнения и настроек

Статус "4 - Expired" не является окончательным(хотя по смыслу это отклонение операции) и может поменять значение. Например в тех случаях когда пользователь оплатил после отведенного времени на оплату.

Статусы "3 - Approved", "5 - Canceled" однозначно являются окончательными и могут изменить статус, в очень редких случаях и только по согласованию

Статус "4 - Expired" может быть при пополнении и выводе тоже.
Ремарка: Статус "4 - Expired" для ECOM заявок и заявок на выплату можно считать окончательным потому что измениться он уже не может.
Статус "4 - Expired" при пополнении может изменить статус в тех случаях когда например, пользователь провел оплату позднее отведенного на это времени.

Статус "5 - Canceled" в основном только при выводе, при пополнении в исключительных случаях.

Статусы e-com заявок

0 - Заявка создана

2 - Получены реквизиты

3 - Ошибка в реквизитах

4 - Ожидаем код

7 - Код получен

8 - Неверный код

9 - Код принят

10 - Заявка отменена

11 - Заявка выполнена

Формирование подписи

Принцип формирования подписи одинаков для всех методов запросов -- ввод, вывод, баланс, статус и т.д.

В формировании подписи участвуют значения всех параметров!

При формировании подписи вызовов API используйте Ваш API ключ (для создания вывода с соответствующим включенным флажком, и для всех остальных запросов со включенным чтением), а при проверке поступивших данных - Ваш Secret key со включенным чтением из меню Настройки -> API

Полученный хэш передать параметром sign в вашем запросе

Пример формирования подписи на PHP:

ksort($data, SORT_STRING);
             
$
sign = sha1(implode(':', array_values($data)) . ':' . 'YOUR_API_KEY');

Ввод

Запрос

Создание заявки на пополнение:

EP: https://mychanger.icu/api2/payment

Параметр отмеченный * не обязателен.

ПРИМЕЧАНИЕ ! Параметр prefer для определенных направлений (сейчас для UZS) может являться обязательным.

Пример отправки запроса:

                        $r = array(
                            'shopID' => 522,
                            'uniqID' => "544545dg-dgd1445-7777",
                            'currID' => 6, // 6 - сбербанк
                            'amount' => 500.52,
                            'label' => "123133-44465451",
                            'userID' => "17800111",
                            'userInfo' => [
                                'ip' => "192.168.0.1",
                                'ua' => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15",
                                'email' => "[email protected]",
                                'phone' => "+78005553535",
                                'name' => 'Test',
                                'surname' => 'Testov',
                                'patronymic' => 'Testovich'
                            ],
                            'memo' => "Пополнение средств",
                            'statusURL' => "https://your_url",
                            'period' => 10
                            );
                        ksort($r, SORT_STRING);
                        $r['sign'] = sha1(implode(':', array_values($r)) . ':' . $api_key);
            

Успешный ответ

Примечание: параметры tel, bank, bankTitle и paymentLink возвращаются только для направления СБП

Пример успешного ответа от сервера:

                $answ = Array
                    (
				"id" => 670057,
				"currID" => 6,
				"curr" => "RUB",
				"amount" => 1500.00
				"number" => "1111222211112222",
				"info" => "FEDOR M",
				"page" => "https://traderua.com/?card&id=670057&secret=318300158a1f6c16e370c4cbeee1234dd3b560",
				"card" => "1111222211112222",
				"fio" => "FEDOR M"
                    )
            

Вывод

Запрос

Создание заявки на вывод:

EP: https://mychanger.icu/api2/withdraw

Пример отправки запроса:

                        $r = array(
                            'shopID' => 522,
                            'uniqID' => "544545dg-dgd1445-dg454",
                            'currID' => 6, // 6 - сбербанк
                            'amount' => 500.51,
                            'number' => "1111222211112222",
                            'info' => "Сидоров Джон",
                            'label' => "123133-44465451",
                            'memo' => "Отправка средств",
                            'statusURL' => "https://your_url",
                            'period' => 10
                            );
                        ksort($r, SORT_STRING);
                        $r['sign'] = sha1(implode(':', array_values($r)) . ':' . $api_key);
            

Успешный ответ:

Пример успешного ответа от сервера:

                $answ = Array
                    (
                        "result"=>array(
                            "id" => 531636,
                            "currID" => 8,
                            "curr" => "RUB",
                            "amount" => 600.00,
                            "number" => "+79063711045",
                            "info" => "QIWIBANK"
                        )
                    )
            

Получение чека по операции вывода

Запрос

EP: https://mychanger.icu/api2/withdraw/check

Успешный ответ:

Пример успешного ответа от сервера:

                {"result":{"data":"**base64encoded**","type":"png"}}
            

E-com ввод

Создание операции

Запрос

Создание заявки на пополнение:

EP: https://mychanger.icu/api2/acquire

Параметр отмеченный * не обязателен.

Пример отправки запроса:

                        $r = array(
                            'shopID' => 522,
                            'uniqID' => "544545dg-dgd1445-7777",
                            'currID' => 6, // 6 - сбербанк
                            'amount' => 500.52,
                            'label' => "123133-44465451",
                            'memo' => "Пополнение средств",
                            'statusURL' => "https://your_url",
                            'period' => 10,
                            'from' => [
                                'card' => "2202112381841356",
                                'month' => "09",
                                'year' => "2029",
                                'cvv' => 123
                            ]
                            );
                        ksort($r, SORT_STRING);
                        $r['sign'] = sha1(implode(':', array_values($r)) . ':' . $api_key);
            

Успешный ответ

Пример успешного ответа от сервера:

                $answ = Array
                    (
				"id" => 670057,
				"currID" => 6,
				"curr" => "RUB",
				"amount" => 1500.00
				"code_required" => true
                    )
            

Отправка смс

Запрос

Отправка смс по действующей заявке:

EP: https://mychanger.icu/api2/acquire/confirm

Пример отправки запроса:

                        $r = array(
                            'shopID' => 522,
                            'id' => "1033039",
                            'code' => "470179",
                            'time' => time(),
                            );
                        ksort($r, SORT_STRING);
                        $r['sign'] = sha1(implode(':', array_values($r)) . ':' . $api_key);
            

Успешный ответ

На данный запрос успешный ответ соответствует успешному ответу, на запрос статуса

Пример успешного ответа от сервера:

                {
                    "result": {
                        "type": "payment",
                        "id": 1033039,
                        "currID": 39,
                        "curr": "RUB",
                        "amount": "153.00",
                        "label": "212112",
                        "memo": "",
                        "status": 0,
                        "statusText": "Pending",
                        "info": ""
                    }
                }
            

Отправить смс еще раз

Запрос

Запрос на повторную отправку 3DS кода пользователю:

EP: https://mychanger.icu/api2/acquire/resend

Параметр отмеченный * не обязателен.

Пример отправки запроса:

                        $r = array(
                            'shopID' => 522,
                            'id' => "1033039",
                            'time' => time(),
                            );
                        ksort($r, SORT_STRING);
                        $r['sign'] = sha1(implode(':', array_values($r)) . ':' . $api_key);
            

Успешный ответ

На данный запрос успешный ответ соответствует успешному ответу, на запрос статуса

Пример успешного ответа от сервера:

                {
                    "result": {
                        "type": "payment",
                        "id": 1033039,
                        "currID": 39,
                        "curr": "RUB",
                        "amount": "153.00",
                        "label": "212112",
                        "memo": "",
                        "status": 0,
                        "statusText": "Pending",
                        "info": ""
                    }
                }
            

Ошибка

IPN (Callbacks)

Для получения колбэков в ЛК, Настройки -> API нужно заполнить поле ‘введите адрес страницы обработки:’ или указывайте statusURL при каждом вызове методов payment и withdraw


Оповещения передаются методом POST в формате JSON с IP *.*.*.* (уточняйте у поддержки)
Оповещение считается обработанным, если сервер ответил HTTP-кодом 200
Дополнительно в ответ вы можете вернуть любой текст, его можно будет увидеть в кабинете

Вне зависимости от статуса (успешно/обработана/отклонена) вам придет колбэк следующего содержания:

Дополнительная информация

Пример кода обработчика на PHP:

$data = @json_decode(file_get_contents('php://input'), true);
if ($data['mychanger.icu'] < 2)
   exit;
$sign0 = $data['sign'];
unset($data['sign']);
ksort($data, SORT_STRING);
$sign = sha1(implode(':', array_values($data)) . ':' . 'ВАШ_API_SECRET');
if ($sign !== $sign0)
   die('Sign wrong!'); // этот текст будет видно в кабинете
echo('OK'); // и этот тоже

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

Возвращает статус заявки (пополнения или выплаты)

EP: https://mychanger.icu/api2/status

Успешный ответ:

Получение баланса (deprecated)

Данный метод устарел и будет удален по окончании 2024 года


Возвращает текущий баланс по платежным направлениям (доступный для выплат)
EP: https://mychanger.icu/api2/balance


Ответ:
Массив, где ключ - платежное направление, значение - баланс

                Отправляемые значения 
{"result":{"6":"1610.00","7":"460.00","8":"654.46"}}

Где 6 -- платежное направление Сбербанк на балансе 1610.1 RUB
Где 7 -- платежное направление Тинькофф на балансе 460.00 RUB
Где 8 -- платежное направление СБП на балансе 654.46 RUB


Ответ 'param_wrong':
Неверный формат параметра или Параметр содержит пробел

Получение общего баланса


Возвращает текущий суммарный баланс по валюте (доступный для выплат)
EP: https://mychanger.icu/api2/balance_all


Ответ:
Массив, где ключ - валюта, значение - баланс

                Отправляемые значения 
{ "result": { "RUB": 314021 } }


Ответ 'param_wrong':
Неверный формат параметра или Параметр содержит пробел

Получение информации о лимитах на вывод


Возвращает значения лимитов и значение "разрешено к выводу" по платежным направлениям. Счетчик лимитов сбрасывается в 00:00 по часовому поясу мерчанта.
EP: https://mychanger.icu/api2/withdraw/limit


Ответ:
Массив daily (содержит значения суточного лимита) и массив value (содержит актуальные на данный момент значения "разрешено к выводу"). В этих массивах ключ - платежное направление

                Отправляемые значения 
{"result":{"daily":{"6":"6000000.00","7":"2000000.00"},"value":{"6":"7337.00","7":"232733.00"}}}

В примере по платежному направлению Сбербанк (6) дневной лимит = 6 000 000 RUB, а остаток 7 337 RUB

Решение вопросов (диспуты) по API


Для решения разногласий в автоматике добавлен функционал, где по API можно передать информацию для диспутов.
EP: https://mychanger.icu/api2/dispute

Если нет ошибок то в ответе вы получаете id диспута

После получения этих данных они попадают операторам, которые могут сразу проверить и подтвердить либо отменить операцию по этой заявке.
При измнении статуса заявки у нас по ней будет сразу отправлен callback на disputeURL (если задан) или на statusURL из настроек мерчанта.
Пример данных callback:
{"mychanger.icu":"2.3","timeStamp":1720206230,"shopID":*,"type":"dispute","id":5237,"amount":"200.00","comment":"","currID":6,"curr":"RUB","status":1,"statusText":"Waiting","operationID":14736918,"operationAmount":"100.00","operationLabel":"vasya","operationStatus":4,"sign":"*"}

Предмет диспута:

Статусы диспута:

Получение статуса диспута


Получение актуальной информации о диспуте
EP: https://mychanger.icu/api2/dispute/status

Если нет ошибок, то в ответе вы получаете информацию о диспуте.
Структура ответа совпадает с данными из callback

Пример ответа:
{"result":{"id":5237,"amount":"200.00","comment":"","currID":6,"curr":"RUB","status":6,"statusText":"Correcting","operationID":14736918,"operationAmount":"100.00","operationLabel":"vasya","operationStatus":4}}

Перечень ошибок от нашего сервера при API запросах


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

Пополнение

Наименование операции Вывод ошибки от сервера Описание причины и рекомендации
Пополнение 'param_wrong' Неверный формат параметра или Параметр содержит пробел. Проверьте формат данных при отправке на наш сервер(формат данных должен быть правильным, например сумма -- только число в числовом формате, номер карты в формате 16 значений, ни один из параметров не должен содержать пробелы)
Пополнение 'data_wrong' Неверный формат данных при отправке. Проверка данных -- содержит ли запрос данных массив, если нет то будет такой ответ
Пополнение 'shopID_wrong' При проверки мерчанта в списках нет такого ID. Обратитесь в сапорт и уточните свой ID, или зайдите в свой личный кабинет и возьмите это значение оттуда
Пополнение 'sign_wrong' Подпись не прошла проверку. Внимательно посмотрите способ формирования подписи описанный в этой документации здесь
Пополнение 'currID_wrong' Не правильно указана платежная система. Причина либо такая платежная система не существует в проекте, либо Ваш мерчант не связан с этой платежной системой. Решение - посмотрите платежные системы здесь либо обратитесь в сапорт
Пополнение 'amount_small' Сумма указанная в заявке ниже допустимой
Пополнение 'amount_big' Сумма указанная в заявке выше допустимой
Пополнение 'statusURL_wrong' Если урл страницы обработки не настроен в личном кабинете и не указан в запросе на пополнение в параметре 'url' . Решение настроить - этот параметр в личном кабинете или всегда отправлять это значение при создании заявки
Пополнение 'uniqID_empty' При создании заявки отправлен ID заявки который уже есть в нашей системе
Пополнение 'no_attach_acc' Обраттитесь в техподдержку
Пополнение 'wrong_psys' Не правильно указана платежная система. Причина либо такая платежная система не существует в проекте, либо Ваш мерчант не связан с этой платежной системой. Решение - посмотрите платежные системы здесь либо обратитесь в сапорт
Пополнение 'no_cards' Нет свободных карт для пополнения
Пополнение 'all_cards_busy' Нет свободных карт для пополнения. Все реквизиты для выдачи на этой сумме заняты
Пополнение 'no_phonenumbers' или 'all_phonenumbers_busy' При пополнении на плат систему СБП (id:8) может в ответ придти такая ошибка, что означает -- нет свободных номеров тел для выдачи.
Пополнение/вывод 'invalid_hash' В личном кабинете у применяемого API KEY нет прав для этой операции. Решение - зайдите в личный кабинет и включите настройки API
Пополнение/вывод 'general_decline' При осуществлении операций по каскаду, такая ошибка может означать невозможность проведения операций по разным причинам, например отказ всех посторонних применяемых сервисов. ТО есть все попытки проведения операций увенчались отказом.
Пополнение/вывод 'rate_limit' Этот параметр настраивается на стороне аурис и означает максимальное возможное количество заявок по API в секунду. В случае его превышения можно получить эту ошибку. Параметры настроек можно узнать у наших тех специалистов.
Вывод 'data_wrong' Неверный формат данных при отправке. Проверка данных -- содержит ли запрос данных массив, если нет то будет такой ответ
Вывод 'shopID_wrong' При проверки мерчанта в списках нет такого ID. Обратитесь в сапорт и уточните свой ID, или зайдите в свой личный кабинет и возьмите это значение оттуда
Вывод 'sign_wrong' Подпись не прошла проверку. Внимательно посмотрите способ формирования подписи описанный в этой документации здесь
Вывод 'Total amount per day limit' Оборот всех выплат за сутки превысил суточный лимит
Вывод 'currID_wrong' Не правильно указана платежная система. Причина либо такая платежная система не существует в проекте, либо Ваш мерчант не связан с этой платежной системой. Решение - посмотрите платежные системы здесь либо обратитесь в сапорт
Вывод 'amount_small' Сумма указанная в заявке ниже допустимой
Вывод 'amount_big' Сумма указанная в заявке выше допустимой
Вывод 'statusURL_wrong' Если урл страницы обработки не настроен в личном кабинете и не указан в запросе на пополнение в параметре 'url' . Решение настроить - этот параметр в личном кабинете или всегда отправлять это значение при создании заявки
Вывод 'uniqID_empty' При создании заявки не отправлен ID заявки
Вывод 'no_operators' Нет, или не назначены, операторы для выполнения заявки. Обратитесь в техподдержку.
Вывод 'number_format_wrong' Неправильно указан формат данных для вывода
Вывод 'number_wrong' Количество знаков в данных для вывода не соответствует (например указан короткий номер телефона ниже 10 символов или номер карты не равен 16 символов, также номер карты может проверяться методом LUNA)
Вывод 'out_limit_exceeded' Превышен суточный лимит на вывод
Вывод 'low_balance' Нет денег для вывода на балансе
Вывод 'low_bal02' Заявка не будет проведена, по причине низкого баланса. При проверке в этот момент нет баланса. Также для этой заявки надо проверить uniqID параметр и он должен быть уникальным
Вывод 'low_bal03' Заявка не будет проведена, по причине низкого баланса. При проверке в этот момент нет баланса. Также для этой заявки надо проверить uniqID параметр и он должен быть уникальным
Вывод 'uniqID_used2' При создании заявки отправлен ID заявки который уже есть в нашей системе
Вывод 'wrong_psys' Не правильно указана платежная система. Причина либо такая платежная система не существует в проекте, либо Ваш мерчант не связан с этой платежной системой. Решение - посмотрите платежные системы здесь либо обратитесь в сапорт
Получение статуса 'id_empty' Не задано значение ID заявки
При получении ответов для API запросов баланса и статуса изначально проверяется подпись и правильность заполнения данных как при вводе и выводе.
Ниже представлены ошибки которые могут отличаться при запросах получения статуса.
Получение статуса 'id_wrong' Указанный ID заявки не существует у нас