Files
g2s-aggregator/spec/tasks/029_add_tbank_payment_urls.md
T
2026-04-18 00:58:13 +03:00

4.6 KiB
Raw Blame History

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 и SuccessURL MUST приходить из секции tbank_payment YAML-конфига.
  • 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 -q
  • poetry run pytest tests/adapters/tbank/test_client.py -q
  • poetry run pytest tests/smoke/test_app_import.py -q
  • poetry run pytest -q
  • python3 spec/gen_spec_index.py --check