Подключение провайдера
Все кассы подключаются в кабинете: раздел Платежи → вкладка «Провайдеры». Настройки хранятся в базе и подхватываются на лету — без рестартов и правки кода. На карточке каждой кассы видно её состояние: тумблер активности, какие ключи уже заполнены, метка «встроен» (модуль в базе) или «drop-in» (карточка есть, модуль подключается отдельно).
Включение кассы
- Раскройте карточку провайдера и впишите ключи из его личного кабинета. Какие именно поля нужны — на странице каждого провайдера (например, у YooKassa это
shop_idиsecret_key, у CryptoBot — одинapi_token). Нажмите «Сохранить». - Нажмите «Тест» — база реально сходит в API провайдера и проверит ключи (см. ниже).
- Для большинства касс пропишите в ЛК провайдера вебхук-URL:
https://ваш-домен/api/v1/payments/<код кассы>Пример для YooKassa: https://ваш-домен/api/v1/payments/yookassa. Telegram Stars и «Вручную / баланс» вебхука не требуют. Подробности — в Вебхуки и безопасность.
- Включите тумблер активности (
is_active). Всё — кнопка оплаты сама появилась в боте и мини-аппе.
Из коробки
По умолчанию активны только «Вручную / баланс» и Telegram Stars — принимать оплату Stars можно сразу после установки, без единого ключа.
Шифрование ключей
Креды касс лежат в базе зашифрованными (Fernet, ключ APP__CRYPT_KEY). Шифруется каждое поле, в названии которого есть key, secret, token или password. Кабинет никогда не отдаёт значения обратно — только список заполненных полей и плейсхолдер ••••••••. Чтобы заменить ключ, впишите новое значение; чтобы удалить — сохраните пустое.
Кнопка «Тест»
«Тест» — не проверка формата полей, а реальная проба API провайдера:
| Провайдер | Что проверяется |
|---|---|
| YooKassa | GET /v3/me — id и статус магазина |
| CryptoBot | getMe + getBalance — имя приложения и баланс USDT |
| Cryptomus / Heleket | подписанный запрос баланса |
| Platega | принимает ли API пару merchant_id/secret |
| WATA | GET /public-key с токеном |
| Robokassa, ЮMoney | проверочного API у них нет — проверяется заполненность ключей, «сверится первым платежом» |
| Telegram Stars, Вручную | внешний API не нужен — всегда ok |
Пейформы
На карточке кассы — чипы форм оплаты: карта, СБП, крипта, Stars, кошельки, баланс (набор зависит от кассы). Клик включает/выключает форму, выбор сохраняется в настройках кассы. У Platega конкретный способ дополнительно задаётся полем payment_method: 2 — СБП QR, 3 — карта, 11 — карточный эквайринг, 13 — крипта.
Кнопки у юзера
Порядок на экране «Способ оплаты» в боте фиксированный: сначала «С баланса» (если включён кошелёк BALANCE_ENABLED), затем Telegram Stars, затем все активные кассы. Текст кнопки кассы — поле «Название» (display_name) на карточке; по умолчанию — имя провайдера. Мини-аппа и веб-витрина получают тот же список активных касс.
Комиссия
Поле «Комиссия %» на карточке — комиссия провайдера. На продажи она не влияет, но участвует в расчёте чистой прибыли в разделе «Платежи»: оборот − комиссии − налог (см. Как устроены платежи).
Настройки раздела «Платежи»
Общие параметры — в разделе «Настройки», группа «Платежи». Применяются без рестарта:
| Настройка | По умолчанию | Что делает |
|---|---|---|
MIN_DEPOSIT_AMOUNT | 5000 коп. (50 ₽) | Минимальное пополнение баланса |
BALANCE_ENABLED | вкл | Кошелёк-баланс: пополнение и оплата с баланса |
STARS_RATE_RUB | 130 коп. за ★ | Курс пересчёта рублёвых цен в Stars |
TAX_RATE_PERCENT | 6 | Ставка налога для расчёта чистой прибыли |
REFUND_ENABLED | выкл | Разрешить возвраты из кабинета |

Карточки «drop-in»
В каталоге кабинета есть карточки Tribute, PayPear и Overpay со статусом «drop-in»: их можно настроить заранее, но заработают они, когда в базе появится их модуль. Добавление провайдера — один файл.
