T-Банк эквайринг — приём платежей в РФ
Тема 4/5: День 4. Доходный ИИ-сервис — собираем с нуля → Урок 6/7
Сервис готов, но без оплаты он остаётся бесплатным. На этом уроке подключаем T-Банк эквайринг — главный российский провайдер для приёма карточных платежей в РФ-сегменте. Он поддерживает оплату картой, СБП и рекуррентные подписки. Итог урока — первый тестовый платёж в вашем сервисе.
Что такое эквайринг T-Банка
Эквайринг — это услуга банка по приёму карточных платежей. Когда пользователь платит на вашем сайте, цепочка такая:
- Пользователь на вашем сайте жмёт «Купить Pro»
- Ваш сервер обращается в T-Банк: «создать платёж на 990 ₽»
- T-Банк возвращает URL платёжной страницы
- Вы перенаправляете пользователя туда
- Пользователь вводит карту на странице T-Банка, оплачивает
- T-Банк присылает webhook на ваш сервер: «платёж X прошёл»
- Ваш сервер обновляет тариф пользователя в БД
- Пользователь возвращается обратно на ваш сайт — уже Pro
Документация T-Банк — отличная, на русском, с примерами.
Что нужно от вас (организационно)
Перед подключением боевого эквайринга нужно закрыть несколько организационных вопросов. Прежде всего понадобится ИП или ООО — самозанятость не подходит, потому что нужен документооборот юридического лица. Дальше открывается расчётный счёт в T-Банке (бесплатно, ИП оформляется онлайн) и подаётся заявка на эквайринг через бизнес-кабинет. К сайту обязательно прикладываются юридические документы: договор оферты, Политика конфиденциальности и согласие на обработку персональных данных.
Если ИП или ООО пока нет, можно идти через посредников вроде Cloudpayments или Yookassa с агентским договором. Но когда своё ИП уже есть, T-Банк оказывается проще.
Если ИП нет — этот урок всё равно ваш
Важно: для сегодняшней практики ИП не нужно. Весь урок проходится на тестовом магазине — это песочница, для которой не требуется ни юридическое лицо, ни расчётный счёт, ни заявка на боевой эквайринг. Реальные деньги через неё не ходят, поэтому и формальностей нет. ИП понадобится позже — в тот момент, когда вы решите принимать настоящие платежи от настоящих клиентов. То есть сначала вы собираете и проверяете сервис целиком, показываете его первым пользователям — и только когда появляется готовность брать деньги, занимаетесь юридической частью. Это правильный порядок: оформлять ИП ради учебного проекта не нужно.
Тестовый магазин
Пока боевая активация не прошла, работайте с тестовым магазином. Это песочница T-Банка с тестовыми ключами и картами: платежи фейковые, никакие деньги не уходят, но логика работы ровно такая же, как в боевом режиме.
Получение тестовых ключей по шагам: зарегистрируйтесь в кабинете интернет-эквайринга T-Банка, создайте магазин — и в его настройках появится терминал с парой TerminalKey (идентификатор) и Password (секретный ключ) для тестового режима. Эти два значения и пойдут в переменные окружения проекта. Если интерфейс кабинета на каком-то шаге не совпадёт с описанием — он периодически меняется — ориентируйтесь на раздел с названием вроде «Магазины» или «Терминалы» и на документацию по ссылке выше.
Тестовая карта для успешных платежей: 5469 9800 0000 0007 · CVV любые 3 цифры · срок любой будущий.
Промпт для интеграции
Интегрируй T-Банк эквайринг в наш Next.js проект.
Документация: https://www.tbank.ru/kassa/dev/payments/
.env.local:
TBANK_TERMINAL_KEY=... (получим из кабинета T-Банка)
TBANK_PASSWORD=... (секретный пароль терминала)
TBANK_API_URL=https://securepay.tinkoff.ru/v2 (для теста https://rest-api-test.tinkoff.ru/v2)
Создай:
1. src/lib/tbank.ts — клиент для T-Банк API с функциями initPayment, getState
2. src/app/api/payment/create/route.ts — POST endpoint, принимает план (pro), генерит OrderId, шлёт Init в T-Банк, возвращает PaymentURL
3. src/app/api/payment/webhook/route.ts — POST endpoint, принимает уведомления от T-Банка. Проверяет токен (хеш SHA-256). При успешном платеже — обновляет profiles.plan = 'pro' и сбрасывает credits_used=0, credits_limit=200 для пользователя
На странице /pricing — кнопка «Купить Pro» отправляет на /api/payment/create, перенаправляет на PaymentURL
После оплаты T-Банк редиректит пользователя на /payment/success — покажи «Спасибо за оплату, тариф активирован»
Webhook URL для T-Банка указать в кабинете: https://ваш-домен.vercel.app/api/payment/webhook
Init / Confirm / Charge — что значит
T-Банк предлагает три модели платежей, и стоит понимать разницу между ними. Init + Confirm — это двухстадийный платёж: сначала Init резервирует сумму на карте, затем Confirm списывает её, а между ними помещается ваша логика проверки; такую схему используют маркетплейсы и доставка. Init одностадийный совмещает резервирование и списание в одном шаге — это простая модель, которой достаточно для большинства подобных сервисов. Charge с Rebill_Id отвечает за рекуррентные списания: пользователь один раз вводит карту, а дальше оплата по подписке идёт автоматически.
Для нашего сервиса берём Init одностадийный для разовой покупки и Rebill_Id для подписки, если нужны авто-продления.
Безопасность webhook
Главная атака на webhook: злоумышленник присылает фейковое «платёж прошёл» и получает Pro-тариф бесплатно. Защита — проверка токена.
T-Банк в webhook включает поле Token — это хеш SHA-256 от всех остальных полей + ваш Password. Ваш сервер пересчитывает хеш и сравнивает. Если не совпадает → отбросить запрос.
Claude Code сделает эту проверку автоматом — это стандартный паттерн T-Банка.
Тарифная сетка T-Банка
Комиссии у T-Банка устроены так: базовый эквайринг — 2.6% от суммы платежа, оплата через СБП заметно дешевле (порядка 0.4-0.7%), подписки с Rebill идут по тем же 2.6%, а возвраты бесплатны. Конкретные ставки лучше сверять в актуальном тарифе банка, потому что они меняются. Эти проценты закладывайте в экономику тарифа: комиссия снимается с каждого реального платежа.
Что в следующем уроке
Эквайринг работает, тестовая оплата прошла. Финальный шаг четвёртого дня — выкат на боевой сервер: сайт открывается по реальному URL, и клиенты могут заходить.