Руководство по вызову Mefree.NET API на Node.js
Данное руководство описывает процесс взаимодействия с API платформы Mefree.NET с использованием Node.js. Оно включает создание подписи, отправку запросов и обработку ответов от API.
1. Общая информация о правилах подписи
Для аутентификации Mefree.NET API требует подпись, которая создаётся следующим образом:
1.1 Формирование строки для подписи
Строка для подписи формируется по следующему шаблону:
sign = timestamp + method + requestPath
timestamp: Метка времени в формате UTC (ISO 8601), например:
2024-11-26T12:34:56.789Z
.method: HTTP-метод, например,
GET
илиPOST
.requestPath: Путь запроса (включая параметры), например:
/api/config
/api/order?quantity=65000&target_address=TRON_ADDRESS&period=1
1.2 Процесс генерации подписи
Объедините
timestamp
,method
иrequestPath
в строку.Используйте алгоритм HMAC-SHA256, чтобы зашифровать строку с использованием вашего секретного ключа API (Secret Key).
Закодируйте результат с помощью Base64, чтобы получить финальную подпись.
1.3 Заголовки HTTP-запроса
Каждый запрос к API должен содержать следующие заголовки:
Content-Type
:application/json
MF-ACCESS-KEY
: Ваш API-ключ.MF-ACCESS-SIGN
: Сгенерированная подпись.MF-ACCESS-TIMESTAMP
: Метка времени в формате UTC.
2. Реализация подписи на Node.js
2.1 Установка необходимых библиотек
Перед началом убедитесь, что у вас установлены следующие библиотеки:
npm install axios crypto
axios: Для отправки HTTP-запросов.
crypto: Встроенная библиотека Node.js для создания подписи.
2.2 Функция для генерации подписи
Ниже приведён пример функции для генерации подписи:
const crypto = require('crypto');
/**
* Генерация подписи для Mefree API.
*
* @param {string} timestamp Метка времени (UTC в формате ISO 8601)
* @param {string} method HTTP-метод (GET/POST)
* @param {string} requestPath Путь запроса (включая параметры)
* @param {string} secretKey Секретный ключ API
* @returns {string} Подпись в формате Base64
*/
function generateSignature(timestamp, method, requestPath, secretKey) {
// Формируем строку для подписи
const stringToSign = `${timestamp}${method}${requestPath}`;
// Используем HMAC-SHA256 для шифрования строки
const hmac = crypto.createHmac('sha256', secretKey);
hmac.update(stringToSign);
// Возвращаем подпись в формате Base64
return hmac.digest('base64');
}
3. Создание запросов к API
3.1 Конфигурация
Задайте базовые параметры для подключения к API:
const axios = require('axios');
// Конфигурация API
const BASE_URL = "https://api.mefree.net"; // Базовый URL Mefree API
const API_KEY = "your_api_key"; // Ваш API-ключ
const SECRET_KEY = "your_secret_key"; // Ваш секретный ключ
3.2 Универсальная функция для отправки запросов
Используйте следующую функцию для отправки запросов:
/**
* Отправка запроса к Mefree API.
*
* @param {string} method HTTP-метод (GET/POST)
* @param {string} requestPath Путь запроса (включая параметры)
* @returns {Promise<Object>} Ответ API
*/
async function sendRequest(method, requestPath) {
// Генерируем метку времени (UTC)
const timestamp = new Date().toISOString();
// Генерируем подпись
const signature = generateSignature(timestamp, method, requestPath, SECRET_KEY);
// Заголовки запроса
const headers = {
'Content-Type': 'application/json',
'MF-ACCESS-KEY': API_KEY,
'MF-ACCESS-SIGN': signature,
'MF-ACCESS-TIMESTAMP': timestamp,
};
// Полный URL
const url = `${BASE_URL}${requestPath}`;
try {
// Выполняем запрос
const response = await axios({
method,
url,
headers,
});
// Возвращаем ответ API
return {
statusCode: response.status,
data: response.data,
};
} catch (error) {
// Обработка ошибок
return {
statusCode: error.response?.status || 500,
error: error.response?.data || error.message,
};
}
}
4. Примеры вызовов API
4.1 Получение информации об аккаунте
Endpoint:
/api/config
HTTP-метод:
GET
Пример:
(async () => {
const response = await sendRequest('GET', '/api/config');
if (response.statusCode === 200) {
console.log("Информация об аккаунте:", response.data);
} else {
console.error("Ошибка:", response);
}
})();
4.2 Создание заказа
Endpoint:
/api/order?quantity=65000&target_address=TRON_ADDRESS&period=1
HTTP-метод:
POST
Пример:
(async () => {
const requestPath = '/api/order?quantity=65000&target_address=TRON_ADDRESS&period=1';
const response = await sendRequest('POST', requestPath);
if (response.statusCode === 200) {
console.log("Заказ успешно создан:", response.data);
} else {
console.error("Ошибка:", response);
}
})();
4.3 Проверка статуса заказа
Endpoint:
/api/order/{pay_hash}
HTTP-метод:
GET
Пример:
(async () => {
const payHash = 'abcd1234'; // Замените на реальный pay_hash
const requestPath = `/api/order/${payHash}`;
const response = await sendRequest('GET', requestPath);
if (response.statusCode === 200) {
console.log("Статус заказа:", response.data);
} else {
console.error("Ошибка:", response);
}
})();
5. Часто встречающиеся ошибки
5.1 Неверная подпись (401 Unauthorized)
Убедитесь, что заголовок
MF-ACCESS-KEY
содержит правильный API-ключ.Проверьте, что строка для подписи сформирована в правильной последовательности:
timestamp + method + requestPath
.Используйте правильный SECRET_KEY.
Метка времени должна быть в формате UTC.
5.2 Ошибки параметров (400 Bad Request)
Проверьте правильность пути и параметров в запросе.
Убедитесь, что заголовок
Content-Type
установлен какapplication/json
.
5.3 Ограничение частоты запросов (429 Too Many Requests)
Mefree API имеет ограничения на частоту запросов. Избегайте частых вызовов в короткий промежуток времени.
Рекомендуется не превышать 2 запроса в секунду.
6. Заключение
С помощью этого руководства вы сможете успешно взаимодействовать с Mefree.NET API на Node.js. Вы научитесь создавать запросы, обрабатывать ответы и управлять действиями через API. Для важнейших операций (например, создание заказа) рекомендуется реализовать повторные попытки для повышения надежности. При возникновении вопросов обратитесь в службу поддержки Mefree.
Last updated