All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 3m10s
20 lines
1.4 KiB
Python
20 lines
1.4 KiB
Python
"""Т-Банк интернет-эквайринг — чистый интеграционный слой (PR-C).
|
||
|
||
Модули здесь НЕ импортируют `app.core.config` и не пишут в БД: все секреты
|
||
(`terminal_key`, `password`, `base_url`) принимаются аргументами функций/
|
||
конструктора. Причина — параллельный PR-B вводит эти поля в `config.py`,
|
||
а проводку (роутер, `_PUBLIC_PATHS`, `payments`-таблицы, статус-машина)
|
||
делает следующий PR-D. См. `mera-tbank-acquiring-recon.md` (корень репо)
|
||
§3/§9 для полной схемы разбивки.
|
||
|
||
- `token.py` — подпись `Token` запросов + проверка подписи нотификаций
|
||
(никогда не кидает исключение на враждебном входе).
|
||
- `notification.py` — строгий типизированный разбор тела нотификации ПОСЛЕ
|
||
проверки подписи (`parse_notification`) — сырой `dict` дальше не уходит.
|
||
- `receipt.py` — сборка `Receipt` (54-ФЗ, ФФД 1.05) для услуги.
|
||
- `tbank_client.py` — httpx-клиент `Init/GetState/CheckOrder/Confirm/Cancel`.
|
||
|
||
Docs: https://developer.tbank.ru/eacq/intro
|
||
"""
|
||
|
||
from __future__ import annotations
|