Skip to main content
Бот поддерживает 14 платёжных провайдеров одновременно. Каждый провайдер включается отдельно, все работают параллельно через единый веб-сервер на порту 8080.

Общая архитектура

Все платежи проходят через баланс: пользователь пополняет баланс любым доступным способом, затем покупает подписку с баланса. Единственное исключение —Telegram Stars и простая подписка (SIMPLE_SUBSCRIPTION_ENABLED), которые могут проводить оплату напрямую, минуя баланс.
Пользователь → Выбор способа оплаты → Провайдер → Webhook → Зачисление на баланс

                                                         Автопокупка (если включена)

                                                         Активация подписки

Приоритет отображения

Способы оплаты отображаются в фиксированном порядке:
  1. Telegram Stars
  2. YooKassa СБП (если YOOKASSA_SBP_ENABLED=true)
  3. YooKassa карты
  4. Tribute
  5. MulenPay
  6. WATA
  7. PayPalych (Pal24)
  8. CryptoBot
  9. Heleket
  10. Platega
  11. CloudPayments
  12. Freekassa
  13. Kassa AI
  14. RioPay
  15. SeverPay
  16. Через поддержку (всегда последний)

Поддерживаемые провайдеры

ПровайдерМетоды оплатыWebhook URLВалюта
Telegram StarsЗвёзды Telegram(встроенный)XTR
YooKassaКарты, СБП/yookassa-webhookRUB
CryptoBotUSDT, TON, BTC, ETH/cryptobot-webhookКрипто
CloudPaymentsКарты, 3D-Secure/cloudpayments-webhookRUB
FreekassaNSPK СБП, карты/freekassa-webhookRUB
Kassa AIСБП, карты, SberPay/kassa-ai-webhookRUB
PayPalych (Pal24)Карты, СБП/pal24-webhookRUB
PlategaКарты, СБП, крипто/platega-webhookRUB
WATAКарты/wata-webhookRUB
HeleketКриптовалюта/heleket-webhookКрипто
MulenPayКарты/mulenpay-webhookRUB
TributeTelegram/tribute-webhookRUB
RioPayКарты/riopay-webhookRUB
SeverPayСБП, карты/severpay-webhookRUB
Все webhook URL доступны на едином сервере бота (порт 8080). Укажите полный путь: https://hooks.domain.com/webhook-path. Для CloudPayments дополнительно доступны суб-роуты /check, /pay, /fail.

Общие настройки платежей

Эти переменные влияют на все платёжные системы.

Описания и шаблоны платежей

# Название сервиса в описании платежа
PAYMENT_SERVICE_NAME=Интернет-сервис

# Описания для разных типов платежей
PAYMENT_BALANCE_DESCRIPTION=Пополнение баланса
PAYMENT_SUBSCRIPTION_DESCRIPTION=Оплата подписки

# Шаблоны формирования описания (переменные: {service_name}, {description})
PAYMENT_BALANCE_TEMPLATE={service_name} - {description}
PAYMENT_SUBSCRIPTION_TEMPLATE={service_name} - {description}

Управление интерфейсом

ПеременнаяТипПо умолчаниюОписание
DISABLE_TOPUP_BUTTONSboolfalseСкрыть кнопки быстрого пополнения
SUPPORT_TOPUP_ENABLEDbooltrueПоказывать кнопку “Через поддержку”
PRICE_ROUNDING_ENABLEDbooltrueОкругление цен (до 50 коп вниз, свыше 50 коп вверх)

Автопроверка платежей

# Автоматическая проверка статуса незавершённых платежей (YooKassa)
PAYMENT_VERIFICATION_AUTO_CHECK_ENABLED=false
PAYMENT_VERIFICATION_AUTO_CHECK_INTERVAL_MINUTES=10

Автопокупка после пополнения

# Автоматически оформить подписку из сохранённой корзины после пополнения баланса
AUTO_PURCHASE_AFTER_TOPUP_ENABLED=false
Подробнее — см. Автопокупка и корзина.

Автооплата (автопродление)

Подробнее — см. Рекуррентные платежи.
ПеременнаяТипПо умолчаниюОписание
ENABLE_AUTOPAYboolfalseГлобальное включение системы автопродления
DEFAULT_AUTOPAY_ENABLEDboolfalseАвтооплата включена у новых пользователей по умолчанию
DEFAULT_AUTOPAY_DAYS_BEFOREint3За сколько дней до окончания подписки списывать
MIN_BALANCE_FOR_AUTOPAY_KOPEKSint10000Минимальный баланс для срабатывания (100 руб)
SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKSint20000Порог баланса для автопродления (200 руб)
AUTOPAY_WARNING_DAYSstr3,1Дни для отправки предупреждений (через запятую)

