Никита Митусов Обсудить задачу
Программа: первый кадр

Курс по монтажу

Автор курса уходил с GetCourse. Деньги принимает ЮKassa, а мой сервис создаёт платёж, проверяет его и письмом выдаёт доступ в закрытый канал.

Листай страницу или тащи плейхедТащи дорожки пальцем, как в CapCut

Хронология проекта

16 марта

Код за первый вечер

Срок был полтора суток. Tilda остаётся витриной, всё после оплаты живёт в моём сервисе и боте.

  1. Кнопка на Tilda
  2. Моя форма
  3. ЮKassa
  4. Бот
  5. Письмо

17 марта

Каталог заработал, но не там

Подключил штатный каталог Tilda. Но продажи шли с лендингов на Zero Block, где нет карточек, только кнопка.

Лендинг курса: на первом экране только кнопка покупки

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 апреля

Третий сбой за восемь дней

Чек пришёл, письма нет. Автор решил, что снова порты, я сразу не согласился. Поддержка хостинга ответила, и я починил.

  1. 25 мар порты
  2. 31 мар IPv6
  3. 1 апр письмо

14 апреля

Спасибо без денег

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

Спасибо

general_decline expired_on_confirmation

13 октября

Уведомление не по адресу

Автор вернулся, оба магазина заменены на новые. Оплата прошла, бот промолчал: уведомление шло на адрес другого магазина. Бот проверил платёж там, не нашёл и не поверил.

Адрес надо было поменять в кабинете магазина. Подтверждения, что после этого всё дошло, в переписке нет.

ЮKassa
чужой магазин
  1. 17:33
  2. 17:35
  3. 17:38

Все дорожки идут

16 мар1921232528301 апр14 апр 13 окт
Каталог
Свои ссылки, форма, ЮKassa
Новые магазины
Инвайты, админка
Уведомление только после оплаты
Бот сверяет платёж
Нет сигнала, 6 дней
Вырезано полгода
Вся хронология текстом
  1. 16 мартаКод за первый вечер

    Срок был полтора суток. Tilda остаётся витриной, всё после оплаты живёт в моём сервисе и боте.

  2. 17 мартаКаталог заработал, но не там

    Подключил штатный каталог Tilda. Но продажи шли с лендингов на Zero Block, где нет карточек, только кнопка.

  3. 18 мартаЗа ночь другая схема

    Шесть своих ссылок на кнопки. Дальше моя страница с формой и согласием, потом ЮKassa. Tilda в оплате больше не участвует.

  4. 18 мартаАдминка в боте

    Последние 20 оплат с контактами. Цены вынесены из кода в базу и меняются из бота отдельно для каждого магазина.

  5. 19 мартаЧерез три дня

    Автор написал, что всё работает, и спросил, куда оставить отзыв.

  6. 21 мартаОплата, которой не было

    Автор заметил в боте неуспешную оплату. Ошибка была моя: уведомление уходило при создании платежа.

  7. 23 мартаКопия за день

    Через четыре дня после приёмки автор попросил такую же систему для второго проекта. Она заработала в тот же день.

  8. 25 мартаНоситель недоступен

    Хостинг закрыл исходящие порты 25, 465 и 587. Оплата идёт, инвайт создаётся, автор получает уведомление. Письмо со ссылкой не уходит.

  9. 28 мартаПервая жалоба

    В субботу покупатели пожаловались, что письма нет. Снаружи ничего не падало, поэтому узнали только от них.

  10. 30 мартаДиагноз

    В понедельник получил доступ к серверу и прошёл сеть по слоям. Порты закрыты снаружи, код работает.

  11. 31 мартаПисьма вернулись

    Автор подтвердил, что вопрос решён. Судя по всему, порты открыла поддержка хостинга. В тот же день замолчал бот второго проекта: заблокирован IPv6, перевёл на IPv4.

  12. 1 апреляТретий сбой за восемь дней

    Чек пришёл, письма нет. Автор решил, что снова порты, я сразу не согласился. Поддержка хостинга ответила, и я починил.

  13. 14 апреляСпасибо без денег

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

  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

Тариф.ru.by
ПАК Минимум
ПАК Максимум
Курс + ПАК Максимум
Курс с обратной связью, 9 950 ₽

Значения в ссылках условные.

Одна страница на два исхода

payment.succeeded

Спасибо, имя

payment.canceled

Спасибо, имя

Оплата не прошлаДеньги не списаны

Страница возврата из ЮKassa показывалась после редиректа всегда, с именем покупателя. Отказ карты выглядел как подтверждение. Покупатель считал, что оплатил, и автор добавил его в канал вручную.

Логи показали general_decline и expired_on_confirmation. Письма при этом работали. Отказ теперь ведёт на отдельную страницу ошибки.

Та же тема, что 21 марта: сообщать об оплате можно только после подтверждения. Там это было уведомление автору, здесь страница покупателю.

Кнопка здесь, остальное у меня

Оба лендинга настоящие и собраны не мной. Мой код начинается там, где покупатель нажал «Купить».

Источникhomutouski.ru/pak
Лендинг пака футажей целиком
Программаhomutouski.by/montazh-reels
Лендинг курса Монтаж Reels целиком

Титры

Разработка
Никита Митусов, один на проекте
Схема
Tilda витрина, всё после оплаты в боте
Сервис и бот
с нуля, код в первый вечер
Вебхук ЮKassa
и сверка оплаты через API магазина
Приглашения
createChatInviteLink, тариф привязан к каналу
Письмо с доступом
доменная почта и оформление
Форма
свой сервер, заявка приходит автору в бот
Админка
20 оплат, цены по магазинам
Сервер
Docker, домен оплаты, reverse proxy
Разбор сбоев
SMTP, IPv6, 1 апреля, отказ оплаты, адрес вебхука
Смена магазинов
13 октября

Также в кадре

Лендинг .ru, каналы, ключи ЮKassa
автор курса
Лендинг .by
другой исполнитель
Доменная почта и DNS
сторонний настройщик

март – октябрь 2026. Tilda, ЮKassa, Telegram-бот, Docker. Система принимает реальные оплаты в двух магазинах, тарифов четыре.

Через два дня после приёмки автор принёс следующий проект, SaveAPP.

Что я вынес

Ссылка на канал уходит одним путём, письмом. Этот шаг надо проверять снаружи, а не ждать жалобы покупателя.

Внешней проверки почты здесь не было, и о сбое мы узнали через три дня, от покупателей.

Нужно похожее? Оплата и подписки: от 7 000 ₽