Workspace Digital Awards — приём заявок в самом разгаре! Успейте номинироваться по льготной цене до 30 декабря.
Даниил Михайлов
Интернет-магазин пекарни с онлайн-оплатой и возвратами
Даниил Михайлов
#Программирование сайта#Разработка программного обеспечения

Интернет-магазин пекарни с онлайн-оплатой и возвратами

19 
Даниил Михайлов Россия, Москва
Поделиться: 0 0 0
Интернет-магазин пекарни с онлайн-оплатой и возвратами
Сфера

Информационные технологии и интернет

Сдано

Ноябрь 2026

Задача

Это мой собственный проект, пекарня вымышленная. Покупатель выбирает партию на 08:00, 12:00 или 16:00, оплачивает заказ и забирает его сам или оформляет доставку по зоне на карте.

Хотел разобраться, что происходит с оплатой при сбоях. Например, если подтверждение потерялось, пришло дважды или после отмены заказа. Или покупатель дважды нажал «Оплатить», а владелец открыл возврат в двух вкладках.

Решение

Собрал сервер на Go с PostgreSQL, сайт покупателя, кабинет владельца и консоль платежей на React. ЮKassa и Робокасса работают через общий интерфейс провайдера. Клиент ЮKassa работает и с эмулятором API, где заказ, оплату и возврат можно пройти без ключей провайдеров.

У заказа одна активная попытка оплаты. Повторное нажатие использует ее же, готовая ссылка выдается повторно. Сумму сервер берет из заказа. У ЮKassa проверяется адрес отправителя уведомления, а статус запрашивается через API. Потерю уведомления об оплате закрывает сверка по таймеру. У Робокассы сервер проверяет подпись уведомления. Если оно потерялось в тестовом режиме, таймер не поможет.

Сервер учитывает уже возвращенное и заявки в пути, поэтому вернуть больше оплаты нельзя. Устаревшая форма возврата во второй вкладке отклоняется. При поздней оплате отмененного заказа, если выпечку уже заняли другие, система оставляет его отмененным и запрашивает возврат. Если возврат не прошел, владельцу нужно разобраться вручную.

В кабинете заказы сгруппированы по партиям. Владелец задает остатки по дням недели и видит предупреждения. После оплаты состав можно только уменьшить, на разницу создается возврат. Приложение напоминает о чеках, которые нужно оформлять и исправлять в «Мой налог» вручную.

Консоль показывает события платежа. В песочнице можно потерять или повторить уведомление, изменить порядок событий, вызвать таймаут и двойное нажатие. Часть находок аудита закреплена тестами. Есть и скрипты, которые проверяют кнопки, текст и суммы в интерфейсе.

Результат

Получился магазин с оплатой и возвратами. Карту, ЮMoney, частичные возвраты и уведомления вручную проверял в тестовом магазине ЮKassa. В тестовой Робокассе прошел сценарий с выбором СБП и подписанным уведомлением. Исход там выбирается вручную, без обращения к банку.

Реальных списаний не было. Сбои, включая повторы уведомлений и отдельные гонки возвратов, проверялись на эмуляторе и в тестах. СБП ЮKassa проверен только на эмуляторе, в ее тестовом магазине он недоступен. Возвраты Робокассы реализованы по спецификации и проверены на подмене сервера. На стороне провайдера они не проверялись, у API нет тестового режима. Т-Кассу не подключал: самозанятому-физлицу без ИП ее интернет-эквайринг недоступен.

Даниил Михайлов
Даниил Михайлов

Россия Москва

Интерфейс платежного провайдера отделен от пекарни. Для другого проекта потребуется связать платежи с его заказами и отдельно проверить сценарии.


Стек технологий


Оцените кейс
Спасибо за оценку
Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Оставить заявку