Telegram Stars

Встроенная платёжная система Telegram. Не требует webhook — платежи обрабатываются через Telegram Bot API.

Настройки

ПеременнаяТипПо умолчаниюОписание
TELEGRAM_STARS_ENABLEDbooltrueВключить оплату звёздами
TELEGRAM_STARS_RATE_RUBfloat1.3Курс: 1 звезда = X рублей
TELEGRAM_STARS_DISPLAY_NAMEstrTelegram StarsОтображаемое название
Telegram Stars — единственный провайдер, включённый по умолчанию. Курс 1.3 означает: 1 звезда = 1.30 руб. Количество звёзд рассчитывается автоматически на основе суммы в рублях.

Округление и нормализация суммы

Количество звёзд рассчитывается из суммы в рублях с помощью стандартного округления (round()):
звёзды = round(сумма_в_рублях / курс)
Например, при курсе 1.79 за звезду и сумме 500₽: round(500 / 1.79) = 279 звёзд. При зачислении сумма нормализуется: на баланс попадает не исходная сумма, а точный эквивалент оплаченных звёзд: звёзды × курс. В примере выше: 279 × 1.79 = 499.41₽, а не 500₽.
Это означает, что пользователь получает ровно столько, сколько стоят оплаченные звёзды. Небольшая разница между запрошенной и зачисленной суммой — следствие округления при конвертации.

Особенности

  • Работает без внешних webhook и API-ключей
  • Поддерживает как пополнение баланса, так и прямую оплату простых подписок
  • Валюта: XTR (Telegram Stars)
  • Минимум: 1 звезда

YooKassa

Самый популярный провайдер для российского рынка. Поддерживает банковские карты, СБП, и фискализацию через НалоGo.

Обязательные настройки

YOOKASSA_ENABLED=true
YOOKASSA_SHOP_ID=123456
YOOKASSA_SECRET_KEY=live_xxxxxxxxxxxxx

Все переменные

