4.6 KiB
4.6 KiB
id, title, status, created
| id | title | status | created |
|---|---|---|---|
| 029 | Add TBank payment notification and success URLs | DONE | 2026-04-18 |
Context
TBank Init API должен получать URLs для обработки webhook-уведомлений и возврата клиента после успешной оплаты. Сейчас TBankAdapter и секция tbank_payment не фиксируют передачу NotificationURL и SuccessURL.
Goal
Добавить в конфигурацию TBank payment обязательные параметры notification_url и success_url и передавать их в payload инициализации платежа как NotificationURL и SuccessURL.
Constraints
- Изменения ограничены TBank payment config, TBank adapter payload mapping, wiring конфигурации и тестами.
NotificationURLиSuccessURLMUST приходить из секцииtbank_paymentYAML-конфига.- TBank adapter MUST продолжать инкапсулировать HTTP-взаимодействие, auth token, retries, timeout, serialization и error handling.
- Service и Controller MUST NOT содержать TBank-specific payload fields или provider HTTP-детали.
- Не изменять публичный request/response contract
POST /api/v1/delivery/init-payment. - Не изменять price flow, address suggestion flow, CDEK adapter и order repository.
- Не добавлять новые endpoints.
Acceptance criteria
TBankPaymentConfigсодержит обязательные поляnotification_url: strиsuccess_url: str.- Runtime YAML-конфиг и test YAML-конфиг содержат секцию
tbank_paymentсnotification_urlиsuccess_url. TBankAdapterпри вызове TBank Init API отправляетNotificationURLсо значениемtbank_payment.notification_url.TBankAdapterпри вызове TBank Init API отправляетSuccessURLсо значениемtbank_payment.success_url.- Auth token TBank формируется с учётом тех же полей payload, которые отправляются в Init API, включая
NotificationURLиSuccessURL, если текущая реализация token generation строится по request payload. - Отсутствие
notification_urlилиsuccess_urlв YAML-конфиге приводит к детерминированной ошибке валидации конфигурации. AggregatorService.init_payment()продолжает вызыватьpayment_adapter.create_payment_link(order_uuid, price)без дополнительных URL-аргументов.- Endpoint
POST /api/v1/delivery/init-paymentпродолжает возвращать толькоInitPaymentResponse(payment_url=...).
Definition of Done
- В
app/config.pyдобавлены поляnotification_urlиsuccess_urlв TBank payment config. - YAML-конфиги обновлены новыми параметрами TBank payment.
TBankAdapterпередаётNotificationURLиSuccessURLв payload TBank Init API.- Token generation для TBank request остаётся корректной после добавления новых payload fields.
- Service и Controller не знают о
NotificationURLиSuccessURL. - Добавлены или обновлены тесты конфигурации.
- Добавлены или обновлены тесты TBank adapter payload.
- Все команды из раздела Commands проходят.
Tests
- Обновить
tests/config/test_config_sections.py: проверить обязательностьtbank_payment.notification_urlиtbank_payment.success_url. - Обновить
tests/adapters/tbank/test_client.py: проверить, что successful Init request payload содержитNotificationURLиSuccessURLиз конфигурации. - Обновить
tests/adapters/tbank/test_client.py: проверить, что token generation остаётся детерминированной после добавления новых payload fields. - При необходимости обновить
tests/smoke/test_app_import.py, если smoke config требует новые обязательные поля.
Commands
poetry run pytest tests/config/test_config_sections.py -qpoetry run pytest tests/adapters/tbank/test_client.py -qpoetry run pytest tests/smoke/test_app_import.py -qpoetry run pytest -qpython3 spec/gen_spec_index.py --check