Как PDP Mobile оплачивает коммунальные через карты и СБП
В PDP Mobile добавили два сценария оплаты коммунальных: карты через redirect и СБП через QR/deep link. Отдельные TTL закрывают просроченные ссылки.

На экране оплаты PDP Mobile рядом встали две кнопки: карта и СБП. Для коммунальных платежей это оказалось обязательным условием, а не косметикой: молодая аудитория чаще выбирает СБП, старшая — банковские карты.
Было: пользователь доходил до оплаты и мог упереться в способ, который ему неудобен. Для одних привычнее открыть банковское приложение по deep link или QR-коду. Другие ожидают стандартный карточный сценарий с redirect на платёжную страницу, где работают Visa, MasterCard и МИР.
Стало: в одном экране есть оба маршрута, а backend отдельно следит за сроком жизни каждой платёжной ссылки.
Два сценария вместо одного компромисса
Для карт сделали оплату через redirect. Пользователь выбирает карту, уходит на платёжную страницу банка, оплачивает Visa, MasterCard или МИР и возвращается в приложение по сценарию банка.
Для СБП логика другая: показываем QR-код и даём deep link в банковское приложение. Пользователь не вводит реквизиты карты, а подтверждает перевод в своём банке.
Технически это два разных потока с разными ожиданиями по UX:
- карта — привычный redirect, где пользователь готов увидеть отдельную платёжную страницу;
- СБП — быстрый переход в банк или сканирование QR-кода;
- оба метода должны жить на одном экране оплаты коммунальных, чтобы пользователь не искал нужный вариант в другом разделе.
Самый скучный, но важный кусок здесь — не кнопки. Важно было не смешать состояния платежей: ссылка на карту и ссылка СБП создаются и протухают по своим правилам.
TTL у каждого метода свой
У каждого способа оплаты свой TTL. Это влияет на то, сколько живёт ссылка или QR-код и когда их нужно считать недействительными.
Если оставить просроченную ссылку активной на экране, пользователь может пойти по ней, получить отказ на стороне банка и вернуться с вопросом, почему приложение предложило нерабочий вариант. Поэтому добавили фоновую задачу, которая аннулирует просроченные ссылки.
Здесь был небольшой спор по реализации: сделать общий механизм очистки для всех оплат или явно учитывать TTL каждого метода. Выбрали второй вариант. Он менее красивый в абстракции, зато понятнее при разборе инцидентов: видно, какой метод оплаты истёк и почему конкретная ссылка уже не должна использоваться.
Получилась схема без лишней догадки на клиенте:
- пользователь выбирает способ оплаты;
- приложение получает актуальную ссылку, QR-код или deep link;
- фоновая задача закрывает просроченные варианты;
- экран оплаты не держит старые ссылки как будто они ещё валидны.
Быстрые суммы для коммунальных платежей
В оплате коммунальных часто повторяются одни и те же суммы. Поэтому добавили быстрый выбор: 1000, 5000 и 10000 руб.
Это небольшая деталь интерфейса, но она убирает лишний ввод там, где пользователь обычно хочет просто закрыть платёж. Особенно в мобильном приложении: меньше тапов, меньше ошибок в сумме, быстрее переход к банку или карточному redirect.
Было: пользователь каждый раз вводит сумму вручную и затем выбирает доступный способ оплаты.
Стало: он может нажать 1000, 5000 или 10000 руб., выбрать карту или СБП и сразу перейти к оплате. Если ссылка устарела, её уберёт фоновая задача, а не пользователь будет выяснять это на стороне банка.
Для PDP Mobile в итоге собрали оплату коммунальных с двумя обязательными маршрутами: карты Visa, MasterCard, МИР через redirect и СБП через QR-код или deep link в банковское приложение. Следующий слой, за которым важно следить в таких интеграциях, — корректная синхронизация статусов после возврата из банка.