Многие новички представляют это так:
Пользователь нажал кнопку «Оплатить»...
Backend такой:
— Ага, деньги пришли. Отлично. 😄
Но в реальности всё работает совсем не так.
Когда вы оплачиваете заказ, деньги чаще всего уходят не напрямую вашему сайту, а в платежную систему — например, ЮKassa, Stripe, CloudPayments и другие.
Backend лишь создает платеж и получает ссылку или форму для оплаты.
Дальше пользователь вводит данные карты, подтверждает платеж — и только после этого начинается самое интересное.
Платежная система сама отправляет на сервер специальное уведомление — webhook.
В нем говорится примерно следующее:
✅ Платеж успешно завершен.
✅ Сумма совпадает.
✅ Вот ID заказа.
✅ Деньги действительно получены.
И только после получения такого уведомления backend меняет статус заказа:
📦 оплачен;
📧 отправляет чек;
🚚 запускает сборку заказа;
📩 открывает доступ к курсу или подписке.
Именно поэтому хороший backend никогда не доверяет браузеру пользователя.
Если пользователь просто откроет DevTools и отправит запрос «Я оплатил», сервер не должен ему поверить.
Единственный надежный источник — это сама платежная система, которая подтверждает, что деньги действительно поступили.
Поэтому в любой современной системе оплата — это не просто кнопка «Заплатить». Это целая цепочка проверок, которая защищает и бизнес, и пользователя от ошибок, мошенничества и случайных сбоев.
👇 А вы уже работали с платежными системами или пока только слышали про webhooks?