Курс по монтажу
Автор курса уходил с GetCourse. Деньги принимает ЮKassa, а мой сервис создаёт платёж, проверяет его и письмом выдаёт доступ в закрытый канал.
Листай страницу или тащи плейхедТащи дорожки пальцем, как в CapCut
Хронология проекта
16 марта
Код за первый вечер
Срок был полтора суток. Tilda остаётся витриной, всё после оплаты живёт в моём сервисе и боте.
- Кнопка на Tilda
- Моя форма
- ЮKassa
- Бот
- Письмо
17 марта
Каталог заработал, но не там
Подключил штатный каталог Tilda. Но продажи шли с лендингов на Zero Block, где нет карточек, только кнопка.
18 марта
За ночь другая схема
Шесть своих ссылок на кнопки. Дальше моя страница с формой и согласием, потом ЮKassa. Tilda в оплате больше не участвует.
- ПАК Минимум.ru
- ПАК Минимум.by
- ПАК Максимум.ru
- ПАК Максимум.by
- Курс + ПАК Максимум.ru
- Курс + ПАК Максимум.by
18 марта
Админка в боте
Последние 20 оплат с контактами. Цены вынесены из кода в базу и меняются из бота отдельно для каждого магазина.
Цены
- ПАК Минимум
- .ru 000 ₽
- .by 000 ₽
- ПАК Максимум
- .ru 000 ₽
- .by 000 ₽
- Курс + ПАК
- .ru 000 ₽
- .by 000 ₽
19 марта
Через три дня
Автор написал, что всё работает, и спросил, куда оставить отзыв.
Пересказ из переписки
21 марта
Оплата, которой не было
Автор заметил в боте неуспешную оплату. Ошибка была моя: уведомление уходило при создании платежа.
Создан платёжуведомление
payment.succeededуведомление
23 марта
Копия за день
Через четыре дня после приёмки автор попросил такую же систему для второго проекта. Она заработала в тот же день.
Секвенция 01
Секвенция 02, копия
25 марта
Носитель недоступен
Хостинг закрыл исходящие порты 25, 465 и 587. Оплата идёт, инвайт создаётся, автор получает уведомление. Письмо со ссылкой не уходит.
28 марта
Первая жалоба
В субботу покупатели пожаловались, что письма нет. Снаружи ничего не падало, поэтому узнали только от них.
- Оплата идёт
- Инвайт создаётся
- Уведомление доходит
- Письмо нет сигнала
30 марта
Диагноз
В понедельник получил доступ к серверу и прошёл сеть по слоям. Порты закрыты снаружи, код работает.
порт 465 закрыт
порт 587 закрыт
ping до почты проходит
https 443 работает
tcp на 465 timeout 31 марта
Письма вернулись
Автор подтвердил, что вопрос решён. Судя по всему, порты открыла поддержка хостинга. В тот же день замолчал бот второго проекта: заблокирован IPv6, перевёл на IPv4.
1 апреля
Третий сбой за восемь дней
Чек пришёл, письма нет. Автор решил, что снова порты, я сразу не согласился. Поддержка хостинга ответила, и я починил.
- 25 мар порты
- 31 мар IPv6
- 1 апр письмо
14 апреля
Спасибо без денег
Покупатель считал, что оплатил. Судя по всему, его убедила страница «Спасибо». В логах все попытки отменены, деньги не списаны. Сделал отдельную страницу ошибки. В тот же день появился четвёртый тариф.
Спасибо
general_decline expired_on_confirmation
13 октября
Уведомление не по адресу
Автор вернулся, оба магазина заменены на новые. Оплата прошла, бот промолчал: уведомление шло на адрес другого магазина. Бот проверил платёж там, не нашёл и не поверил.
Адрес надо было поменять в кабинете магазина. Подтверждения, что после этого всё дошло, в переписке нет.
- 17:33
- 17:35
- 17:38
Вся хронология текстом
- 16 мартаКод за первый вечер
Срок был полтора суток. Tilda остаётся витриной, всё после оплаты живёт в моём сервисе и боте.
- 17 мартаКаталог заработал, но не там
Подключил штатный каталог Tilda. Но продажи шли с лендингов на Zero Block, где нет карточек, только кнопка.
- 18 мартаЗа ночь другая схема
Шесть своих ссылок на кнопки. Дальше моя страница с формой и согласием, потом ЮKassa. Tilda в оплате больше не участвует.
- 18 мартаАдминка в боте
Последние 20 оплат с контактами. Цены вынесены из кода в базу и меняются из бота отдельно для каждого магазина.
- 19 мартаЧерез три дня
Автор написал, что всё работает, и спросил, куда оставить отзыв.
- 21 мартаОплата, которой не было
Автор заметил в боте неуспешную оплату. Ошибка была моя: уведомление уходило при создании платежа.
- 23 мартаКопия за день
Через четыре дня после приёмки автор попросил такую же систему для второго проекта. Она заработала в тот же день.
- 25 мартаНоситель недоступен
Хостинг закрыл исходящие порты 25, 465 и 587. Оплата идёт, инвайт создаётся, автор получает уведомление. Письмо со ссылкой не уходит.
- 28 мартаПервая жалоба
В субботу покупатели пожаловались, что письма нет. Снаружи ничего не падало, поэтому узнали только от них.
- 30 мартаДиагноз
В понедельник получил доступ к серверу и прошёл сеть по слоям. Порты закрыты снаружи, код работает.
- 31 мартаПисьма вернулись
Автор подтвердил, что вопрос решён. Судя по всему, порты открыла поддержка хостинга. В тот же день замолчал бот второго проекта: заблокирован IPv6, перевёл на IPv4.
- 1 апреляТретий сбой за восемь дней
Чек пришёл, письма нет. Автор решил, что снова порты, я сразу не согласился. Поддержка хостинга ответила, и я починил.
- 14 апреляСпасибо без денег
Покупатель считал, что оплатил. Судя по всему, его убедила страница «Спасибо». В логах все попытки отменены, деньги не списаны. Сделал отдельную страницу ошибки. В тот же день появился четвёртый тариф.
- 13 октябряУведомление не по адресу
Автор вернулся, оба магазина заменены на новые. Оплата прошла, бот промолчал: уведомление шло на адрес другого магазина. Бот проверил платёж там, не нашёл и не поверил.
Одна покупка, пять кадров
Автор учит монтажу, поэтому покажу как клип. Покупка едет слева направо. Каждый кадр здесь мой код, кроме кнопки и самой кассы.
01

