Внимание! Для получения api-ключей:
Зарегистрируйте профиль у нас на сайте. Верифицируйте номер телефона и адрес электронной почты. Обратитесь в службу поддержки через Телеграмм-бот @Fly_pay_support .
Описание запросов Для использования API нужно отправлять POST запрос на URL: https://fly-pay.io/api/v1/ с обязательными заголовками:
"Accept: application/json",
"Content-Type: application/json",
"Api-Key: {public_key}",
"Signature: {signature_by_data}",
Параметры запроса передаются в формате JSON .
Заголовок Authorization должен содержать публичный ключ пользователя (public_key) для авторизации запроса.
Цифровая подпись для заголовка Signature формируется методом HMAC на основе алгоритма "sha256 " с использованием секретного ключа пользователя (secret_key) .
Пример генерации подписи:
$json_data = json_encode($data);
$signature = hash_hmac("sha256", $json_data, $secret_key);
Ответ API также содержит заголовок Signature с цифровой подписью для верификации.
Пример полного запроса через curl с последующим отделением в ответе заголовка с подписью и проверкой подписи:
// Create a callback to capture HTTP headers for the response
$rheaders = [];
$headerCallback = function ($curl, $header_line) use (&$rheaders) {
// Ignore the HTTP request line (HTTP/1.1 200 OK)
if (strpos($header_line, ":") === false) {
return strlen($header_line);
}
list($key, $value) = explode(":", trim($header_line), 2);
$rheaders[strtolower(trim($key))] = trim($value);
return strlen($header_line);
};
$json_data = json_encode($data);
$config = [
CURLOPT_USERAGENT => FlyPay user',
CURLOPT_URL => 'https://fly-pay.io/api/v1/balances',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_HEADERFUNCTION => $headerCallback,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Content-Type: application/json',
'Api-key: '. $public_key,
'Signature: '. hash_hmac("sha256", $json_data, $secret_key),
],
CURLOPT_AUTOREFERER => true,
CURLOPT_POSTFIELDS => json_encode($data),
];
$curl = curl_init();
curl_setopt_array($curl, $config);
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
/// get response body without headers
$response = substr($response, $header_size);
curl_close($curl);
/// do verification of $response
$response_signature = $rheaders['signature'];
$check_signature = hash_hmac("sha256", $response, $secret_key);
If ( hash_equals($check_signature, $response_signature) ){
/// response is verified
$response = json_decode($response, true);
}
В ответ на запрос отправляется JSON строка со статусом запроса (поле status – успешно или не успешно принят запрос в API), описанием ошибки в случае не успешного запроса (message), а также данными результата (data) в случае успешной обработки запроса:
{
"status": String, // success OR error
"message": String, // Optional - Если статус error, описание ошибки
"data": {
"field_1": " value_1",
"field_2": " value_2",
...
}
}
Для запросов создания транзакции на оплату строка data также будет содержать поле status со статусом данной транзакции.
Private API Баланс аккаунта Для получения балансов кошельков используется метод balances ( ".../api/v1/balances ").
Запрос
{ }
Ответ
{
"status": "success",
"data": {[
"{currency}": [
"symbol": String,
"name": String,
"amount": Float,
"amount_locked": Float,
"available_amount": Float,
"is_crypto": Bool,
],
]}
}
Описание параметров:
symbol - Символ валютыname - Название валюты латиницейamount - Доступное к-во балансаamount_locked - К-во средств заблокированных (в оплатах)is_crypto - Если указано значение true или 1, то это указывает, что валюта является криптовалютой.
Способы оплаты (payways) Метод payways ( ".../api/v1/payways ") позволяет получить доступные пользователю способы оплаты/выплаты/обмена, комиссию за проведение платежа, минимальную и максимальную сумму.
Запрос
{ }
Ответ
{
"status": "success",
"data": {[
"{payin/payout/exchange_payin/exchange_payout}": {[
"{symbol}": {[
"{payway}": [
"symbol": String,
"name": String,
"min_amount": Float,
"max_amount": Float,
"percent_fee": Float,
"amount_fee": Float,
"append_fee": Bool,
"is_crypto": Bool,
"has_memo_id": Bool,
"payway": String,
"auto_conversation": Array,
]
]}
]},
"exchange": {[
"{currency_from}_{currecy_to}": {
"currency_from": String,
"currency_to": String,
"currency_from_precision": Int,
"currency_to_precision": Int,
"exchange_rate": Float,
"min_amount": Float,
"max_amount": Float,
"percent_fee": Float,
"amount_fee": Float,
"currency_fee": String,
}
]}
}
Описание параметров:
symbol - Символ валютыname - Название валюты латиницейmin_amount - Мин. сумма операцииmax_amount - Макс. сумма операцииpercent_fee - Процент комиссии от суммы оплаты/выплаты amount_fee - Фиксированная комиссия за совершение оплаты/выплаты (сумма)append_fee - Если указано значение true или 1, то это указывает, что комиссия будет начислена на сумму платежаis_crypto - Если указано значение true или 1, то это указывает, что валюта является криптовалютой.has_memo_id - Указывает, что криптовалюта имеет Memo ID auto_conversation - Массив валют, в которые можно конвертировать полученные средства, если создается постоянный Депозит адрес.
Транзакции Приём платежа (payin) Для приема оплаты используется метод transaction/payin ( " .../api/v1/transaction/payin " ). Метод создает заявку на прием оплаты.
Запрос
{
"external_id": String,
"currency": String,
"payway": String, //(Optional)
"amount": Float,
"client_id": String,
"client_ip": String,
"client_email": String,
"callback_url": String, //(Optional)
}
Описание параметров:
external_id - Внутренний идентификатор транзакции мерчанта.currency - Валюта транзакции (btc, usdt, ...)payway - Способ оплаты (см. раздел Способы оплаты ) amount - Сумма платежаclient_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего платеж client_email - Email клиента, совершающего платежcallback_url - url адрес для сервер-сервер сообщения о результате транзакцииОтвет
{
"status": "success",
"data": {
"id": Integer,
"create_time": Integer,
"update_time": Integer,
"external_id": String,
"currency_from": String,
"currency_to: String,
"payway": String,
"wallet": String,
"wallet_memo_id": String,
"amount_ordered": Float,
"amount_received": Float,
"type": String,
"status": String,
"tx_id": String,
"payment_amount_fee": Float,
"payment_currency_fee": String,
"convert_status": ,
"in_amount": Float,
"out_amount": Float,
"amount_fee": Float,
"conversation_amount_fee": Float,
"conversation_currency_fee": String,
"callback_url": String,
"client_id": String,
"client_email": String,
"client_ip": String,
}
}
Описание параметров:
id - Уникальный идентификатор платежа в системе FlyPaycreate_time - Дата и время создания платежа в виде таймстампа в секундах.update_time - Дата и время обновления платежа в виде таймстампа в секундах в системе FlyPayexternal_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)payway - Способ оплаты (см. раздел Способы оплаты ) wallet - Номер кошелька, на который нужно отправлять средстваwallet_memo_id - Memo ID кошелька, на который нужно отправлять средстваamount_ordered - Сумма оплаты, заявленная пользователемamount_received - Сумма, реально полученная системой в процессе оплаты (выдается только по окончании транзакции)type - Тип платежаstatus - Статус ордераtx_id - Идентификатор транзакции в системе блокчейн . Выдается только в случае работы с криптовалютами payment_amount_fee - Комиссия за платежpayment_currency_fee - Валюта комиссииconvert_status - Статус конвертацииin_amount - Сумма конвертации в изначальной валютеout_amount - Сумма конвертации в конечной валютеconversation_amount_fee - Комиссия за конвертациюconversation_currency_fee - Валюта комиссии за конвертациюcallback_url - url адрес для сервер-сервер сообщения о результате транзакции.
Создание выплаты (payout) Для создания выплаты используется метод transaction/payout ( " .../api/v1/transaction/payout " ).
Запрос
{
"external_id": String,
"currency": String,
"amount": Float,
"payway": String,
"wallet": String,
"wallet_memo_id": String,
"client_id": String,
"client_ip": String,
"client_email": String,
"callback_url": String, (Optional)
}
Описание параметров:
external_id - Внутренний идентификатор транзакции мерчанта.currency - Валюта транзакции (btc, usdt, ...)amount - Сумма платежаpayway - Способ оплаты (см. раздел Способы оплаты ) wallet - Номер кошелька, на который нужно отправлять средстваwallet_memo_id - Memo ID кошелька, на который нужно отправлять средстваclient_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего платеж client_email - Email клиента, совершающего платежcallback_url - url адрес для сервер-сервер сообщения о результате транзакцииОтвет
{
"status": "success",
"data": {
"id": Integer,
"create_time": Integer,
"update_time": Integer,
"external_id": String,
"currency_from": String,
"currency_to: String,
"payway": String,
"wallet": String,
"wallet_memo_id": String,
"amount_spent": Float,
"type": String,
"status": String,
"tx_id": String,
"payment_amount_fee": Float,
"payment_currency_fee": String,
"convert_status": ,
"in_amount": Float,
"out_amount": Float,
"conversation_amount_fee": Float,
"conversation_currency_fee": String,
"callback_url": String,
"client_id": String,
"client_email": String,
"client_ip": String,
}
}
Описание параметров:
id - Уникальный идентификатор платежа в системе FlyPaycreate_time - Дата и время создания платежа в виде таймстампа в секундах.update_time - Дата и время обновления платежа в виде таймстампа в секундах в системе FlyPayexternal_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)payway - Способ оплаты (см. раздел Способы оплаты ) wallet - Номер кошелька, на который нужно отправлять средстваwallet_memo_id - Memo ID кошелька, на который нужно отправлять средстваamount_spent - Сумма, которая будет удержана с баланса при выплатеtype - Тип платежаstatus - Статус ордераtx_id - Идентификатор транзакции в системе блокчейн. Выдается только в случае работы с криптовалютамиpayment_amount_fee - Комиссия за платежpayment_currency_fee - Валюта комиссииconvert_status - Статус конвертацииin_amount - Сумма конвертации в изначальной валютеout_amount - Сумма конвертации в конечной валютеconversation_amount_fee - Комиссия за конвертациюconversation_currency_fee - Валюта комиссии за конвертациюcallback_url - url адрес для сервер-сервер сообщения о результате транзакции.
Прием платежа с обменом (exchange_payin) Для приема оплаты с конвертацией ее в другую валюту используется метод transaction/exchange_payin ( " .../api/v1/transaction/exchange_payin " ). Метод создает заявку на прием оплаты и после получений оплаты конвертирует ее в указанную валюту currency_to.
Запрос
{
"external_id": String,
"currency_from": String,
"currency_to": String,
"payway": String,
"amount": Float,
"client_id": String,
"client_ip": String,
"client_email": String,
"callback_url": String, (Optional)
}
Описание параметров:
external_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)payway - Способ оплаты (см. раздел Способы оплаты ) amount - Сумма платежа в валюте currency_fromclient_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего платеж client_email - Email клиента, совершающего платежcallback_url - url адрес для сервер-сервер сообщения о результате транзакцииОтвет
{
"status": "success",
"data": {
"id": Integer,
"create_time": Integer,
"update_time": Integer,
"external_id": String,
"currency_from": String,
"currency_to: String,
"payway": String,
"wallet": String,
"wallet_memo_id": String,
"amount_ordered": Float,
"amount_received": Float,
"type": String,
"status": String,
"tx_id": String,
"payment_amount_fee": Float,
"payment_currency_fee": String,
"convert_status": ,
"in_amount": Float,
"out_amount": Float,
"amount_fee": Float,
"conversation_amount_fee": Float,
"conversation_currency_fee": String,
"callback_url": String,
"client_id": String,
"client_ip": String,
"client_email": String,
}
}
Описание параметров:
id - Уникальный идентификатор платежа в системе FlyPaycreate_time - Дата и время создания платежа в виде таймстампа в секундах.update_time - Дата и время обновления платежа в виде таймстампа в секундах в системе FlyPayexternal_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)payway - Способ оплаты (см. раздел Способы оплаты ) wallet - Номер кошелька, на который нужно отправлять средстваwallet_memo_id - Memo ID кошелька, на который нужно отправлять средстваamount_ordered - Сумма оплаты, заявленная пользователемamount_received - Сумма, реально полученная системой в процессе оплаты (выдается только по окончании транзакции)type - Тип платежаstatus - Статус ордераtx_id - Идентификатор транзакции в системе блокчейн. Выдается только в случае работы с криптовалютамиpayment_amount_fee - Комиссия за платежpayment_currency_fee - Валюта комиссииconvert_status - Статус конвертацииin_amount - Сумма конвертации в изначальной валютеout_amount - Сумма конвертации в конечной валютеconversation_amount_fee - Комиссия за конвертациюconversation_currency_fee - Валюта комиссии за конвертациюcallback_url - url адрес для сервер-сервер сообщения о результате транзакции.
Создание выплаты с обменом (exchange_payout) Для создания выплаты с обменом используется метод transaction/ exchange_payout ( " .../api/v1/transaction/exchange_payout " ).
Запрос
{
"external_id": String,
"currency_from": String,
"currency_to": String,
"amount": Float,
"payway": String,
"wallet": String,
"wallet_memo_id": String,
"client_id": String,
"client_ip": String,
"client_email": String,
"callback_url": String, (Optional)
}
Описание параметров:
external_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)amount - Сумма платежа, которая будет списана с кошелька currency_frompayway - Способ оплаты (см. раздел Способы оплаты ) wallet - Номер кошелька, на который нужно отправлять средстваwallet_memo_id - Memo ID кошелька, на который нужно отправлять средстваclient_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего платеж client_email - Email клиента, совершающего платежcallback_url - url адрес для сервер-сервер сообщения о результате транзакцииОтвет
{
"status": "success",
"data": {
"id": Integer,
"create_time": Integer,
"update_time": Integer,
"external_id": String,
"currency_from": String,
"currency_to: String,
"payway": String,
"wallet": String,
"wallet_memo_id": String,
"amount_spent": Float,
"type": String,
"status": String,
"tx_id": String,
"payment_amount_fee": Float,
"payment_currency_fee": String,
"convert_status": ,
"in_amount": Float,
"out_amount": Float,
"conversation_amount_fee": Float,
"conversation_currency_fee": String,
"callback_url": String,
"client_id": String,
"client_ip": String,
"client_email": String,
}
}
Описание параметров:
id - Уникальный идентификатор платежа в системе FlyPaycreate_time - Дата и время создания платежа в виде таймстампа в секундах.update_time - Дата и время обновления платежа в виде таймстампа в секундах в системе FlyPayexternal_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)payway - Способ оплаты (см. раздел Способы оплаты ) wallet - Номер кошелька, на который нужно отправлять средстваwallet_memo_id - Memo ID кошелька, на который нужно отправлять средстваamount_spent - Сумма, которая будет удержана с баланса при выплатеtype - Тип платежаstatus - Статус ордераtx_id - Идентификатор транзакции в системе блокчейн. Выдается только в случае работы с криптовалютамиpayment_amount_fee - Комиссия за платежpayment_currency_fee - Валюта комиссииconvert_status - Статус конвертацииin_amount - Сумма конвертации в изначальной валютеout_amount - Сумма конвертации в конечной валютеconversation_amount_fee - Комиссия за конвертациюconversation_currency_fee - Валюта комиссии за конвертациюcallback_url - url адрес для сервер-сервер сообщения о результате транзакции.
Получение статуса транзакции (status) Для проверки состояния транзакции используется метод transaction/status ( " .../api/v1/transaction/status " ).
Запрос
{
"id": Integer,
// OR
"external_id": String,
}
Описание параметров:
id - Уникальный идентификатор платежа в системе FlyPayexternal_id - Внутренний идентификатор транзакции мерчанта.Ответ содержит в себе данные ордера и его статус в формате, описанном в разделе Прием платежа или Создание выплаты .
История транзакций (transactions) Список транзакций в указанном диапазоне дат/времени можно получить методом transaction/history ( "... /api/v1/transaction/history ").
Запрос
{
"limit": Integer, (Optional)
"page": Integer, (Optional)
}
Описание параметров:
limit – Число записей в ответе (максимум 100)page - Номер страницы (по умолчанию 1)Ответ
{
"status": "success",
"total_count: Integer,
"page: Integer,
"per_page: Integer,
"data": [
{
...
}
]
}
Описание параметров:
total_count - Общее к-во транзакцийpage - Номер страницыper_page - Количество кодов на страницуdata - Массив транзакций, попавших в заданную выборку. Каждая транзакция передается в формате, указанном в методе status.
Deposit addresses Создание депозит адреса Создать новый депозит адреса на длительность жизни 1 год после неактивности можно метод deposit_address/create ( " .../api/v1/deposit_address/create " ).
Запрос
{
"currency_from": String,
"currency_to": String (Optional)
"payway": String, (Optional)
"client_id": String, (Optional)
"client_ip": String, (Optional)
"client_email": String, (Optional)
"callback_url": String, (Optional)
}
Описание параметров:
currency_from - Валюта, в которой будет создан Депозит адресcurrency_to - Валюта, в которую нужно конвертировать поступивший депозит. (Если автоконвертацию использовать не нужно, оставить пустым).payway - Способ оплаты (см. раздел Способы оплаты ) client_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего платеж client_email - Email клиента, совершающего платежcallback_url - URL обратного вызова, который сможет обработать POST-запрос при успешном депозитеОтвет
{
"status": "success",
"data": {
"id": Integer,
"create_time": Integer,
"update_time": Integer,
"currency_from": String,
"currency_from": String,
"payway": String,
"address": String,
"memo_id": String,
"min_amount": Float,
"client_id": String,
"client_ip": String,
"client_email": String,
"callback_url": String,
"active": Bool,
}
}
Описание параметров:
id - Уникальный идентификатор адреса в системе FlyPaycreate_time - Дата и время создания адреса в виде таймстампа в секундах.update_time - Дата и время обновления адреса в виде таймстампа в секундах в системе FlyPaycurrency_from - Валюта, в которой будет создан Депозит адресcurrency_to - Валюта, в которую нужно конвертировать поступивший депозит.payway - Способ оплаты (см. раздел Способы оплаты ) address - Адрес для депозитаmemo_id - Memo ID для криптовалют, которым нужен memo (xrp, eos, stellar)min_amount - Минимальный размер депозитаcallback_url - URL обратного вызова, который сможет обработать POST-запрос при успешном депозитеactive - Если указано значение true или 1, то это указывает, что адрес активен
Получение списка депозит адресов Список депозит адресов можно получить методом deposit_address/list ( " .../api/v1/deposit_address/list " ).
Запрос
{
"currency": String, (Optional)
"limit": Integer, (Optional)
"page": Integer, (Optional)
}
Описание параметров:
currency - Валюта, в которой нужно вернуть список адресов (Если оставить пустым, вернется список всех адресов)limit – Число записей в ответе (максимум 100)page - Номер страницы (по умолчанию 1)Ответ
{
"status": "success",
"total_count: Integer,
"page: Integer,
"per_page: Integer,
"data": [
{
...
}
]
}
Описание параметров:
total_count - Общее к-во адресовpage - Номер страницыper_page - Количество адресов на страницуdata - Массив адресов, попавших в заданную выборку. Каждый адрес передается в формате, указанном в методе deposit_address/create .
Exchanges Получение предполагаемой суммы обмена Для получения предполагаемой суммы обмена используется метод exchange/estimated_amount ( ".../api/v1/exchange/estimated_amount "). Метод отдает примерную сумму обмена по валютной паре.
Запрос
{
"currency_from": String,
"currency_to": String,
"amount": Float
}
Описание параметров:
currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)amount - Сумма обменаОтвет
{
"status”: “success",
"data": {
"currency_from": String,
"currency_to: String,
"amount_from": Float,
"amount_to": Float,
}
}
Описание параметров:
currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)amount_from - Сумма оплаты, заявленная пользователемamount_to - Сумма конвертации в конечной валюте
Создание обмена Для создания выплаты с обменом используется метод transaction/exchange ( " .../api/v1/transaction/exchange " ).
Запрос
{
"external_id": String,
"currency_from": String,
"currency_to": String,
"amount": Float,
"client_id": String,
"client_ip": String,
"client_email": String,
"callback_url": String, (Optional)
}
Описание параметров:
external_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)amount - Сумма платежа, которая будет списана с кошелька currency_fromclient_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего обменclient_email - Email клиента, совершающего обменcallback_url - url адрес для сервер-сервер сообщения о результате транзакцииОтвет
{
"status": "success",
"data": {
"id": Integer,
"create_time": Integer,
"update_time": Integer,
"external_id": String,
"currency_from": String,
"currency_to: String,
"amount_from": Float,
"amount_to": Float,
"type": String,
"status": String,
"amount_fee": Float,
"currency_fee": String,
"callback_url": String,
"client_id": String,
"client_email": String,
"client_ip": String,
}
}
Описание параметров:
id - Уникальный идентификатор платежа в системе FlyPaycreate_time - Дата и время создания транзакции в виде таймстампа в секундах.update_time - Дата и время обновления транзакции в виде таймстампа в секундах в системе FlyPayexternal_id - Внутренний идентификатор транзакции мерчанта.currency_from - Валюта исходящего кошелька (btc, usdt, …)currency_to - Валюта входящего кошелька (btc, usdt, …)amount_from - Сумма оплаты, заявленная пользователемamount_to - Сумма конвертации в конечной валютеtype - Тип платежаstatus - Статус ордераamount_fee - Комиссия за обменcurrency_fee - Валюта комиссии обменаcallback_url - url адрес для сервер-сервер сообщения о результате транзакции.client_id - ID клиента в системе мерчантаclient_ip – IP клиента, совершающего обменclient_email - Email клиента, совершающего обмен