Документация XevoPay API
XevoPay — высокоскоростной криптоэквайринг на базе TON (The Open Network). Сервис позволяет принимать платежи в USDT (TON Jetton), TON и GRAM с моментальным выставлением инвойсов, автоматической сверкой блокчейна и надежной защитой покупателей от фрода.
Быстрый старт за 3 шага
api_key (публичный) и api_secret (для подписи вебхуков).payment_url и перенаправьте клиента на оплату в адаптивный чекаут.Аутентификация запросов
Для взаимодействия с API вы можете использовать заголовок X-API-Key с ключом вашего проекта, либо Authorization: Bearer <token> при авторизации через учетную запись.
Content-Type: application/json
X-API-Key: pk_live_9b4e72c810f3a9e10d2c
# Или заголовок Bearer JWT токена
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI...
Создание счета на оплату
Генерирует новый инвойс и уникальный блокчейн-адрес в сети TON. Возвращает прямую ссылку на стилизованный чекаут pay.xevopay.ru/checkout?id=....
curl -X POST https://dashboard.xevopay.ru/api/v1/invoices \
-H "Content-Type: application/json" \
-H "X-API-Key: pk_live_YOUR_KEY" \
-d '{
"projectId": "proj_809244",
"amount": 25.00,
"currency": "USDT",
"orderId": "order_77491",
"description": "Подписка Telegram Premium 1 мес",
"successUrl": "https://myshop.com/success",
"cancelUrl": "https://myshop.com/cancel"
}'
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| projectId | string | Да | ID подтвержденного проекта мерчанта |
| amount | number | Да | Сумма платежа (мин. 0.01) |
| currency | string | Опционально | Валюта: USDT (по умолчанию), TON или GRAM |
| orderId | string | Опционально | Внутренний ID заказа в вашей базе данных для сверки |
| description | string | Опционально | Название товара или услуги, отображаемое на чекауте |
| successUrl | string | Опционально | URL редиректа после успешной оплаты |
{
"success": true,
"invoice": {
"id": "inv_948194",
"project_id": "proj_809244",
"amount": "25.00000000",
"currency": "USDT",
"order_id": "order_77491",
"description": "Подписка Telegram Premium 1 мес",
"wallet_address": "UQDKUyT37YQ9Yv-Fe2E1q9J7_3us9Mt_-aG7xSEl6EMk5saT",
"status": "pending",
"payment_url": "https://pay.xevopay.ru/checkout?id=inv_948194",
"expires_at": "2026-09-22T15:25:00.000Z",
"created_at": "2026-09-22T14:25:00.000Z"
}
}
Проверка статуса счета
Позволяет получить актуальный статус счета в реальном времени. Статус обновляется автоматически фоновым сканером TON при подтверждении транзакции.
curl -X GET https://dashboard.xevopay.ru/api/v1/invoices/inv_948194 \
-H "X-API-Key: pk_live_YOUR_KEY"
Вебхуки (Instant Webhooks)
Как только транзакция поступает в блокчейн TON и подтверждается сетью, XevoPay моментально отправляет HTTP POST запрос на указанный вами webhook_url.
X-Xevo-Signature. Она гарантирует, что вебхук отправлен именно сервером XevoPay, а не злоумышленником.
const crypto = require('crypto');
const express = require('express');
const app = express();
app.post('/webhook/xevopay', express.raw({ type: 'application/json' }), (req, res) => {
const secret = 'sec_live_YOUR_SECRET';
const receivedSig = req.headers['x-xevo-signature'];
const rawBody = req.body.toString('utf8');
// Вычисляем ожидаемый HMAC-SHA256
const expectedSig = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
if (receivedSig !== expectedSig) {
console.error('Неверная подпись вебхука!');
return res.status(400).send('Invalid signature');
}
const payload = JSON.parse(rawBody);
console.log('Событие XevoPay:', payload.event);
if (payload.event === 'invoice.paid') {
const invoice = payload.invoice;
console.log(`Заказ ${invoice.order_id} успешно оплачен на сумму ${invoice.amount} ${invoice.currency}`);
// Здесь активируйте подписку или выдайте цифровой товар клиенту
}
res.status(200).send('OK');
});
app.listen(8080);
Интеграция в Telegram-ботов
Python aiogram 3.x
XevoPay спроектирован для бесшовной работы с Telegram. Вы можете отправлять инвойс прямо в чат кнопкой InlineKeyboardButton(url=payment_url) — при нажатии у пользователя открывается нативный чекаут с автоматическим переходом в Tonkeeper или @wallet.
import aiohttp
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
XEVOPAY_API_KEY = "pk_live_YOUR_KEY"
PROJECT_ID = "proj_809244"
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()
async def create_xevo_invoice(amount: float, order_id: str, desc: str) -> str:
url = "https://dashboard.xevopay.ru/api/v1/invoices"
payload = {
"projectId": PROJECT_ID,
"amount": amount,
"currency": "USDT",
"orderId": order_id,
"description": desc
}
headers = {"X-API-Key": XEVOPAY_API_KEY}
async with aiohttp.ClientSession() as session:
async with session.post(url, json=payload, headers=headers) as resp:
data = await resp.json()
return data["invoice"]["payment_url"]
@dp.message(Command("buy"))
async def cmd_buy(message: types.Message):
# Создаем инвойс на 10.00 USDT
payment_url = await create_xevo_invoice(
amount=10.00,
order_id=f"user_{message.from_user.id}_plan",
desc="Доступ в закрытый VIP канал"
)
keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="💳 Оплатить 10 USDT (TON)", url=payment_url)]
])
await message.answer(
"✨ Оформление подписки\n\n"
"Сумма к оплате: 10.00 USDT в сети TON\n"
"Нажмите кнопку ниже для безопасной оплаты:",
reply_markup=keyboard,
parse_mode="HTML"
)
if __name__ == "__main__":
dp.run_polling(bot)
48-часовой Safe-Hold и споры
Для защиты экосистемы от мошенников платформа XevoPay использует механизм временного удержания:
- Каждый поступивший платеж находится на балансе в статусе Холда (48 часов).
- По истечении 48 часов средства автоматически переходят в статус Доступно к выводу.
- Если покупатель не получил товар, он может подать апелляцию в чекауте. При открытии спора средства временно замораживаются до разрешения администратором XevoPay.
- При разрешении спора в пользу мерчанта инвойс автоматически размораживается. При возврате покупателю средства возвращаются на кошелек плательщика.
Коды ответов и ошибок API
| HTTP Код | Значение | Возможная причина и решение |
|---|---|---|
| 200 OK / 201 Created | Успешный запрос | Запрос выполнен корректно, инвойс сгенерирован. |
| 400 Bad Request | Ошибка валидации | Не передан обязательный параметр или сумма меньше 0.01. |
| 401 Unauthorized | Не авторизован | Отсутствует или недействителен заголовок X-API-Key или Bearer токен. |
| 403 Forbidden | Доступ запрещен | Проект еще не подтвержден или заблокирован модератором. |
| 404 Not Found | Объект не найден | Указанный ID инвойса или проекта не существует в базе. |
| 500 Server Error | Внутренняя ошибка | Сбой блокчейн-ноды TON. Обратитесь в техподдержку @xevopay_support. |