Вебхуки (эквайринг)¶
Т-Банк отправляет уведомления о платежах POST-запросом на NotificationURL.
Обработчик должен проверить подпись и вернуть HTTP 200 с телом ровно OK.
Разбор и проверка¶
from tbank.acquiring.webhooks import parse_notification, verify_notification
async def handler(request):
data = await request.json()
if not verify_notification(data, password="password123"):
return # подпись не сошлась — отклоняем
note = parse_notification(data) # типизированная модель
if note.status is PaymentStatus.CONFIRMED:
... # платёж подтверждён
# для рекуррента сохраните note.rebill_id
return "OK"
verify_notification(data, password)— проверяетTokenтем же алгоритмом SHA-256, что и подпись запросов (см. Аутентификация).parse_notification(data)→PaymentNotification(terminal_key,order_id,success,status,payment_id,amount,card_id,pan,rebill_id, …).
Совет
Для родительского рекуррентного платежа RebillId приходит именно в вебхуке на
статус AUTHORIZED — сохраните его для последующих charge(...).
Справочник¶
- class tbank.acquiring.webhooks.PaymentNotification(*, TerminalKey, OrderId, Success, Status, PaymentId, ErrorCode, Amount=None, CardId=None, Pan=None, ExpDate=None, RebillId=None, Token)[исходный код]¶
Базовые классы:
TBankModel- Параметры:
- model_config = {'alias_generator': <function to_pascal>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- tbank.acquiring.webhooks.parse_notification(data)[исходный код]¶
Разобрать входящую нотификацию эквайринга в типизированную модель.
- Параметры:
- Тип результата: