Skip to content

6.9.1 — чеки CloudPayments, управление ботом и Aurora

Choose a tag to compare

@VerTusOffical VerTusOffical released this 01 Nov 14:03
· 154 commits to main since this release

6.9.1 — чеки CloudPayments, управление ботом и доработки Aurora

В Aurora добавлены недостающие разделы и действия с подписками. Исправлены массовые операции с тикетами, обработка повторных платёжных уведомлений и ошибки при замене триала. Добавлены чеки CloudPayments, оплата по ссылке из бота и настройки его команд и кнопок. В админке расширено управление webhook Telegram-бота.

CloudPayments и управление ботом

  • Добавлена отправка данных чека в CloudPayments для новых платежей, автоплатежей и возвратов через интеграцию. В админке можно включить чеки, выбрать систему налогообложения, НДС, способ и предмет расчёта, задать название позиции.
  • Для чеков запрашивается email. Данные чека сохраняются с платёжным соглашением, чтобы последующее изменение настроек не меняло налоговые параметры ранее оформленной подписки.
  • Добавлен режим оплаты по ссылке прямо из Telegram-бота, без промежуточной страницы кабинета. Режим включается администратором. Условия автоплатежа показываются в боте и требуют явного согласия; если включены чеки, бот также запрашивает email.
  • Повторный запрос создания ссылки использует тот же заказ. При неизвестном результате создания счёта новый заказ автоматически не создаётся.
  • В боте можно посмотреть автоплатежи и отменить их с подтверждением. При отмене пробного периода бот предупреждает о прекращении доступа. В админке добавлена отмена автоплатежей выбранного клиента.
  • В админке настраиваются видимость, порядок и описания команд в меню Telegram. Скрытая команда исчезает из меню, но её можно вызвать вручную.
  • Для кнопок платного пробного доступа и автоплатежей доступны текст, видимость, порядок, оформление и группировка. В тексте пробного предложения поддерживаются подстановки срока и цены.
  • Доступность пробного предложения проверяется повторно. Создание неоплаченного счёта не расходует пробный период; использованное предложение больше не показывается. Покупка обычного тарифа сама по себе не считается использованием платного триала CloudPayments.
  • Уточнено сообщение при попытке удалить клиента с историей CloudPayments: сначала нужно отменить автоплатежи; история платежей сохраняется.

Для отправки фискальных чеков требуется подключённая CloudKassir. Включение опции не добавляет чеки задним числом и не переносит старые автоплатежи на новые налоговые настройки. Подробности — в инструкции CloudPayments.

Кабинет Aurora

  • Подключён собственный главный экран Aurora: список подписок, срок действия, трафик, устройства, подключение, копирование ссылки и QR-код.
  • Добавлены продление, переименование, автосписание с баланса, перевыпуск ссылки и удаление дополнительных устройств.
  • В оформлении Aurora доступны подарки, дополнительные опции, прокси, Sing-box/AmneziaWG, конструктор тарифа, помощь, подключение, история операций и вывод реферальных средств.
  • В профиле доступны привязка Telegram и email, двухфакторная защита, язык, устройства и платежи. Привязка email учитывает режим работы без SMTP.
  • Добавлен выбор доступных триалов. При покупке понятнее показывается, какая пробная подписка будет заменена.
  • В тарифах доступны дополнительные устройства, покупка второй подписки и предварительный расчёт скидки по промокоду.
  • Исправлены поля ввода в поддержке и промокодах, фокус при вводе, вложенные окна и навигация по профилю. Добавлена отдельная иконка рулетки.
  • Расширены русские и английские переводы.