ПеременнаяТипПо умолчаниюОписание
YOOKASSA_ENABLEDboolfalseВключить YooKassa
YOOKASSA_SHOP_IDstrОбязательно. ID магазина
YOOKASSA_SECRET_KEYstrОбязательно. Секретный ключ
YOOKASSA_DISPLAY_NAMEstrYooKassaОтображаемое название
YOOKASSA_RETURN_URLstrURL возврата после оплаты (по умолчанию WEBHOOK_URL/payment-success или https://t.me/)
YOOKASSA_DEFAULT_RECEIPT_EMAILstrEmail для отправки чеков (54-ФЗ)
YOOKASSA_VAT_CODEint1Код НДС (1=без НДС, 2=0%, 3=10%, 4=20%)
YOOKASSA_SBP_ENABLEDboolfalseВключить оплату через СБП (отдельная кнопка)
YOOKASSA_PAYMENT_MODEstrfull_paymentРежим оплаты для чеков
YOOKASSA_PAYMENT_SUBJECTstrserviceТип предмета расчёта для чеков
YOOKASSA_WEBHOOK_PATHstr/yookassa-webhookПуть webhook
YOOKASSA_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
YOOKASSA_WEBHOOK_PORTint8082Порт (устаревший, используется 8080)
YOOKASSA_TRUSTED_PROXY_NETWORKSstrДоверенные сети прокси (через запятую)
YOOKASSA_MIN_AMOUNT_KOPEKSint5000Минимальная сумма (50 руб)
YOOKASSA_MAX_AMOUNT_KOPEKSint1000000Максимальная сумма (10 000 руб)
YOOKASSA_QUICK_AMOUNT_SELECTION_ENABLEDboolfalseКнопки быстрого выбора суммы

Webhook

Укажите в кабинете YooKassa: https://hooks.domain.com/yookassa-webhook
Бот проверяет IP-адреса YooKassa и отклоняет запросы с неизвестных адресов. При использовании reverse proxy укажите сети прокси в YOOKASSA_TRUSTED_PROXY_NETWORKS.

Рекуррентные платежи (сохранённые карты)

YooKassa поддерживает сохранение банковских карт для автоматического пополнения баланса при продлении подписки. Подробнее — см. Рекуррентные платежи.
ПеременнаяТипПо умолчаниюОписание
YOOKASSA_RECURRENT_ENABLEDboolfalseВключить сохранение карт и рекуррентные платежи
YOOKASSA_RECURRENT_REQUIREDboolfalseВсегда запрашивать сохранение карты при оплате
YOOKASSA_TEST_MODEboolfalseТестовый режим (принимать тестовые платежи). В проде тестовые платежи отклоняются
При включённом YOOKASSA_RECURRENT_ENABLED:
  • При успешной оплате карта автоматически сохраняется (если пользователь дал согласие или RECURRENT_REQUIRED=true)
  • Сохранённые карты используются для автоматического пополнения баланса при продлении подписки
  • Работает совместно с системой автооплаты (ENABLE_AUTOPAY=true): если у пользователя недостаточно баланса для продления, бот автоматически списывает нужную сумму с сохранённой карты
  • Пользователь может управлять сохранёнными картами (удалять ненужные)
Для работы рекуррентных платежей необходимо одновременно включить YOOKASSA_RECURRENT_ENABLED=true и ENABLE_AUTOPAY=true. Без автооплаты сохранённые карты не будут использоваться автоматически.

Фискализация (НалоGo)

YooKassa поддерживает автоматическую отправку чеков через НалоGo (для самозанятых):
NALOGO_ENABLED=true
NALOGO_INN=123456789012
NALOGO_PASSWORD=your_password
NALOGO_DEVICE_ID=optional_device_id
NALOGO_STORAGE_PATH=./nalogo_tokens.json
ПеременнаяТипПо умолчаниюОписание
NALOGO_ENABLEDboolfalseВключить отправку чеков
NALOGO_INNstrОбязательно. ИНН самозанятого
NALOGO_PASSWORDstrОбязательно. Пароль от ЛК Мой Налог
NALOGO_DEVICE_IDstrID устройства (генерируется автоматически)
NALOGO_STORAGE_PATHstr./nalogo_tokens.jsonПуть хранения токенов
Настройки очереди чеков:
ПеременнаяТипПо умолчаниюОписание
NALOGO_QUEUE_CHECK_INTERVALint300Интервал проверки очереди (секунды)
NALOGO_QUEUE_RECEIPT_DELAYint3Задержка между отправкой чеков (секунды)
NALOGO_QUEUE_MAX_ATTEMPTSint10Максимум попыток отправки чека

CryptoBot

Криптовалютные платежи через CryptoBot.

Обязательные настройки

CRYPTOBOT_ENABLED=true
CRYPTOBOT_API_TOKEN=your_token

Все переменные

ПеременнаяТипПо умолчаниюОписание
CRYPTOBOT_ENABLEDboolfalseВключить CryptoBot
CRYPTOBOT_API_TOKENstrОбязательно. API-токен из @CryptoBot
CRYPTOBOT_DISPLAY_NAMEstrCryptoBotОтображаемое название
CRYPTOBOT_WEBHOOK_SECRETstrСекрет для проверки webhook
CRYPTOBOT_BASE_URLstrhttps://pay.crypt.botБазовый URL API
CRYPTOBOT_TESTNETboolfalseИспользовать тестовую сеть (testnet-pay.crypt.bot)
CRYPTOBOT_WEBHOOK_PATHstr/cryptobot-webhookПуть webhook
CRYPTOBOT_WEBHOOK_PORTint8083Порт (устаревший, используется 8080)
CRYPTOBOT_DEFAULT_ASSETstrUSDTКриптовалюта по умолчанию
CRYPTOBOT_ASSETSstrUSDT,TON,BTC,ETHДоступные криптовалюты (через запятую)
CRYPTOBOT_INVOICE_EXPIRES_HOURSint24Время жизни инвойса (часы)

Тестовый режим

CRYPTOBOT_TESTNET=true
При CRYPTOBOT_TESTNET=true все запросы идут на testnet-pay.crypt.bot. Используйте для тестирования без реальных средств.

Webhook

Укажите в @CryptoBot -> My Apps -> Webhook: https://hooks.domain.com/cryptobot-webhook

CloudPayments

Платежи через виджет CloudPayments с поддержкой 3D-Secure.

Обязательные настройки

CLOUDPAYMENTS_ENABLED=true
CLOUDPAYMENTS_PUBLIC_ID=pk_xxxxxxxxxxxxx
CLOUDPAYMENTS_API_SECRET=your_api_secret

Все переменные

ПеременнаяТипПо умолчаниюОписание
CLOUDPAYMENTS_ENABLEDboolfalseВключить CloudPayments
CLOUDPAYMENTS_PUBLIC_IDstrОбязательно. Public ID магазина
CLOUDPAYMENTS_API_SECRETstrОбязательно. API Secret
CLOUDPAYMENTS_DISPLAY_NAMEstrCloudPaymentsОтображаемое название
CLOUDPAYMENTS_API_URLstrhttps://api.cloudpayments.ruURL API
CLOUDPAYMENTS_WIDGET_URLstrhttps://widget.cloudpayments.ru/showURL виджета оплаты
CLOUDPAYMENTS_DESCRIPTIONstrПополнение балансаОписание платежа
CLOUDPAYMENTS_CURRENCYstrRUBВалюта
CLOUDPAYMENTS_MIN_AMOUNT_KOPEKSint5000Минимальная сумма (50 руб)
CLOUDPAYMENTS_MAX_AMOUNT_KOPEKSint10000000Максимальная сумма (100 000 руб)
CLOUDPAYMENTS_WEBHOOK_PATHstr/cloudpayments-webhookПуть webhook
CLOUDPAYMENTS_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
CLOUDPAYMENTS_WEBHOOK_PORTint8087Порт (устаревший, используется 8080)
CLOUDPAYMENTS_RETURN_URLstrURL возврата после оплаты
CLOUDPAYMENTS_SKINstrminiСтиль виджета: mini, classic, modern
CLOUDPAYMENTS_REQUIRE_EMAILboolfalseТребовать email при оплате
CLOUDPAYMENTS_TEST_MODEboolfalseТестовый режим (без реальных списаний)

Webhook

CloudPayments использует несколько суб-роутов:
ПутьНазначение
{WEBHOOK_PATH}Универсальный обработчик (рекомендуется)
{WEBHOOK_PATH}/checkПроверка перед списанием
{WEBHOOK_PATH}/payУспешная оплата
{WEBHOOK_PATH}/failНеуспешная оплата
В кабинете CloudPayments укажите: https://hooks.domain.com/cloudpayments-webhook

Freekassa

Обязательные настройки

FREEKASSA_ENABLED=true
FREEKASSA_SHOP_ID=12345
FREEKASSA_API_KEY=your_api_key
FREEKASSA_SECRET_WORD_1=secret1
FREEKASSA_SECRET_WORD_2=secret2

Все переменные

ПеременнаяТипПо умолчаниюОписание
FREEKASSA_ENABLEDboolfalseВключить Freekassa
FREEKASSA_SHOP_IDintОбязательно. ID магазина
FREEKASSA_API_KEYstrОбязательно. API-ключ
FREEKASSA_SECRET_WORD_1strОбязательно. Секретное слово 1 (для формы оплаты)
FREEKASSA_SECRET_WORD_2strОбязательно. Секретное слово 2 (для webhook)
FREEKASSA_DISPLAY_NAMEstrFreekassaОтображаемое название
FREEKASSA_CURRENCYstrRUBВалюта
FREEKASSA_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
FREEKASSA_MAX_AMOUNT_KOPEKSint100000000Максимальная сумма (1 000 000 руб)
FREEKASSA_PAYMENT_TIMEOUT_SECONDSint3600Таймаут ожидания оплаты (секунды)
FREEKASSA_WEBHOOK_PATHstr/freekassa-webhookПуть webhook
FREEKASSA_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
FREEKASSA_WEBHOOK_PORTint8088Порт (устаревший, используется 8080)
FREEKASSA_PAYMENT_SYSTEM_IDintСпособ оплаты: 42 = обычный СБП, 44 = NSPK СБП
FREEKASSA_USE_APIboolfalseИспользовать API для создания заказов
SERVER_PUBLIC_IPstrПубличный IP сервера (для Freekassa API, определяется автоматически)

Режимы создания платежей

  • FREEKASSA_USE_API=false — редирект на платёжную форму Freekassa (по умолчанию)
  • FREEKASSA_USE_API=true — создание заказа через API (рекомендуется для NSPK СБП)
# Для NSPK СБП (QR-код, быстрее и надёжнее)
FREEKASSA_USE_API=true
FREEKASSA_PAYMENT_SYSTEM_ID=44

Webhook

В кабинете Freekassa укажите: https://hooks.domain.com/freekassa-webhook

Kassa AI

Отдельная платёжная система (api.fk.life), работает параллельно с Freekassa.

Обязательные настройки

KASSA_AI_ENABLED=true
KASSA_AI_SHOP_ID=12345
KASSA_AI_API_KEY=your_api_key
KASSA_AI_SECRET_WORD_2=secret2

Все переменные

ПеременнаяТипПо умолчаниюОписание
KASSA_AI_ENABLEDboolfalseВключить Kassa AI
KASSA_AI_SHOP_IDintОбязательно. ID магазина
KASSA_AI_API_KEYstrОбязательно. API-ключ
KASSA_AI_SECRET_WORD_2strОбязательно. Секретное слово (для webhook)
KASSA_AI_DISPLAY_NAMEstrKassaAIОтображаемое название
KASSA_AI_CURRENCYstrRUBВалюта
KASSA_AI_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
KASSA_AI_MAX_AMOUNT_KOPEKSint100000000Максимальная сумма (1 000 000 руб)
KASSA_AI_WEBHOOK_PATHstr/kassa-ai-webhookПуть webhook
KASSA_AI_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
KASSA_AI_WEBHOOK_PORTint8089Порт (устаревший, используется 8080)
KASSA_AI_PAYMENT_SYSTEM_IDint44Способ оплаты: 44 = СБП QR, 36 = Карты РФ, 43 = SberPay

Webhook

В кабинете Kassa AI укажите: https://hooks.domain.com/kassa-ai-webhook

PayPalych (Pal24)

Платежи через PayPalych (СБП и банковские карты).

Обязательные настройки

PAL24_ENABLED=true
PAL24_API_TOKEN=your_api_token
PAL24_SHOP_ID=your_shop_id

Все переменные

ПеременнаяТипПо умолчаниюОписание
PAL24_ENABLEDboolfalseВключить PayPalych
PAL24_API_TOKENstrОбязательно. API-токен
PAL24_SHOP_IDstrОбязательно. ID магазина
PAL24_DISPLAY_NAMEstrPAL24Отображаемое название
PAL24_SIGNATURE_TOKENstrТокен для проверки подписи webhook
PAL24_BASE_URLstrhttps://pal24.pro/api/v1/Базовый URL API
PAL24_WEBHOOK_PATHstr/pal24-webhookПуть webhook
PAL24_PAYMENT_DESCRIPTIONstrПополнение балансаОписание платежа
PAL24_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
PAL24_MAX_AMOUNT_KOPEKSint100000000Максимальная сумма (1 000 000 руб)
PAL24_REQUEST_TIMEOUTint30Таймаут запросов к API (секунды)
PAL24_SBP_BUTTON_TEXTstrТекст кнопки СБП (по умолчанию из локализации)
PAL24_CARD_BUTTON_TEXTstrТекст кнопки карты (по умолчанию из локализации)
PAL24_SBP_BUTTON_VISIBLEbooltrueПоказывать кнопку СБП
PAL24_CARD_BUTTON_VISIBLEbooltrueПоказывать кнопку карты

Webhook

В кабинете Pal24 укажите Result URL: https://hooks.domain.com/pal24-webhook

Platega

Поддерживает несколько методов оплаты: СБП, карты, международные карты и криптовалюту.

Обязательные настройки

PLATEGA_ENABLED=true
PLATEGA_MERCHANT_ID=your_merchant_id
PLATEGA_SECRET=your_secret_key

Все переменные

ПеременнаяТипПо умолчаниюОписание
PLATEGA_ENABLEDboolfalseВключить Platega
PLATEGA_MERCHANT_IDstrОбязательно. ID мерчанта
PLATEGA_SECRETstrОбязательно. Секретный ключ
PLATEGA_DISPLAY_NAMEstrPlategaОтображаемое название
PLATEGA_BASE_URLstrhttps://app.platega.ioБазовый URL API
PLATEGA_RETURN_URLstrURL возврата после оплаты
PLATEGA_FAILED_URLstrURL возврата при ошибке
PLATEGA_CURRENCYstrRUBВалюта
PLATEGA_ACTIVE_METHODSstr2,10,11,12,13Коды активных методов оплаты (через запятую)
PLATEGA_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
PLATEGA_MAX_AMOUNT_KOPEKSint100000000Максимальная сумма (1 000 000 руб)
PLATEGA_WEBHOOK_PATHstr/platega-webhookПуть webhook
PLATEGA_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
PLATEGA_WEBHOOK_PORTint8086Порт (устаревший, используется 8080)

Методы оплаты

Коды для PLATEGA_ACTIVE_METHODS:
КодМетод
2СБП (QR)
10Банковские карты (RUB)
11Банковские карты
12Международные карты
13Криптовалюта
# Только СБП и карты RUB
PLATEGA_ACTIVE_METHODS=2,10

Inline-отображение

Если у Platega настроено несколько активных методов (PLATEGA_ACTIVE_METHODS), каждый метод отображается как отдельная кнопка на главном экране бота. Пользователь сразу видит доступные варианты (СБП, карты, крипто) без дополнительных переходов.

Webhook

В кабинете Platega укажите: https://hooks.domain.com/platega-webhook

WATA

Платежи картами через WATA.

Обязательные настройки

WATA_ENABLED=true
WATA_ACCESS_TOKEN=your_access_token
WATA_TERMINAL_PUBLIC_ID=your_terminal_id

Все переменные

ПеременнаяТипПо умолчаниюОписание
WATA_ENABLEDboolfalseВключить WATA
WATA_ACCESS_TOKENstrОбязательно. Токен доступа
WATA_TERMINAL_PUBLIC_IDstrОбязательно. Public ID терминала
WATA_DISPLAY_NAMEstrWataОтображаемое название
WATA_BASE_URLstrhttps://api.wata.pro/api/h2hБазовый URL API
WATA_PAYMENT_DESCRIPTIONstrПополнение балансаОписание платежа
WATA_PAYMENT_TYPEstrOneTimeТип платежа
WATA_SUCCESS_REDIRECT_URLstrURL после успешной оплаты
WATA_FAIL_REDIRECT_URLstrURL после ошибки
WATA_LINK_TTL_MINUTESintВремя жизни ссылки на оплату (минуты)
WATA_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
WATA_MAX_AMOUNT_KOPEKSint100000000Максимальная сумма (1 000 000 руб)
WATA_REQUEST_TIMEOUTint30Таймаут запросов (секунды)
WATA_WEBHOOK_PATHstr/wata-webhookПуть webhook
WATA_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
WATA_WEBHOOK_PORTint8085Порт (устаревший, используется 8080)
WATA_PUBLIC_KEY_URLstrURL публичного ключа для проверки подписи
WATA_PUBLIC_KEY_CACHE_SECONDSint3600Время кэширования публичного ключа (секунды)

Webhook

В кабинете WATA укажите: https://hooks.domain.com/wata-webhook

Heleket

Криптовалютный провайдер с поддержкой USDT и других валют.

Обязательные настройки

HELEKET_ENABLED=true
HELEKET_MERCHANT_ID=your_merchant_id
HELEKET_API_KEY=your_api_key

Все переменные

ПеременнаяТипПо умолчаниюОписание
HELEKET_ENABLEDboolfalseВключить Heleket
HELEKET_MERCHANT_IDstrОбязательно. ID мерчанта
HELEKET_API_KEYstrОбязательно. API-ключ
HELEKET_DISPLAY_NAMEstrHeleket CryptoОтображаемое название
HELEKET_BASE_URLstrhttps://api.heleket.com/v1Базовый URL API
HELEKET_DEFAULT_CURRENCYstrUSDTВалюта по умолчанию
HELEKET_DEFAULT_NETWORKstrСеть по умолчанию
HELEKET_INVOICE_LIFETIMEint3600Время жизни инвойса (секунды, 300-43200)
HELEKET_MARKUP_PERCENTfloat0.0Наценка в процентах
HELEKET_WEBHOOK_PATHstr/heleket-webhookПуть webhook
HELEKET_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
HELEKET_WEBHOOK_PORTint8086Порт (устаревший, используется 8080)
HELEKET_CALLBACK_URLstrURL для callback (по умолчанию WEBHOOK_URL + HELEKET_WEBHOOK_PATH)
HELEKET_RETURN_URLstrURL возврата после оплаты
HELEKET_SUCCESS_URLstrURL успешной оплаты

Webhook

В кабинете Heleket укажите Callback URL: https://hooks.domain.com/heleket-webhook

MulenPay

Обязательные настройки

MULENPAY_ENABLED=true
MULENPAY_API_KEY=your_api_key
MULENPAY_SECRET_KEY=your_secret_key
MULENPAY_SHOP_ID=12345

Все переменные

ПеременнаяТипПо умолчаниюОписание
MULENPAY_ENABLEDboolfalseВключить MulenPay
MULENPAY_API_KEYstrОбязательно. API-ключ
MULENPAY_SECRET_KEYstrОбязательно. Секретный ключ (для HMAC подписи webhook)
MULENPAY_SHOP_IDintОбязательно. ID магазина
MULENPAY_DISPLAY_NAMEstrMulen PayОтображаемое название
MULENPAY_BASE_URLstrhttps://mulenpay.ru/apiБазовый URL API
MULENPAY_WEBHOOK_PATHstr/mulenpay-webhookПуть webhook
MULENPAY_DESCRIPTIONstrПополнение балансаОписание платежа
MULENPAY_LANGUAGEstrruЯзык формы оплаты
MULENPAY_VAT_CODEint0Код НДС
MULENPAY_PAYMENT_SUBJECTint4Тип предмета расчёта
MULENPAY_PAYMENT_MODEint4Режим расчёта
MULENPAY_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
MULENPAY_MAX_AMOUNT_KOPEKSint10000000Максимальная сумма (100 000 руб)
MULENPAY_IFRAME_EXPECTED_ORIGINstrОжидаемый origin iframe (для CORS, определяется из BASE_URL)
MULENPAY_WEBSITE_URLstrURL сайта магазина

Webhook

В кабинете MulenPay укажите: https://hooks.domain.com/mulenpay-webhook Поддерживается проверка подписи через несколько форматов: HMAC-SHA256 (hex, base64), Bearer-токен, кастомные заголовки.

Tribute

Платежи через Telegram-платформу Tribute. Поддерживает как разовые, так и рекуррентные донаты.

Обязательные настройки

TRIBUTE_ENABLED=true
TRIBUTE_API_KEY=your_api_key
TRIBUTE_DONATE_LINK=https://tribute.ru/your_link

Все переменные

ПеременнаяТипПо умолчаниюОписание
TRIBUTE_ENABLEDboolfalseВключить Tribute
TRIBUTE_API_KEYstrОбязательно. API-ключ (для проверки webhook)
TRIBUTE_DONATE_LINKstrСсылка на страницу доната
TRIBUTE_WEBHOOK_PATHstr/tribute-webhookПуть webhook
TRIBUTE_WEBHOOK_HOSTstr0.0.0.0Хост для webhook
TRIBUTE_WEBHOOK_PORTint8081Порт (устаревший, используется 8080)

Особенности

  • Обрабатывает события new_donation и recurrent_donation
  • Поддерживает возврат средств (refund) через API

Webhook

В кабинете Tribute укажите: https://hooks.domain.com/tribute-webhook

RioPay

Платежи картами через RioPay (api.riopay.online).

Обязательные настройки

RIOPAY_ENABLED=true
RIOPAY_API_TOKEN=your_api_token

Все переменные

ПеременнаяТипПо умолчаниюОписание
RIOPAY_ENABLEDboolfalseВключить RioPay
RIOPAY_API_TOKENstrОбязательно. API-токен (заголовок x-api-token)
RIOPAY_WEBHOOK_SECRETstrКлюч для HMAC-SHA512 проверки webhook (по умолчанию = API_TOKEN)
RIOPAY_DISPLAY_NAMEstrRioPayОтображаемое название
RIOPAY_CURRENCYstrRUBВалюта
RIOPAY_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
RIOPAY_MAX_AMOUNT_KOPEKSint100000000Максимальная сумма (1 000 000 руб)
RIOPAY_WEBHOOK_PATHstr/riopay-webhookПуть webhook
RIOPAY_SUCCESS_URLstrURL после успешной оплаты
RIOPAY_FAIL_URLstrURL после ошибки

Webhook

В кабинете RioPay укажите: https://hooks.domain.com/riopay-webhook Подпись webhook проверяется через HMAC-SHA512 (заголовок X-Signature). Если RIOPAY_WEBHOOK_SECRET не указан, используется значение RIOPAY_API_TOKEN.

SeverPay

Платежи через SeverPay (СБП и банковские карты) с HMAC-SHA256 подписью webhook.

Обязательные настройки

SEVERPAY_ENABLED=true
SEVERPAY_MID=12345
SEVERPAY_TOKEN=your_secret_token

Все переменные

ПеременнаяТипПо умолчаниюОписание
SEVERPAY_ENABLEDboolfalseВключить SeverPay
SEVERPAY_MIDintОбязательно. Merchant ID
SEVERPAY_TOKENstrОбязательно. Секретный токен (HMAC-SHA256 подпись)
SEVERPAY_DISPLAY_NAMEstrSeverPayОтображаемое название
SEVERPAY_CURRENCYstrRUBВалюта
SEVERPAY_MIN_AMOUNT_KOPEKSint10000Минимальная сумма (100 руб)
SEVERPAY_MAX_AMOUNT_KOPEKSint10000000Максимальная сумма (100 000 руб)
SEVERPAY_WEBHOOK_PATHstr/severpay-webhookПуть webhook
SEVERPAY_RETURN_URLstrURL возврата после оплаты
SEVERPAY_LIFETIMEint1440Время жизни платежа (минуты, 30–4320)

Webhook

В кабинете SeverPay укажите: https://hooks.domain.com/severpay-webhook Подпись webhook проверяется через HMAC-SHA256. Webhook всегда возвращает HTTP 200 для предотвращения повторных запросов от SeverPay.

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

Все платёжные webhook проходят проверку подлинности:
ПровайдерМетод проверки
YooKassaIP-адреса + trusted proxy networks
CloudPaymentsHMAC-SHA256 подпись (обязательна при настроенном API_SECRET)
CryptoBotHMAC-SHA256 подпись
HeleketHMAC-SHA256 подпись
FreekassaПодпись по секретному слову
Kassa AIПодпись по секретному слову
MulenPayHMAC-SHA256 (hex/base64/bearer)
PlategaHMAC-SHA256 (timing-safe comparison)
WATARSA-подпись с публичным ключом
Pal24Подпись токена + верификация суммы платежа
TributeAPI-ключ
RioPayHMAC-SHA512
SeverPayHMAC-SHA256
Если для провайдера настроен секретный ключ, webhook без подписи будут отклонены. Убедитесь, что секретные ключи в .env совпадают с настройками в кабинете провайдера.

Тестовые платежи

CloudPayments и YooKassa проверяют флаг test_mode в webhook. В production-окружении тестовые платежи автоматически отклоняются, если соответствующий *_TEST_MODE не включён явно.

Активация провайдера

Каждый провайдер считается включённым только при выполнении двух условий:
  1. Флаг *_ENABLED=true
  2. Заполнены все обязательные поля (ключи, токены, ID)
Если включить флаг, но не заполнить обязательные поля, провайдер не активируется и не появится в списке способов оплаты.
ПровайдерУсловия активации
Telegram StarsTELEGRAM_STARS_ENABLED=true (включён по умолчанию)
YooKassaYOOKASSA_ENABLED + SHOP_ID + SECRET_KEY
CryptoBotCRYPTOBOT_ENABLED + API_TOKEN
CloudPaymentsCLOUDPAYMENTS_ENABLED + PUBLIC_ID + API_SECRET
FreekassaFREEKASSA_ENABLED + SHOP_ID + API_KEY + SECRET_WORD_1 + SECRET_WORD_2
Kassa AIKASSA_AI_ENABLED + SHOP_ID + API_KEY + SECRET_WORD_2
PayPalychPAL24_ENABLED + API_TOKEN + SHOP_ID
PlategaPLATEGA_ENABLED + MERCHANT_ID + SECRET
WATAWATA_ENABLED + ACCESS_TOKEN + TERMINAL_PUBLIC_ID
HeleketHELEKET_ENABLED + MERCHANT_ID + API_KEY
MulenPayMULENPAY_ENABLED + API_KEY + SECRET_KEY + SHOP_ID
TributeTRIBUTE_ENABLED (проверяется только флаг)
RioPayRIOPAY_ENABLED + API_TOKEN
SeverPaySEVERPAY_ENABLED + MID + TOKEN

Health-check

Для проверки состояния webhook доступен эндпоинт:
GET /health/payment-webhooks
Возвращает JSON со статусом каждого провайдера:
{
  "status": "ok",
  "tribute_enabled": false,
  "mulenpay_enabled": false,
  "cryptobot_enabled": true,
  "yookassa_enabled": true,
  "wata_enabled": false,
  "heleket_enabled": false,
  "pal24_enabled": false,
  "platega_enabled": false,
  "cloudpayments_enabled": false,
  "freekassa_enabled": false,
  "kassa_ai_enabled": false,
  "riopay_enabled": false,
  "severpay_enabled": false
}

Настройка webhook через reverse proxy

Все webhook обрабатываются единым FastAPI-сервером на порту 8080. Рекомендуемая настройка через Caddy/Nginx:
hooks.domain.com {
    reverse_proxy bot:8080
}
В .env укажите:
WEBHOOK_URL=https://hooks.domain.com
Этот URL используется для формирования callback URL (Heleket, Platega) и return URL (YooKassa, CloudPayments).