Урок 1.2 — Установка и настройка
Научимся устанавливать aiosend, настраивать окружение, получать API-токен и проверять подключение к Crypto Pay.
Прежде чем писать код, нужно подготовить окружение. В этом уроке мы установим Python (если ещё не установлен), установим библиотеку aiosend несколькими способами, получим API-токен от @CryptoBot и @CryptoTestnetBot, разберёмся с MAINNET и TESTNET, настроим .env-файл для хранения токена и проверим, что всё работает.
Проверка версии Python
aiosend требует Python 3.10 или выше (на момент написания курса — версия 3.0.x поддерживает Python 3.10+). Это связано с использованием современных возможностей языка: литеральные типы (Literal), синтаксис Union с | (PEP 604), match/case (PEP 634) и другие фичи, доступные только с Python 3.10+.
Проверь свою версию Python:
python --version
# или
python3 --version
# или
python3.12 --version
Если версия меньше 3.10, нужно обновить Python. Вот способы:
💡 Как обновить Python
macOS: brew install python@3.12 (через Homebrew)
Ubuntu/Debian: sudo apt install python3.12
Windows: Скачай установщик с python.org/downloads
Любая ОС: Используй pyenv для управления версиями
⚠️ Важно: Python 2 vs Python 3
На некоторых системах (особенно macOS и Linux) команда python может указывать на Python 2 (устаревшая версия), а python3 — на Python 3. Если у тебя python --version показывает 2.x, используй python3. aiosend работает ТОЛЬКО с Python 3.
Установка aiosend через pip
Самый простой и распространённый способ установки — через pip (стандартный менеджер пакетов Python). Рекомендуется устанавливать в виртуальное окружение:
# 1. Создаём директорию проекта
mkdir aiosend-course && cd aiosend-course
# 2. Создаём виртуальное окружение
python3 -m venv venv
# 3. Активируем виртуальное окружение
# macOS/Linux:
source venv/bin/activate
# Windows:
# venv\Scripts\activate
# 4. Устанавливаем aiosend
pip install -U aiosend
Флаг -U (--upgrade) означает «обновить до последней версии, если уже установлено». Это хорошая практика — всегда устанавливать с -U, чтобы получить последнюю версию.
aiosend потянет за собой зависимости:
📋 Зависимости aiosend:
- aiohttp >=3.9.0 — асинхронный HTTP-клиент для отправки запросов к API
- certifi >=2023.7.22 — сертификаты SSL/TLS для безопасных HTTPS-соединений
- magic-filter >=1.0.12 — мощные фильтры для событий (из aiogram 3.x)
- pydantic >=2.4.1, <2.13 — валидация данных и сериализация/десериализация моделей
💡 Совет: используй requirements.txt
Создай в корне проекта файл requirements.txt со списком зависимостей. Это стандартный способ управлять зависимостями в Python-проектах. Содержимое файла:
aiosend>=3.0.0 python-dotenv>=1.0.0
Установка через requirements.txt: pip install -r requirements.txt
Альтернативные способы установки
Помимо классического pip, aiosend можно установить через современные менеджеры пакетов. Выбери тот, который используешь в повседневной работе:
📦 uv — современный быстрый менеджер
uv add aiosend — невероятно быстрый (написан на Rust), автоматически создаёт виртуальное окружение и lock-файл.
🎵 Poetry — декларативное управление зависимостями
poetry add aiosend — автоматически обновляет pyproject.toml и poetry.lock. Поддерживает группы зависимостей (dev, main).
📦 PDM — современный менеджер с PEP 582
pdm add aiosend — поддерживает стандарт PEP 582 (установка пакетов в __pypackages__).
🌍 pipx — изоляция для CLI-инструментов
pipx install aiosend — устанавливает пакет в изолированное окружение и делает его исполняемые файлы доступными глобально.
🌾 Rye — управление проектами от создателей ruff
rye add aiosend — единое решение для управления Python, зависимостями и сборкой (от Astral, создателей ruff и uv).
🔬 Conda — менеджер для data science
conda install aiosend — если ты используешь Anaconda/Miniconda для управления окружениями.
🧪 Pipenv — официальный инструмент от PyPA
pipenv install aiosend — комбинирует pip и virtualenv в одном инструменте. Создаёт Pipfile и Pipfile.lock.
| Инструмент | Команда | Когда использовать |
|---|---|---|
| pip | pip install -U aiosend |
Стандартный выбор, подходит всем |
| uv | uv add aiosend |
Хочешь максимальную скорость установки |
| Poetry | poetry add aiosend |
Декларативное управление проектом |
| PDM | pdm add aiosend |
Используешь PEP 582 / __pypackages__ |
| pipx | pipx install aiosend |
Изоляция CLI-инструментов |
| Rye | rye add aiosend |
Универсальное решение от Astral |
| Conda | conda install aiosend |
Data Science / Anaconda ecosystem |
| Pipenv | pipenv install aiosend |
Pipfile + Pipfile.lock workflow |
Проверка установки
После установки нужно убедиться, что всё прошло успешно. Есть несколько способов:
pip list | grep aiosend
# Ожидаемый вывод:
# aiosend 3.0.6
python -c "import aiosend; print(aiosend.__version__)"
# Ожидаемый вывод: 3.0.6
💡 Что делать, если import не работает?
1. Проверь, активировано ли виртуальное окружение (должно быть (venv) в начале строки терминала).
2. Проверь версию Python: python --version (должно быть 3.10+).
3. Переустанови: pip install --force-reinstall aiosend.
4. Проверь, не установлен ли aiosend в другом окружении: which python покажет путь к текущему интерпретатору.
Успешный импорт aiosend без ошибок означает, что библиотека установлена корректно и все зависимости разрешены.
Получение API-токена
Для работы с Crypto Pay API нужен токен — уникальный ключ, который идентифицирует твоё приложение. Токен получается в два шага: сначала создаётся приложение в @CryptoBot, затем из него берётся токен.
Токен выглядит так: 1234:ABCDefghijklmnopQRSTuvwxyz1234567890. Он состоит из двух частей, разделённых двоеточием: числовой ID приложения и секретная строка.
Пошаговая инструкция для TESTNET (рекомендуется):
Найди в Telegram бота @CryptoTestnetBot и нажми Start. Это тестовая версия @CryptoBot, где используются тестовые монеты (Jetcoin, test-USDT и т.д.). Они ничего не стоят, можно экспериментировать без риска.
Отправь боту команду /crypto_pay или нажми на соответствующую кнопку в меню. Ты попадёшь в раздел управления Crypto Pay API.
Нажми «My Apps» (или «Мои приложения») → «Create App» (или «Создать приложение»). Придумай название, например «MyTestApp» или «aiosend_course_test».
Внутри приложения ты увидишь раздел «API Token». Нажми «Copy» и сохрани токен в надёжном месте (мы будем хранить его в .env-файле).
Для MAINNET (когда будешь готов к реальным платежам):
Процедура точно такая же, но в боте @CryptoBot (или @send). Внимание: в MAINNET используются реальные средства, поэтому не торопись туда переносить код — сначала всё протестируй в TESTNET.
⚠️ Отличия токенов MAINNET и TESTNET
Токены MAINNET обычно начинаются с 1234: (реальный ID приложения). Токены TESTNET могут иметь другой префикс. aiosend автоматически определяет сеть по токену, но на всякий случай запомни: MAINNET URL — https://pay.crypt.bot/api/, TESTNET URL — https://testnet-pay.crypt.bot/api/.
MAINNET vs TESTNET: подробное сравнение
Crypto Pay API существует в двух независимых сетях. Понимание разницы между ними — ключ к безопасной разработке:
| Характеристика | MAINNET | TESTNET |
|---|---|---|
| Бот | @CryptoBot (или @send) | @CryptoTestnetBot |
| URL API | pay.crypt.bot/api/ | testnet-pay.crypt.bot/api/ |
| Средства | Реальные (USDT, TON, BTC, ETH...) | Тестовые (JET, test-USDT...) |
| Риск | Потеря реальных денег при ошибке | Нулевой (все монеты — тестовые) |
| Для кого | Production (реальные пользователи) | Разработка, отладка, тестирование |
| Активы | USDT, TON, BTC, ETH, LTC, BNB, TRX, USDC | Все основные + JET (тестовый актив) |
| Комиссии | Реальные комиссии сервиса | Нет (тестовый режим) |
| Лимиты | Стандартные лимиты API | Повышены лимиты (можно тестировать) |
💡 Как получить тестовые монеты (JET)
В @CryptoTestnetBot отправь команду /faucet или нажми на кнопку «Get coins». Тебе выдадут некоторое количество JET (тестовый аналог TON) для экспериментов. Также доступны другие тестовые активы.
⚠️ Частая ошибка: перепутать токены
Разработчики часто ошибаются, вставляя токен MAINNET в тестовый код или наоборот. aiosend пытается определить сеть автоматически, но будь внимателен. Рекомендуется создавать отдельное приложение для MAINNET и отдельное для TESTNET с разными названиями.
Настройка безопасности приложения
После создания приложения в @CryptoTestnetBot (или @CryptoBot) важно настроить разрешения для методов. По умолчанию некоторые методы отключены по соображениям безопасности.
В настройках приложения (My Apps → выбери приложение → Security) ты увидишь следующие опции:
✅ Checks (Чеки)
Включи эту опцию, если планируешь создавать чеки (createCheck). По умолчанию выключено. Без включения метод create_check() будет возвращать ошибку.
✅ Transfers (Переводы)
Включи для возможности отправлять средства пользователям (transfer). По умолчанию выключено. Если попытаешься вызвать transfer с выключенной опцией — получишь ошибку от API.
✅ Webhooks (Вебхуки)
Включи, если планируешь получать уведомления об оплатах через вебхуки. Для этого также потребуется публичный HTTPS-сервер.
✅ Allow anonymous (Анонимные платежи)
По умолчанию пользователи могут платить анонимно. Можно отключить, если хочешь видеть, кто именно оплатил инвойс. Отключается в настройках приложения индивидуально для каждого инвойса.
Для учебных целей рекомендую включить все три опции (Checks, Transfers, Webhooks) — это позволит тебе экспериментировать со всеми методами библиотеки без ограничений.
⚠️ Как включить методы в настройках
🏝 Crypto Pay → My Apps → Выбери приложение → Security
Поставь галочки напротив:
— Checks (разрешить создание чеков)
— Transfers (разрешить переводы)
— Webhooks (разрешить вебхуки)
После включения настроек может потребоваться до 1 минуты для вступления в силу.
Структура .env файла
Хранить токен прямо в коде — плохая практика. Если ты закоммитишь токен в Git или опубликуешь код на GitHub, любой сможет им воспользоваться. Правильный подход — использовать переменные окружения или .env-файл.
Библиотека python-dotenv загружает переменные из .env-файла в os.environ. Это стандартный способ хранения секретов в Python-проектах.
# Crypto Pay API токен для TESTNET
CRYPTO_PAY_TOKEN=1234:ABCDefghijklmnopQRSTuvwxyz1234567890
# Опционально: сеть (aiosend определяет автоматически, но можно принудительно)
# CRYPTO_PAY_NETWORK=TESTNET
# Опционально: другие настройки
# DEBUG=True
Важно: никогда не коммить .env-файл в Git! Добавь его в .gitignore:
# .gitignore
.env
.env.local
venv/
__pycache__/
*.pyc
Установка python-dotenv:
pip install python-dotenv
Пример использования python-dotenv с aiosend:
import os
from dotenv import load_dotenv
from aiosend import CryptoPay
# Загружаем переменные из .env файла
load_dotenv()
# Получаем токен из переменной окружения
token = os.getenv("CRYPTO_PAY_TOKEN")
if not token:
raise ValueError("Токен не найден! Проверь .env файл.")
# Создаём клиента
cp = CryptoPay(token=token)
# Всё готово к работе!
print(f"Токен загружен: {token[:8]}...")
Проверка подключения
Финальный шаг — проверить, что всё настроено правильно. Есть два способа: быстрая проверка через терминал (одна строка) и полноценный скрипт.
Способ 1: Быстрая проверка (однострочник):
# Просто импортируем библиотеку
python -c "import aiosend; print('aiosend', aiosend.__version__, '- OK')"
# Проверяем с токеном (замени на свой)
python -c "from aiosend import CryptoPay; cp = CryptoPay(token='ТВОЙ_ТОКЕН'); app = cp.sync.get_me(); print('App:', app.name, '| ID:', app.app_id)"
Способ 2: Полноценный скрипт:
import os
from dotenv import load_dotenv
from aiosend import CryptoPay
from aiosend.errors import APIError, CryptoPayError
# Загружаем .env
load_dotenv()
# Получаем токен
token = os.getenv("CRYPTO_PAY_TOKEN")
if not token:
print("❌ Ошибка: CRYPTO_PAY_TOKEN не найден в .env файле!")
print("Создай файл .env и добавь строку: CRYPTO_PAY_TOKEN=твой_токен")
exit(1)
print(f"🔑 Токен: {token[:10]}...{token[-5:]}")
print()
try:
# Пробуем подключиться (синхронно)
cp = CryptoPay(token=token)
app = cp.sync.get_me()
print("✅ Подключение успешно!")
print(f" Имя приложения: {app.name}")
print(f" ID приложения: {app.app_id}")
print(f" Платёжный бот: @{app.payment_processing_bot_username}")
except APIError as e:
print(f"❌ Ошибка API (код {e.code}): {e.name}")
except CryptoPayError as e:
print(f"❌ Ошибка aiosend: {e}")
except Exception as e:
print(f"❌ Неожиданная ошибка: {e}")
💡 Что означает успешный вывод?
App name — название, которое ты указал при создании приложения. App ID — числовой идентификатор. Payment processing bot username — юзернейм бота, через который пользователи будут оплачивать инвойсы (для MAINNET это @CryptoBot, для TESTNET — @CryptoTestnetBot).
⚠️ Возможные проблемы при проверке
❌ API Error 401: Неверный токен. Проверь, что скопировал токен полностью, без лишних пробелов и кавычек.
❌ CryptoPayError: Ошибка библиотеки. Проверь версию aiosend (pip install -U aiosend).
❌ ConnectionError: Нет доступа к интернету или блокируется API. Проверь подключение к сети.
❌ ModuleNotFoundError: aiosend не установлен. Выполни pip install aiosend.
Структура проекта для курса
Рекомендую организовать проекты по урокам в единой структуре. Это поможет не запутаться в файлах:
aiosend-course/
├── module-01/ # Модуль 1: Введение
│ ├── lesson-1.1/ # Урок 1.1
│ ├── lesson-1.2/ # Урок 1.2
│ │ ├── .env # Токен (НЕ КОММИТИТЬ!)
│ │ ├── .gitignore # gitignore
│ │ ├── check_connection.py # Скрипт проверки
│ │ ├── main.py # Основной скрипт
│ │ └── requirements.txt # Зависимости
│ └── lesson-1.3/ # Урок 1.3
├── module-02/ # Модуль 2: Инвойсы
├── module-03/ # Модуль 3: Чеки
├── ...
├── venv/ # Виртуальное окружение (не коммитить)
├── .gitignore # Общий .gitignore
└── README.md # Описание проекта (опционально)
Для каждого урока можно создавать отдельную папку со своими файлами. Это позволит изолировать эксперименты и не сломать предыдущие работающие примеры.
💡 Совет: requirements.txt для каждого урока
В каждом уроке могут быть разные зависимости. Создавай отдельный requirements.txt или используй общий для всего курса. Главное — не забыть активировать виртуальное окружение перед работой.
Чек-лист: всё готово к работе
Пройди по этому чек-листу, чтобы убедиться, что всё настроено правильно:
python3 --version)
python3 -m venv venv)
source venv/bin/activate)
pip install -U aiosend)
pip install python-dotenv)
CRYPTO_PAY_TOKEN=...)
python check_connection.py — успешно
Что важно запомнить
pip install -U aiosend. Есть 8 альтернативных способов (uv, poetry, pdm, pipx, rye, conda, pipenv).python -c "from aiosend import CryptoPay; ..." или с помощью скрипта check_connection.py.Практическая задача
Задание: Установить aiosend, получить токен, проверить подключение
Выполни следующие шаги и убедись, что всё работает:
- Проверь версию Python:
python3 --version. Если < 3.10 — обнови. - Создай директорию
aiosend-course/module-01/lesson-1.2/. - Создай виртуальное окружение и активируй его.
- Установи aiosend и python-dotenv через pip.
- Открой @CryptoTestnetBot в Telegram, создай приложение, скопируй токен.
- Включи Checks, Transfers, Webhooks в настройках безопасности приложения.
- Создай файл
.envс токеном:CRYPTO_PAY_TOKEN=твой_токен. - Создай файл
.gitignoreи добавь в него.env,venv/,__pycache__/. - Создай скрипт
check_connection.py(как в уроке) и запусти его. - Убедись, что скрипт выводит информацию о приложении без ошибок.
Если что-то пошло не так — вернись к соответствующим разделам урока. Если всё получилось — ты готов к следующему уроку!
Урок 1.2: Установка и настройка
9 вопросов