Оплата и подписки

  • Повторные одновременные уведомления ЮKassa, CryptoPay, LAVA, Lava.top и RollyPay больше не должны повторно зачислять один и тот же платёж. Для пополнений смена статуса и зачисление выполняются в одной транзакции.
  • В общем обработчике оплаты покупка через конструктор тарифа отделена от пополнения баланса.
  • Возврат платежа на внутренний баланс защищён от одновременного повторного выполнения. Обновление статуса, зачисление и обработка реферальных начислений объединены в транзакцию.
  • Уточнены проверки доступного баланса при автопродлении. Добавлена защита от перекрывающихся запусков планировщика в одном процессе.
  • Для повторных списаний Lava.top используется постоянный идентификатор уведомления или платежа. Неоднозначные уведомления сохраняются в журнал webhook для разбора, без повторного зачисления или выдачи доступа.
  • Создание заявки на вывод средств и списание баланса выполняются вместе. Повторное одобрение или отклонение не возвращает деньги второй раз.
  • При замене триала старая подписка сохраняется до создания новой. Ошибка сохранения больше не приводит к удалению уже существующего VPN-профиля клиента.
  • При одновременном погашении подарков повторно подбирается свободный индекс подписки.
  • Исправлен перевыпуск ссылки у старых аккаунтов без отдельной записи основной подписки.
  • Стоимость дополнительных устройств рассчитывается за оставшийся срок, в том числе когда осталось меньше месяца.
  • Возврат со страницы платёжной системы больше не считается подтверждением оплаты: при наличии ID открывается экран ожидания результата.
  • После успешной оплаты балансом окно оплаты закрывается.
  • В Telegram Mini App исправлено открытие платёжных страниц во внешнем браузере. Автообновление PWA не перезагружает страницу возврата с оплаты.
  • При недоступности Remnawave кабинет отмечает данные как сохранённые, а не объявляет подписку истёкшей только из-за ошибки запроса.

Тикеты

  • Исправлено двойное переключение чекбокса при выборе тикета.
  • После массового изменения обновляются и список, и открытая карточка тикета.
  • Массовый ответ с включённым автозакрытием корректно обрабатывает JSON и multipart-запросы.
  • Ответ без автозакрытия не открывает заново уже закрытые тикеты.
  • Повторное закрытие сохраняет прежнюю дату закрытия и срок хранения. Сообщение об операции показывает фактическое число изменений.

Исправляет #256.

Telegram-бот: webhook и очередь

  • В настройках различаются активный режим, несохранённые изменения и неподтверждённое состояние процесса.
  • Добавлены генерация, показ и копирование секрета webhook, сброс черновика и подстановка адреса текущей панели.
  • Проверка статуса показывает время проверки и количество ожидающих обновлений Telegram.
  • Очередь можно очистить отдельной кнопкой или при переходе на Long Polling. Операция требует подтверждения внутри панели.
  • Очистка учитывает фактический режим процесса бота. Если его нельзя определить, операция останавливается, не удаляя рабочий webhook.
  • Ошибка Telegram при очистке возвращается в интерфейс. Флажок очистки сбрасывается после закрытия диалога.

Очистка удаляет ожидающие обновления Telegram; используйте её только если эти события больше не нужно обрабатывать.

Рулетка и письма

  • Для ежедневного сброса рулетки часовой пояс по умолчанию — Europe/Moscow. В админке добавлена кнопка «Москва» и проверка введённого пояса.
  • Уже сохранённый UTC или другой пояс не меняется автоматически. Для UTC показывается подсказка: сброс в 00:00 UTC соответствует 03:00 МСК.
  • Ответы API рулетки запрещают кеширование, чтобы таймер не оставался устаревшим после полуночи.
  • Исправлена устаревшая тема письма подтверждения email с незаполненным шаблоном кода.

Обновление

Перед обновлением создайте и скачайте резервную копию. Откройте Настройки → Обновления, проверьте наличие версии 6.9.1 и запустите обновление. Дождитесь сообщения об успешной установке, затем проверьте номер версии, вход в кабинет, подписки и /start в боте. Подробный порядок — в инструкции.

В этой версии добавлена миграция 20261101120000_cloudpayments_receipts: необязательное поле с данными чека в соглашениях CloudPayments. Штатное обновление применяет её автоматически; существующие соглашения сохраняются. Если установлена более ранняя версия, также применяются миграции предыдущих выпусков.

Проверены сборки API, бота и frontend, регрессионные тесты платежей и подписок, массовые операции тикетов на отдельной PostgreSQL и интерфейсы на мобильной и настольной ширине. Реальные списания у платёжных провайдеров не проводились.

Изменения: #257, #258, #259, #260, #261 и исправления по итогам проверки.

Все изменения с 6.9.0