feat(tradein/payments): подпись Token, клиент Т-Банка и сборка чека #2733
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2733
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-payments-tbank-client"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PR-C платёжного контура МЕРЫ (Т-Банк эквайринг) — чистый интеграционный слой без роутеров/эндпоинтов/записи в БД:
app/services/payments/token.py— подписьToken(sha256, сортировка по ключу, excludeToken/None/dict/list) +verify_notification_token(hmac.compare_digest).app/services/payments/receipt.py— сборкаReceipt(ФФД 1.05, услуга): Email/Phone required (хотя бы одно),Taxation,Items[](Name ≤128, Price/Quantity/Amount в копейках, актуальные ставки НДС 2026vat22/vat122, безvat20/vat120),PaymentMethod=full_payment,PaymentObject=service.app/services/payments/tbank_client.py— httpx-клиентInit/GetState/CheckOrder/Confirm/Cancelпо образцуapp/services/tgbot/client.py(таймаут 15с, ретраи на network/5xx, 4xx не ретраится,TBankApiError).Архитектурное ограничение: модули НЕ импортируют
app.core.config— все секреты (terminal_key/password/base_url) принимаются аргументами, чтобы не конфликтовать по файлам с параллельным PR-B (конфиг). Проводка (роутер,_PUBLIC_PATHS, таблицы, статус-машина) — в следующем PR-D.Эталонные векторы подписи
Оба эталонных вектора из официальной документации Т-Банка подтверждены живым запросом (curl, 2026-08-06) к
developer.tbank.ru:/eacq/intro/developer/token) —72dd466f8ace0a37a1f740ce5fb78101712bc0665d91a8108c7c8a0ccd426db2/eacq/intro/developer/notification) —1c0964277d0213349243065a0d5b838b8e90d2d25f740d0f2767836e710e80c8Оба сходятся в
tests/test_payments_token.py.Test plan
ruff check— cleanruff format --check— cleanpytest tests/test_payments_token.py tests/test_payments_receipt.py tests/services/payments/test_tbank_client.py— 69 passedRefs mera-tbank-acquiring-recon.md (PR-C из плана §9)