Перейти к содержанию

Платежи, подписки и платные функции

Добавим к «Пространству» серверные тарифы, идемпотентные заказы, отдельные попытки оплаты, уведомления, сверку, календарное продление, отмену и возврат. Завершим конкретной платной функцией по действующему entitlement.

Для чтения нужны основы C#, HTTP, SQL и транзакций. Зафиксированы ASP.NET Core/.NET 10, Npgsql 10.0.0 и PostgreSQL 18. В архиве исходников есть целые файлы завершённого проекта и README с конфигурацией. Это одно итоговое состояние; уроки последовательно объясняют его части.

Учебное приложение, SQL, HTTP-запросы и фоновые процессы при подготовке не запускались (not_run). Тесты, установка, коммит и публикация учебного приложения не выполнялись. Примеры ответа являются ожидаемыми, скриншоты фактического интерфейса не заявляются.

Начните с SaaS для нескольких компаний. Архив биллинга самостоятельный; README отдельно описывает добавление billing-схемы к локальному baseline. Интеграция произвольной версии требует сопоставления contracts. Провайдер исключительно локальный, реальных платежей нет. Тестовый магазин ЮKassa необязателен и не подключался.

Оглавление

№ Урок Результат
1 Биллинг: деньги, заказ и платёж в веб-приложении Храним сумму в минимальных единицах и отделяем намерение купить от движения денег.
2 Биллинг подписок: версия тарифа и неизменяемая цена заказа Выбираем цену на сервере и сохраняем условия покупки отдельно от текущего каталога.
3 Биллинг подписок: идемпотентное создание заказа Связываем повтор команды с тем же результатом и отклоняем изменение её содержания.
4 Биллинг подписок: адаптер провайдера и повтор создания платежа Сохраняем платежное намерение до вызова и повторяем запрос с одним ключом.
5 Биллинг подписок: переходы состояния платежа Применяем подтверждённый снимок без повторной выдачи периода и отката успешного состояния.
6 Биллинг подписок: входящее уведомление и повтор доставки Используем уведомление как сигнал к чтению провайдера и сохраняем результат обработки.
7 Биллинг подписок: сверка платежей после пропущенного уведомления Читаем авторитетное состояние и восстанавливаем незавершённые локальные этапы.
8 Подписка и границы календарного месяца Сохраняем оплаченный интервал и календарный якорь для будущих продлений.
9 Биллинг подписок: планировщик повторной оплаты Создаём одно продление на границу периода и не повторяем списание при новом проходе.
10 Биллинг подписок: отмена продления и незавершённого платежа Отключаем будущую покупку отдельно от оплаченного периода и текущей попытки.
11 Биллинг подписок: возврат с собственным ключом и остатком суммы Создаём отдельную операцию возврата и не позволяем вернуть больше полученного.
12 Биллинг подписок: платная функция по действующему праву Проверяем entitlement на сервере и связываем его срок с подтверждённым заказом.

Другие курсы партии находятся в маршруте веб-продуктов.