Руководство по вызову Mefree.NET API на Python
PreviousИнструкция по вызову API Mefree.NET на языке JavaNextРуководство по вызову Mefree.NET API на Node.js
Last updated
import hmac
import hashlib
import base64
def generate_signature(timestamp, method, request_path, secret_key):
"""
Генерация подписи для Mefree API.
:param timestamp: Метка времени (UTC в формате ISO 8601)
:param method: HTTP-метод (GET/POST)
:param request_path: Путь запроса (включая параметры)
:param secret_key: Секретный ключ API
:return: Подпись в формате Base64
"""
# Формируем строку для подписи
string_to_sign = f"{timestamp}{method}{request_path}"
# Используем HMAC-SHA256 для шифрования строки
hmac_obj = hmac.new(secret_key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256)
# Возвращаем подпись в формате Base64
return base64.b64encode(hmac_obj.digest()).decode('utf-8')# Конфигурация API
BASE_URL = "https://api.mefree.net" # Базовый URL Mefree API
API_KEY = "your_api_key" # Ваш API-ключ
SECRET_KEY = "your_secret_key" # Ваш секретный ключimport requests
from datetime import datetime, timezone
def send_request(method, request_path):
"""
Отправка запроса к Mefree API.
:param method: HTTP-метод (GET/POST)
:param request_path: Путь запроса (включая параметры)
:return: Ответ API в формате JSON
"""
# Генерируем метку времени (UTC)
timestamp = datetime.now(timezone.utc).isoformat(timespec='milliseconds').replace('+00:00', 'Z')
# Генерируем подпись
signature = generate_signature(timestamp, method, request_path, SECRET_KEY)
# Заголовки запроса
headers = {
"Content-Type": "application/json",
"MF-ACCESS-KEY": API_KEY,
"MF-ACCESS-SIGN": signature,
"MF-ACCESS-TIMESTAMP": timestamp
}
# Полный URL
url = BASE_URL + request_path
# Выполняем запрос
response = requests.request(method, url, headers=headers)
# Возвращаем JSON-ответ или текст ошибки
return {
"status_code": response.status_code,
"response": response.json() if response.headers.get('Content-Type') == 'application/json' else response.text
}if __name__ == "__main__":
# Вызов API для получения информации об аккаунте
result = send_request("GET", "/api/config")
# Обработка ответа
if result['status_code'] == 200:
print("Информация об аккаунте:")
print(result['response'])
else:
print(f"Ошибка: {result['status_code']}")
print(result['response'])if __name__ == "__main__":
# Вызов API для создания заказа
result = send_request("POST", "/api/order?quantity=65000&target_address=TRON_ADDRESS&period=1")
# Обработка ответа
if result['status_code'] == 200:
print("Заказ успешно создан:")
print(result['response'])
else:
print(f"Ошибка: {result['status_code']}")
print(result['response'])if __name__ == "__main__":
# ID заказа для проверки
pay_hash = "abcd1234" # Замените на реальный pay_hash
# Вызов API для проверки статуса заказа
result = send_request("GET", f"/api/order/{pay_hash}")
# Обработка ответа
if result['status_code'] == 200:
print("Статус заказа:")
print(result['response'])
else:
print(f"Ошибка: {result['status_code']}")
print(result['response'])