Перейти к основному содержимому

Настройка API ONTON

Настройка API ONTON для клейминга SBT

Техническая интеграция

Теперь, когда у вас есть все необходимые данные, можно интегрировать API ONTON в ваше мини-приложение.

Что у вас должно быть:

  • ✅ API ключ от администраторов ONTON
  • event_uuid вашего одобренного события
  • ✅ Активное событие (текущая дата в рамках события)

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

Эндпоинт:

POST https://app.onton.live/api/v1/reward

Заголовки запроса:

Content-Type: application/json
accept: application/json
api-key: ВАШ_API_КЛЮЧ

Тело запроса:

{
"event_uuid": "303f3438-ee1e-4b69-95d5-e27f07dd83fe",
"reward_user_id": 123456789
}

Получение Telegram ID пользователя

Для мини-приложения Telegram используйте SDK для получения ID пользователя:

import { retrieveLaunchParams } from '@telegram-apps/sdk';

const { initData } = retrieveLaunchParams();
const userId = initData.user.id;

Примеры реализации

JavaScript/TypeScript:

async function rewardUser(eventUuid, apiKey) {
const { initData } = retrieveLaunchParams();
const userId = initData.user.id;

const response = await fetch('https://app.onton.live/api/v1/reward', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'accept': 'application/json',
'api-key': apiKey
},
body: JSON.stringify({
event_uuid: eventUuid,
reward_user_id: userId
})
});

if (response.ok) {
const result = await response.json();
// Открываем ссылку для клейма SBT
window.open(result.data.reward_link, '_blank');
return true;
} else {
console.error('Ошибка при выдаче SBT:', response.status);
return false;
}
}

Python (для серверной части):

import requests

def reward_user(event_uuid, user_id, api_key):
url = "https://app.onton.live/api/v1/reward"
headers = {
"Content-Type": "application/json",
"accept": "application/json",
"api-key": api_key
}
data = {
"event_uuid": event_uuid,
"reward_user_id": user_id
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
result = response.json()
return result["data"]["reward_link"]
else:
print(f"Ошибка: {response.status_code} - {response.text}")
return None

cURL для тестирования:

curl -X 'POST' \
'https://app.onton.live/api/v1/reward' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'api-key: ваш_api_ключ' \
-d '{
"event_uuid": "303f3438-ee1e-4b69-95d5-e27f07dd83fe",
"reward_user_id": 123456789
}'

Обработка ответов

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

{
"status": "success",
"data": {
"reward_link": "https://t.me/id_app/start?startapp=DhXQyZ8Z4RaRc1Z6LytZ8mz1BwA58MjyHLB8ZVUnYMPNJ4AeajB"
}
}

Обработка ошибок:

401 - Unauthorized:

{
"error": "Unauthorized: No Api Key provided"
}
  • Проверьте правильность API ключа
  • Убедитесь, что заголовок api-key указан

400 - Bad Request:

{
"error": "Invalid request parameters or event not ongoing"
}
  • Проверьте корректность event_uuid
  • Убедитесь, что событие активно (в рамках указанных дат)
  • Проверьте правильность reward_user_id

Важные ограничения

Временные рамки:

  • API работает только во время активного события
  • Для постоянных наград указывайте длительный период (несколько лет)
  • При неактивном событии получите ошибку "event not ongoing"

Безопасность:

  • Никогда не храните API ключи в открытом коде
  • Используйте переменные окружения
  • Ограничьте доступ к API ключам

Тестирование

Рекомендуемый порядок:

  1. Убедитесь, что событие активно
  2. Протестируйте с собственным Telegram ID
  3. Проверьте корректность API ключа и UUID
  4. Убедитесь, что полученная ссылка открывается

Пример полной интеграции:

// Конфигурация
const CONFIG = {
apiKey: process.env.ONTON_API_KEY,
eventUuid: process.env.ONTON_EVENT_UUID
};

// Функция выдачи SBT
async function giveSBTReward() {
try {
const success = await rewardUser(CONFIG.eventUuid, CONFIG.apiKey);
if (success) {
// Показать уведомление об успехе
showSuccess('SBT награда выдана!');
} else {
showError('Не удалось выдать награду');
}
} catch (error) {
console.error('Ошибка при выдаче SBT:', error);
showError('Произошла ошибка');
}
}

Заключение

Интеграция ONTON API позволяет создать мощную систему наград в вашем мини-приложении. Основные принципы:

  1. Подготовка - получите все необходимые данные
  2. Тестирование - проверьте работу API
  3. Интеграция - встройте в логику приложения
  4. Мониторинг - следите за работой системы

Помните про временные ограничения событий и всегда проверяйте активность вашего события перед выдачей наград.