Ручной сбор показаний, ошибки в квитанциях, длинные очереди в офисах — знакомые проблемы для сбытовых компаний. Клиенты устают ждать, а колл-центр перегружен. Портал энергокомпании с личным кабинетом решает эти проблемы: передача показаний в один клик, оплата без комиссии, автоматическое формирование квитанций. Интеграция с АСКУЭ делает учёт точным, а раскрытие информации — прозрачным. Мы строим такие порталы с учётом требований регуляторов и современных стандартов безопасности. Многолетний опыт в B2G-проектах позволяет гарантировать надёжность и масштабируемость.
Модули портала энергокомпании
Личный кабинет клиента — основа портала. Здесь клиент видит текущие показания (из АСКУЭ или вводит вручную), начисления с разбивкой по тарифам (T1/T2), историю платежей и задолженность. Раздел «Оплата» интегрирован с платежными системами: ЮKassa, Сбербанк Онлайн, Тинькофф. Поддерживаются оплата по QR-коду (СБП) и автоплатёж с карты. После оплаты формируется PDF-квитанция, соответствующая шаблону ФНС. Дополнительно реализованы заявления и обращения — от замены счётчика до рекламации по начислениям. Каждое заявление становится процессом с назначенным ответственным. Статус обновляется в реальном времени, клиент получает уведомления. Технологическое присоединение реализовано как онлайн-заявка с автоматическим расчётом мощности, формированием договора и техусловий. Интеграция с ГИС ТП Минэнерго обязательна для сетевых организаций, мы её реализуем. Раздел раскрытия информации содержит тарифы, производственные программы и документы, обновляется автоматически при загрузке новых PDF, соответствует Постановлениям Правительства.
Как интегрировать портал с АСКУЭ?
АСКУЭ (автоматизированная система коммерческого учёта электроэнергии) — это «умные» счётчики (Меркурий 206, Энергомера, МАТРИЦА), которые передают данные по PLC/RF/GSM на концентратор, а затем на сервер. Мы подключаем портал к АСКУЭ-серверу через REST API или SOAP-сервисы. Вот пошаговая инструкция:
- Выберите совместимую систему АСКУЭ — например, Меркурий 206, Энергомера или МАТРИЦА.
- Настройте REST API или SOAP-сервисы для обмена данными с порталом.
- Подключите портал к серверу АСКУЭ с обязательным шифрованием HTTPS — данные обновляются каждые 15 минут.
Данные отображаются в личном кабинете с задержкой до 15 минут — клиент видит актуальное потребление без ручного ввода. Это в 10 раз быстрее и исключает ошибки. Для двухтарифных счётчиков строятся графики с раздельными линиями T1 и T2. Сравнение с прошлым годом помогает выявить аномалии. Все данные шифруются при передаче, а сертифицированные инженеры гарантируют соблюдение требований 152-ФЗ.
Почему автоматизация заявок и раскрытия информации снижает издержки?
Ручная обработка заявок на замену счётчика или ТП занимает до 3 дней. Автоматизация сокращает этот срок до часов, снижая операционные издержки на 30–50%. Прозрачное раскрытие информации исключает штрафы от контролирующих органов. В реальном кейсе один из клиентов сократил нагрузку на колл-центр на 40% после внедрения портала. «Автоматизация процесса передачи показаний позволила сократить время обработки с 10 минут до 30 секунд» — из отчёта внедрения портала энергокомпании. Мы реализуем эти модули на стеке React 18, Laravel 11, PostgreSQL, Docker — проверенных решениях для B2G-проектов. Наш опыт позволяет выполнять проекты в срок и гарантировать стабильную работу.
Что входит в работу
| Этап |
Результат |
| Аналитика |
Спецификация требований, прототип интерфейса |
| Проектирование |
Архитектура, выбор стека, дизайн-макеты |
| Разработка |
Личный кабинет, платежный модуль, интеграции |
| Тестирование |
Нагрузочное тестирование, проверка безопасности |
| Деплой |
Развертывание на вашем хостинге, настройка CI/CD |
| Обучение |
Инструкции, видеоуроки, обучение сотрудников |
Детальный чек-лист модулей
- Личный кабинет: авторизация, профиль, показания, платежи, история.
- Платежная система: интеграция с ЮKassa, Сбербанк, Тинькофф, СБП.
- Интеграция с АСКУЭ: REST/SOAP, обновление каждые 15 минут.
- Заявления: создание, статусы, уведомления, история.
- Технологическое присоединение: калькулятор мощности, договор, ТУ.
- Раскрытие информации: тарифы, программы, документы.
- Безопасность: HTTPS, JWT, ролевая модель, PCI DSS.
Сроки и стоимость
Базовая версия портала (ЛК, оплата, показания) — 2–3 месяца. Расширенная (с АСКУЭ, ТП, графиками) — 4–6 месяцев. Стоимость рассчитывается индивидуально после аудита текущих систем. Получите консультацию нашего эксперта — мы оценим ваш проект и предложим оптимальное решение.
| Модуль |
Срок |
| Личный кабинет |
4–6 недель |
| Платежная система |
2–3 недели |
| Интеграция с АСКУЭ |
4–8 недель |
| Модуль заявок |
3–4 недели |
| Графики потребления |
2–3 недели |
| Раскрытие информации |
2–3 недели |
Свяжитесь с нами для предварительной оценки проекта — мы проанализируем ваши процессы и предложим оптимальное решение. Получите консультацию эксперта по автоматизации портала энергокомпании.
Интеграция платёжных систем: ЮKassa, Stripe, PayPal, Apple Pay, Google Pay
Конверсия упала на 12% сразу после редизайна. Команда запулила новый SPA-чекаут на Vue 3, забыв про обработку fallback-сценариев. Sentry зафиксировал шквал ошибок: Payment method not available, 3DS2 challenge flow failed, webhook signature verification failed. Пользователи бросали корзину на этапе выбора способа оплаты. Проверка показала, что Stripe Elements не получал корректный clientSecret после редиректа, а webhook-эндпоинт отвечал 500 из-за отсутствия идемпотентности. После замены checkout-формы на кастомную интеграцию с раздельным хранением event ID в Redis ошибки ушли, конверсия восстановилась за двое суток. Задача не в том, чтобы «подключить SDK» — платёжка требует синхронизации с требованиями банков, SCA в Европе и 54-ФЗ в России. Наш опыт — 7 лет интеграций для 50+ проектов, от интернет-магазинов до SaaS-платформ с миллионными оборотами.
Что входит в работу под ключ
- Аудит текущего payment flow и требований (валюты, фискализация, подписки).
- Выбор провайдера с учётом географии и бизнес-модели.
- Backend-интеграция (Laravel/Node.js/Go) с обработкой webhook'ов, идемпотентностью и ретраями.
- Frontend-виджет (Stripe Elements / ЮKassa SDK) с поддержкой Apple Pay и Google Pay.
- Тестирование всех сценариев: успех, отказ, 3DS, возвраты, чек коррекции.
- Мониторинг первых транзакций и документация.
Оценим проект за 1 день — для получения консультации напишите в чат.
Сравнение провайдеров: что выбрать
| Критерий |
ЮKassa |
Stripe |
PayPal |
| Валюты |
RUB только |
135+ |
25+ |
| Фискализация 54-ФЗ |
Встроена |
Нет (нужен ОФД) |
Нет |
| Поддержка Apple/Google Pay |
Через SDK |
Через PaymentElement |
Через Braintree |
| Комиссия за транзакцию |
2.5–4% |
2.9% + $0.30 |
2.99% + $0.49 |
| Рекуррентные платежи |
Через автоплатежи |
Stripe Billing |
Reference Transactions |
| PCI DSS |
SAQ A (токены) |
SAQ A (Elements) |
SAQ A (токены) |
Stripe выигрывает по гибкости: 135+ валют против одной у ЮKassa. Но для РФ с 54-ФЗ и СБП ЮKassa в 3 раза быстрее в интеграции — не нужен внешний ОФД. Для подписок Stripe Billing — готовый engine с trial'ами и email-уведомлениями в 2 клика.
Как выбрать подходящего провайдера?
Ключевых точек три. Где живут ваши клиенты? Только РФ — ЮKassa, глобально — Stripe. Нужна ли фискализация по 54-ФЗ? Да — ЮKassa, иначе Stripe + облачный ОФД. Планируете ли подписки? Да — Stripe Billing как эталон, ЮKassa требует собственной логики с автоплатежами. Экономия на комиссиях при выборе правильного провайдера — до 1.5% с оборота. Для проекта с 2 млн ₽ в месяц это 360 000 ₽ в год.
Где прячутся реальные сложности
Подключить тестовый режим — час. Правильно обработать все сценарии — несколько недель.
Webhook надёжность. Webhook может не дойти — сервер недоступен, таймаут, сеть. Провайдер повторяет с экспоненциальным backoff (Stripe — до 3 дней). Обработчик обязан быть идемпотентным: если payment.succeeded придёт дважды с одним payment_id, заказ обновится только раз. Реализуется через хранение event ID в Redis с TTL.
3DS2 и redirect flow. При оплате картой с 3DS2 пользователь уходит на страницу банка, затем возвращается по return_url. За это время сессия могла истечь, корзина очиститься. Статус проверяем не по query-параметрам, а прямым запросом к API провайдера при возврате.
Частичные возвраты и чеки. Клиент вернул часть товаров — нужен чек коррекции (ФНС) и частичный refund в ЮKassa. Stripe делает partial_refund нативно. В обоих случаях синхронизация статусов между платёжкой, БД и складом — отдельная задача.
Валютные ограничения. ЮKassa — только рубли. Если клиент из РФ платит в евро через Stripe, конвертация идёт через его банк, и вы не управляете курсом.
Почему webhook'и требуют идемпотентности?
Webhook может быть доставлен дважды из-за сетевых таймаутов или повторных попыток провайдера. Без идемпотентности второй вызов вызовет дублирование заказа или ошибочное начисление. Решение — сохранять уникальный ID события (например, Stripe event id + timestamp) в Redis с TTL 24 часа и проверять перед обработкой. Если ID уже существует — возвращаем 200, не выполняя бизнес-логику. Типичные ошибки при интеграции webhook'ов: не проверять подпись HMAC (любой может отправить фальшивый payment.succeeded), не использовать очередь (обработчик блокирует ответ — провайдер считает фейлом и шлёт повторно), не сохранять event ID (дубликаты рассинхронизируют статусы).
Как строим интеграцию
Архитектура. Никогда не храним данные карт — только токены провайдера. Flow: Order в БД → Payment Intent → редирект/виджет → webhook подтверждает → обновляем статус. База истины — статус в платёжной системе.
Для Laravel используем stripe/stripe-php или yookassa-sdk. Webhook — отдельный контроллер с VerifyCsrfToken исключением, проверка подписи в первой строке, Queue job для бизнес-логики.
Для Next.js/React — @stripe/stripe-js + @stripe/react-stripe-js. PaymentElement включает Apple/Google Pay автоматически. Пример:
const stripe = await stripePromise;
const { error } = await stripe.confirmPayment({
elements,
confirmParams: { return_url: 'https://example.com/order/thank-you' },
});
Тестирование. Stripe CLI: stripe listen --forward-to localhost:8000/webhook. Тест-карты для всех сценариев (3DS, decline, insufficient funds). Cypress-тест checkout flow в CI — обязательная гарантия стабильности.
Мы отлаживали интеграцию Stripe Billing для SaaS с 50 000 подписчиков. Проблема возникла с обработкой invoice.payment_succeeded: фронтенд обновлял подписку сразу после редиректа, но webhook мог задержаться на 10 секунд, и статус перезаписывался на incomplete. Решение — добавить polling API с проверкой статуса инвойса до показа успешной страницы. Это снизило количество ошибочных отписок на 18%.
Процесс и сроки
Аудит → выбор провайдера → backend → frontend → тесты → деплой → мониторинг.
| Сценарий |
Срок |
| Один провайдер (ЮKassa или Stripe), базовый flow |
1–2 недели |
| Несколько методов оплаты + Apple/Google Pay |
2–4 недели |
| Мультивалютность + частичные возвраты + фискализация |
4–8 недель |
| SaaS подписки через Stripe Billing |
3–6 недель |
Стоимость рассчитывается индивидуально. Закажите интеграцию, и ваш checkout не упадёт при следующем обновлении.
Ссылки:
Гарантируем: 7 лет опыта, 50+ успешных интеграций. Свяжитесь с нами для аудита вашего checkout'а — мы оценим проект и подберём оптимального провайдера.