14 KiB
Платежи
Платежные методы включаются через .env или админ-панель, если параметр добавлен в allowlist настроек. В Mini App и Telegram-сценариях включённые методы отображаются как кнопки оплаты.
Общий порядок настройки
- Включите нужный провайдер.
- Заполните публичные параметры, секреты и URL возврата.
- Настройте webhook URL у провайдера, если он используется.
- Проверьте порядок методов в
PAYMENT_METHODS_ORDER. - Проверьте подписи и иконки кнопок оплаты.
- Выполните тестовый платеж.
- Проверьте логи
backend.
Tip
URL вебхука отображается вверху раздела каждого провайдера в админ-панели.
Общие ссылки
- Справочник
.env— все ключи платежных провайдеров. - Админ-панель — UI-настройки платежей.
- Тарифы — цены, Telegram Stars и сценарии покупки.
- Логи — проверка webhook и создания платежных ссылок.
Webhook URL провайдеров
Все платежные webhook URL строятся от WEBHOOK_BASE_URL — публичного HTTPS-адреса backend/webhook-домена.
Это должен быть домен, который проксируется на backend-сервер вебхуков (backend:8080), а не frontend/Mini App домен из SUBSCRIPTION_MINI_APP_URL.
Если WEBHOOK_BASE_URL=https://bot.example.com, полный webhook URL получается как https://bot.example.com + путь из таблицы.
| Провайдер | URL |
|---|---|
| YooKassa | WEBHOOK_BASE_URL + /webhook/yookassa |
| FreeKassa | WEBHOOK_BASE_URL + /webhook/freekassa |
| Platega | WEBHOOK_BASE_URL + /webhook/platega |
| SeverPay | WEBHOOK_BASE_URL + /webhook/severpay |
| Wata | WEBHOOK_BASE_URL + /webhook/wata |
| CryptoPay | WEBHOOK_BASE_URL + /webhook/cryptopay |
| Heleket | WEBHOOK_BASE_URL + /webhook/heleket |
| PayKilla | WEBHOOK_BASE_URL + /webhook/paykilla |
| Telegram Stars | WEBHOOK_BASE_URL + /tg/webhook |
После настройки сделайте тестовый платеж и проверьте, что в логах backend виден входящий POST на нужный путь.
Если провайдер сообщает, что адрес недоступен, проверьте DNS, HTTPS и reverse proxy для WEBHOOK_BASE_URL. Путь должен начинаться с /webhook/... без /api, /auth и frontend-домена.
YooKassa
YooKassa используется для рублевых оплат. Провайдер также может участвовать в сценариях автопродления period-подписок.
Настройка
- Включите
YOOKASSA_ENABLED. - Заполните
YOOKASSA_SHOP_ID,YOOKASSA_SECRET_KEYиYOOKASSA_RETURN_URL. - Скопируйте URL вебхука из админ-панели и укажите его в кабинете YooKassa.
Справочник
FreeKassa
FreeKassa подключается как отдельный платежный метод. Входящие webhook-события обрабатываются через backend.
Настройка
- Включите
FREEKASSA_ENABLED. - Заполните
FREEKASSA_MERCHANT_ID,FREEKASSA_FIRST_SECRET,FREEKASSA_SECOND_SECRETиFREEKASSA_API_KEY. - Проверьте настройки подписи.
- Скопируйте URL вебхука из админ-панели и укажите его в кабинете FreeKassa.
- При необходимости заполните
FREEKASSA_TRUSTED_IPS.
Справочник
Platega
Platega подключается как отдельный платежный провайдер. Внутри Minishop он может создавать несколько кнопок: основную legacy-кнопку, СБП/карту и crypto-кнопку.
Настройка
- Включите
PLATEGA_ENABLED. - Укажите
PLATEGA_BASE_URL,PLATEGA_MERCHANT_IDиPLATEGA_SECRET. - Скопируйте URL вебхука из админ-панели и укажите его в кабинете Platega.
- Проверьте
PLATEGA_RETURN_URLиPLATEGA_FAILED_URL. - При необходимости укажите
PLATEGA_PAYMENT_METHOD.
Дополнительные кнопки
PLATEGA_SBP_ENABLED— отдельная кнопка СБП/карта.PLATEGA_SBP_METHOD— ID метода для СБП/карты.PLATEGA_CRYPTO_ENABLED— отдельная crypto-кнопка Platega.PLATEGA_CRYPTO_METHOD— ID метода для crypto-кнопки.PAYMENT_PLATEGA_SBP_*— текст и иконка кнопки СБП/карта.PAYMENT_PLATEGA_CRYPTO_*— текст и иконка crypto-кнопки.
Справочник
SeverPay
SeverPay подключается как отдельный платежный метод с собственным MID, token и сроком жизни платежной ссылки.
Настройка
- Включите
SEVERPAY_ENABLED. - Укажите
SEVERPAY_BASE_URL. - Заполните
SEVERPAY_MIDиSEVERPAY_TOKEN. - Проверьте
SEVERPAY_RETURN_URL. - Скопируйте URL вебхука из админ-панели и укажите его в кабинете SeverPay.
- При необходимости задайте
SEVERPAY_LIFETIME_MINUTES.
Справочник
Wata
Wata подключается как отдельный провайдер с bearer token, платежными ссылками и опциональной проверкой подписи webhook.
Настройка
- Включите
WATA_ENABLED. - Укажите
WATA_BASE_URLиWATA_API_TOKEN. - Проверьте
WATA_RETURN_URLиWATA_FAILED_URL. - Настройте
WATA_LINK_TTL_MINUTES. - Скопируйте URL вебхука из админ-панели и укажите его в кабинете Wata.
- При необходимости включите
WATA_WEBHOOK_VERIFY_SIGNATURE. - Если используется проверка подписи, задайте
WATA_PUBLIC_KEY. - Для IP-фильтрации заполните
WATA_TRUSTED_IPS.
Ограничения
WATA_LINK_TTL_MINUTESдолжен быть от15до43200.
Справочник
CryptoPay
CryptoPay используется для криптовалютных платежей через отдельный токен и сеть Crypto Bot API.
Настройка
- Включите
CRYPTOPAY_ENABLED. - Укажите
CRYPTOPAY_TOKEN. - Выберите
CRYPTOPAY_NETWORK:mainnetилиtestnet. - Задайте
CRYPTOPAY_CURRENCY_TYPE:fiatилиcrypto. - Проверьте
CRYPTOPAY_ASSET, напримерRUB,USDTилиBTC. - Скопируйте URL вебхука из админ-панели и укажите его в CryptoPay.
Проверка
- Testnet-токен должен использоваться только с
testnet. - Mainnet-токен должен использоваться только с
mainnet. - Если сумма или asset выглядят неверно, проверьте сочетание
CRYPTOPAY_CURRENCY_TYPEиCRYPTOPAY_ASSET.
Справочник
Heleket
Heleket используется для крипто-инвойсов с merchant ID, ключом платежного API, валютой инвойса и настройками проверки webhook.
Настройка
- Включите
HELEKET_ENABLED. - Укажите
HELEKET_BASE_URL,HELEKET_MERCHANT_IDиHELEKET_API_KEY. - Настройте
HELEKET_CURRENCY. - При необходимости задайте
HELEKET_TO_CURRENCYиHELEKET_NETWORK. - Проверьте
HELEKET_RETURN_URLиHELEKET_SUCCESS_URL. - Настройте
HELEKET_LIFETIME_SECONDS. - Скопируйте URL вебхука из админ-панели и укажите его в кабинете Heleket.
- При необходимости включите
HELEKET_VERIFY_WEBHOOK_SIGNATURE. - Для IP-фильтрации заполните
HELEKET_TRUSTED_IPS.
Ограничения
HELEKET_LIFETIME_SECONDSдолжен быть от300до43200.
Справочник
PayKilla
PayKilla используется для крипто-инвойсов V2 через hosted checkout https://gopay.paykilla.com/{invoice_id}.
API-запросы подписываются HMAC-SHA256. Webhook проверяется по заголовку X-API-SIGN и raw body.
Особенности
- PayKilla строго валидирует текстовые поля invoice.
- В
purposeиdescriptionMinishop отправляет простой английский текст<WEBAPP_TITLE> payment <id>. - Локализованное описание платежа остается только внутри Minishop.
- ASCII-safe sanitizer допускает ASCII-буквы, цифры, пробелы,
_,.,,.
Валюта invoice
Minishop создает invoice в валюте, которую PayKilla принимает в поле currency.
Если валюта тарифа входит в PAYKILLA_INVOICE_CURRENCIES, сумма отправляется как есть.
Если валюта тарифа не входит в список, сумма конвертируется в PAYKILLA_CURRENCY. По умолчанию рублевые тарифы конвертируются в USD через ExchangeRate-API с кэшем PAYKILLA_EXCHANGE_RATE_CACHE_SECONDS.
Payload invoice
Payload создания invoice содержит обязательные поля type, purpose, currency, totalPrice и paymentCurrencies.
Дополнительно отправляются clientOrderId, description, expiredAt, userPaysServiceFee и userPaysNetworkFee.
Redirect URLs в PayKilla не отправляются. Завершение платежа обрабатывается через webhook.
API key
- В PayKilla Dashboard откройте Settings -> API keys.
- Создайте ключ типа HMAC.
- Для приема оплат включите permission INVOICE.
- Permission WITHDRAWAL не нужен для Minishop-платежей.
- Сохраните
publicKeyвPAYKILLA_API_KEY. - Сохраните
secretKeyвPAYKILLA_SECRET_KEY.
Webhook
- В PayKilla Dashboard откройте Settings -> Webhooks.
- Скопируйте URL вебхука из админ-панели и укажите его в PayKilla.
- Включите минимальные события:
INVOICE_PAID,INVOICE_EXPIRED. - Для production также включите
PAYMENT_COMPLETED,PAYMENT_FAILED,PAYMENT_OVERPAID,PAYMENT_UNDERPAID,PAYMENT_PARTIAL,COMPLIANCE_FAILED. - Оставьте
PAYKILLA_VERIFY_WEBHOOK_SIGNATURE=True.
Настройка
- Включите
PAYKILLA_ENABLED. - Укажите
PAYKILLA_API_KEYиPAYKILLA_SECRET_KEY. - Оставьте
PAYKILLA_CURRENCY=USD, если PayKilla не принимает валюту тарифов как invoice currency. - В
PAYKILLA_INVOICE_CURRENCIESукажите валюты invoice, напримерUSD,EUR. - В
PAYKILLA_PAYMENT_CURRENCIESначните сUSDTTRC.
Справочник
Telegram Stars
Telegram Stars используются напрямую и поддерживаются в legacy-ценах и JSON-каталоге тарифов.
Где используются
- Цены period-подписок.
- Пакеты трафика.
- Premium-докупки.
- HWID-докупки, если они включены в каталоге тарифов.
Настройка
- Включите
STARS_ENABLED. - Проверьте Stars-цены в legacy-настройках или JSON-каталоге.
- Убедитесь, что цена округляется до целого количества Stars.
- Проверьте сценарии смены тарифа.
Ограничения
- Отдельный платежный webhook не нужен.
- Stars-события приходят через webhook Telegram-бота:
WEBHOOK_BASE_URL+/tg/webhook. - XTR/Stars-докупки не конвертируются без явно заданного курса.