Локальное тестирование вебхуков Т-Банка (Т-Бизнес / Эквайринг) на localhost
Пошаговый гайд по отладке платежных уведомлений эквайринга Т-Банка локально. Настройка адреса уведомлений, проброс через TunnelHunt и пример проверки подписи Token на Python.
Интернет-эквайринг от Т-Банка (ранее Тинькофф Эквайринг) отправляет уведомления о статусах транзакций (вебхуки) на указанный вами URL. Чтобы ваш интернет-магазин мог вовремя отгрузить товар или выслать доступы покупателю, обработчик вебхуков должен работать без сбоев.
Отладка обработчика на локальном компьютере — стандартная задача при разработке. Так как серверы Т-Банка не могут отправить запрос на localhost, мы используем TunnelHunt для создания безопасного временного HTTPS-туннеля.
Шаг 1: Пишем обработчик вебхуков с проверкой токена (Python / Flask)
Т-Банк присылает вебхуки в формате JSON. Чтобы убедиться, что запрос пришел именно от банка, а не от злоумышленника, Т-Банк требует проверять цифровую подпись (Token). Она вычисляется из всех присланных параметров и вашего секретного пароля терминала.
[!TIP] В macOS Monterey и выше порт
5000занят системной службой AirPlay. Запустим локальный сервер Flask на свободном порту8000.
Создайте файл app.py:
# app.py
import hashlib
from flask import Flask, request, abort
app = Flask(__name__)
# Пароль терминала из личного кабинета Т-Банка (в тестовом режиме — тестовый)
TERMINAL_PASSWORD = "your_terminal_password"
def verify_tbank_signature(json_data, password):
received_token = json_data.get('Token')
if not received_token:
return False
# Для расчета токена исключаем сам Token и параметр Success
params = {k: v for k, v in json_data.items() if k not in ('Token', 'Success')}
params['Password'] = password
# Сортируем ключи по алфавиту и конкатенируем значения
sorted_keys = sorted(params.keys())
signature_base = ''.join(str(params[k]) for k in sorted_keys)
# Хешируем полученную строку через SHA-256
calculated_token = hashlib.sha256(signature_base.encode('utf-8')).hexdigest()
return calculated_token == received_token
@app.route('/webhook/tbank', methods=['POST'])
def tbank_webhook():
if not request.is_json:
return 'Bad Request', 400
json_data = request.get_json()
# Проверяем подпись вебхука
if not verify_tbank_signature(json_data, TERMINAL_PASSWORD):
print("🚨 Ошибка: Неверная цифровая подпись вебхука Т-Банка!")
abort(403)
print("🎉 Вебхук успешно верифицирован!")
print(f"Статус платежа: {json_data.get('Status')}")
print(f"Сумма платежа: {int(json_data.get('Amount', 0)) / 100} руб.")
print(f"ID заказа: {json_data.get('OrderId')}")
# Т-Банк ждет от нас текстовый ответ "OK" (чувствителен к регистру)
return 'OK', 200
if __name__ == '__main__':
app.run(port=8000, debug=True)
Запустите скрипт:
pip install Flask
python app.py
Ваш локальный вебхук-приемник готов и ждет запросы на http://localhost:8000/webhook/tbank.
Шаг 2: Пробрасываем туннель через TunnelHunt
Сделаем локальный порт 8000 видимым для Т-Банка из интернета. Откройте новый терминал и запустите команду:
ssh -R 80:localhost:8000 -p 2222 tunnelhunt.ru
Сервер вернет временный HTTPS-адрес, например:
https://fancy-cat-456.tunnelhunt.ru
Теперь Т-Банк сможет отправлять вебхуки по адресу https://fancy-cat-456.tunnelhunt.ru/webhook/tbank, а TunnelHunt перенаправит их в Flask на вашем компьютере.
Шаг 3: Настраиваем адрес уведомлений в Т-Банке
Для того чтобы Т-Банк отправлял уведомления:
- Зайдите в Личный кабинет Т-Бизнес в раздел интернет-эквайринга.
- Перейдите в Магазины → Выберите ваш магазин → Настройки.
- Найдите блок Технические настройки (или Настройки интеграции).
- Включите отправку уведомлений по протоколу HTTP/HTTPS.
- Скопируйте ваш адрес из TunnelHunt и укажите его в поле URL для уведомлений (для тестирования лучше прописать его в поле Тестовый URL):
https://fancy-cat-456.tunnelhunt.ru/webhook/tbank - Сохраните изменения.
Шаг 4: Тестирование и отладка
Совершите тестовую покупку на сайте. Т-Банк отправит POST-запрос с деталями операции. Скрипт проверит Token (используя заданный TERMINAL_PASSWORD), подтвердит подлинность и выведет данные транзакции прямо в вашу локальную консоль.
Экономия времени: Request Replay в TunnelHunt
Если в коде обработчика заказа после проверки подписи была ошибка (например, сбой при записи в локальную базу данных), вам не нужно заново кликать на тестовой платежной форме Т-Банка.
Зайдите в панель управления TunnelHunt в раздел Logs:
- Найдите запись вебхука от Т-Банка.
- Нажмите кнопку Replay (Повторить запрос).
- Запрос выполнится еще раз с теми же параметрами и заголовками, давая вам возможность отладить и исправить локальный код в реальном времени.
Готовы запустить свой первый туннель?
Начните использовать TunnelHunt бесплатно уже сегодня и откройте доступ к локальному серверу всего одной командой.
Зарегистрироваться бесплатно →Последние публикации
Локальное тестирование вебхуков CloudPayments через TunnelHunt
22 июня 2026 г.
Пошаговый гайд по отладке уведомлений о платежах CloudPayments на localhost. Как настроить адреса уведомлений, пробросить туннель и верифицировать подпись HMAC-SHA256 в Python.
Настройка и отладка вебхуков Robokassa на локальном сервере
22 июня 2026 г.
Пошаговая инструкция по приему и верификации платежных уведомлений Robokassa на локальном компьютере с помощью TunnelHunt. Пример MD5-подписи на Python.
Локальное тестирование вебхуков ЮKassa (YooKassa) через TunnelHunt
22 июня 2026 г.
Пошаговый гайд по настройке уведомлений ЮKassa (YooKassa) на локальном сервере. Как пробросить порт, прописать URL в личном кабинете и проверить цифровую подпись.
Инспектор трафика и кнопка Replay: Реактивный дебаг вебхуков в TunnelHunt
20 июня 2026 г.
Делать тестовый платеж или отправлять форму заново, чтобы отладить вебхук? Забудьте. Рассказываем, как встроенная функция HTTP Replay в дашборде TunnelHunt ускоряет локальную разработку.