Кнопка
Кнопка на Zero Block ведёт на мою страницу. Тариф и магазин уже в ссылке.
02
ПАК Максимум
Согласен с офертой .ruофертой .by, политикой .ruполитикой .by и согласием .ruсогласием .by
Перейти к оплатеФорма
Имя, почта, телефон и согласие. Документы подставляются по магазину.
03
payment.succeeded Уведомление получено
Сверка через API магазина: платёж есть
ЮKassa
Деньги принимает ЮKassa. Бот не верит уведомлению на слово и сверяет платёж через API магазина.
04
Покупатель оплатил ПАК Максимум
Приглашение в канал создано
Контакт: имя, почта, телефон
Бот
Бот создаёт приглашение в канал тарифа, автору приходит уведомление с контактом.
05
от: курс по монтажу
Ваш доступ к закрытому каналу
Оплата прошла. Нажмите на кнопку, чтобы вступить в канал.
Вступить в каналПисьмо
Автор сразу сказал, что страницу благодарности никто не ждёт. Поэтому ссылка уходит письмом с доменной почты.
Поле телефона без маски двух стран: у автора бывают покупатели из Новой Зеландии и Кот-д'Ивуара. Плюс подставляется сам.
Шесть дней без письма
Приблизил таймлайн. Жаловались только на письмо, а остальные дорожки шли всё это время, поэтому снаружи ничего не падало.
- 3 дня до первой жалобы
- 5 дней до диагноза
- 6 дней до восстановления
порт 465 закрыт
порт 587 закрыт
ping до почты проходит
https 443 работает
tcp на 465 timeout С 25 марта хостинг закрыл исходящие 25, 465 и 587 на уровне своей сети. У VPS-провайдеров это обычная антиспам-мера. Я предложил два выхода: открыть порт через поддержку или отправлять через HTTP API по 443. 31 марта вопрос закрылся.
3 × 2 = 6
Три тарифа, два магазина, шесть ссылок на кнопки Zero Block. У России и Беларуси свои оферта, политика и согласие.
Ссылка на кнопке?tariff=max&shop=ru
Значения в ссылках условные.
Одна страница на два исхода
payment.succeededСпасибо, имя
payment.canceledСпасибо, имя
Оплата не прошлаДеньги не списаны
Страница возврата из ЮKassa показывалась после редиректа всегда, с именем покупателя. Отказ карты выглядел как подтверждение. Покупатель считал, что оплатил, и автор добавил его в канал вручную.
Логи показали general_decline и expired_on_confirmation. Письма при этом работали. Отказ теперь ведёт на отдельную страницу ошибки.
Та же тема, что 21 марта: сообщать об оплате можно только после подтверждения. Там это было уведомление автору, здесь страница покупателю.
Кнопка здесь, остальное у меня
Оба лендинга настоящие и собраны не мной. Мой код начинается там, где покупатель нажал «Купить».


Титры
- Разработка
- Никита Митусов, один на проекте
- Схема
- Tilda витрина, всё после оплаты в боте
- Сервис и бот
- с нуля, код в первый вечер
- Вебхук ЮKassa
- и сверка оплаты через API магазина
- Приглашения
- createChatInviteLink, тариф привязан к каналу
- Письмо с доступом
- доменная почта и оформление
- Форма
- свой сервер, заявка приходит автору в бот
- Админка
- 20 оплат, цены по магазинам
- Сервер
- Docker, домен оплаты, reverse proxy
- Разбор сбоев
- SMTP, IPv6, 1 апреля, отказ оплаты, адрес вебхука
- Смена магазинов
- 13 октября
Также в кадре
- Лендинг .ru, каналы, ключи ЮKassa
- автор курса
- Лендинг .by
- другой исполнитель
- Доменная почта и DNS
- сторонний настройщик
март – октябрь 2026. Tilda, ЮKassa, Telegram-бот, Docker. Система принимает реальные оплаты в двух магазинах, тарифов четыре.
Через два дня после приёмки автор принёс следующий проект, SaveAPP.
Что я вынес
Ссылка на канал уходит одним путём, письмом. Этот шаг надо проверять снаружи, а не ждать жалобы покупателя.
Внешней проверки почты здесь не было, и о сбое мы узнали через три дня, от покупателей.