Донаты на YETI3 SDK
yeti3-donations==1.0.0: сборы по сайтам и проектам, ЮKassa и Альфа-Банк через существующий yeti3-acquiring==0.1.2. Библиотека автоматически устанавливает зависимости.
python3 -m venv .venv-donations
source .venv-donations/bin/activate
python -m pip install --index-url https://engine.yeti3.ru/sdk/simple/ yeti3-donations==1.0.0Подключение к ядру
from yeti3_core import Engine
from yeti3_donations import Package, Gateway
# Эти функции предоставляет ваш хост: защищённые настройки админки и кассы.
gateway = Gateway("yookassa", payment_settings, make_receipt)
engine = Engine()
donations = engine.register(Package(
database="donations.sqlite3",
gateway=gateway,
settings=donation_settings,
))
engine.boot()
try:
order = donations.create(
owner="account-42", order_id="donation-0001",
site="example.org", campaign="support",
amount=10000, comment="На развитие проекта",
)
print(order["url"])
finally:
engine.shutdown()Это пример встраивания: payment_settings, donation_settings, make_receipt не заглушки готового приложения, а обязательные функции хоста. Полностью исполняемый пример без реальных списаний: demo.py из документации.
payment_settings() возвращает текущие приватные настройки: enabled, return_url, recipient_revision; для ЮKassa — shop_id, secret, test_mode; для Альфа-Банка — username/password либо token, test_mode. recipient_revision — неизменяемая версия получателя, которую нужно менять при смене банковского получателя. Для проверки старых заказов используйте соответствующие исторические настройки.
donation_settings() возвращает enabled, min_kopecks и max_kopecks. По умолчанию диапазон 100–10000000 копеек. Сумма — целое число копеек, не float. make_receipt(order_id, amount, details) формирует данные чека для выбранного провайдера из разрешённых настроек кассы и данных покупателя. Режим чеков настраивается владельцем; модуль не определяет налоговый статус сбора.
Подтверждение и защита
Обработчик возврата, уведомления провайдера или фоновая задача вызывает:
first_confirmation = donations.reconcile("account-42", "donation-0001")
confirmed_total = donations.total("example.org", "support")Перед зачислением адаптер повторно запрашивает статус у банка и сверяет заказ, сумму и валюту. ЮKassa дополнительно проверяет получателя и тестовый режим. Повторное подтверждение не увеличивает сумму. Входящий webhook сам по себе ничего не зачисляет. Хост проверяет права пользователя, CSRF, лимиты запросов и получает owner из сессии, а не из произвольного поля браузера.
После таймаута регистрации заказ остаётся REGISTERING: повтор create не вызывает повторное списание. Сверьте заказ с банком и передайте подтверждённые remote_id и URL в registered(). Эта функция доступна только доверенному серверному коду.
SQLite хранится в постоянном приватном каталоге. Создавайте экземпляр модуля на поток/процесс с общим файлом SQLite. Продажи токенов, переводы на карту, регулярные платежи и возвраты эта версия не выполняет.
Ресурсы и проверка
Манифест содержит минимальные ресурсы: 256 МиБ доступной RAM, 512 МиБ диска, 1 CPU. Общий контроль ресурсов реализуется ядром SDK на машине установки; старый установленный SDK необходимо обновить для применения нового правила. Эти значения — исходные рекомендации, а не обещание производительности под нагрузкой.
Проверены логика учёта и контракты обоих адаптеров на тестовых ответах. Реальный платёж не выполнялся: нужны настроенные мерчант и касса. Подключение библиотеки не означает автоматическое появление платёжной страницы на каждом сайте.
Цена модуля в каталоге: 200 Φ за 30 дней. Это цена доступа к модулю; комиссия провайдера и поступающие донаты учитываются отдельно.
Документация ЮKassa: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process