Реализовать валидацию IBAN для международных переводов
Описание
Бизнес-контекст
При pilot rollout платежного модуля в Германии и Нидерландах выявлена проблема: текущая логика валидации не учитывает страновые стандарты IBAN, что приводит к отклонению ~12% валидных платежей.
Техническое требование
Необходимо реализовать полную валидацию IBAN согласно стандарту ISO 13616:
1. Проверка длины по коду страны
2. Расчёт контрольной суммы MOD-97
3. Валидация структуры национального кода банка
Поведение API
• При валидном IBAN — стандартная обработка платежа
• При невалидном IBAN — блокировка вызова внешнего провайдера
• Возврат HTTP 400 с детализированной ошибкой
• Логирование попытки в audit trail
Страны первой волны
DE (Германия), FR (Франция), NL (Нидерланды), BE (Бельгия)
Ссылки
• [Спецификация IBAN](https://www.swift.com/standards/data-standards/iban)
• [Внутренняя документация API](/docs/payments-api)
Критерии приёмки
2/6Вложения (3)
iban-validation-spec.pdf
245 KB · Мария С. · 8 апр
api-contract-v2.json
12 KB · Дмитрий П. · 9 апр
screenshot-error-case.png
156 KB · Елена В. · 10 апр
Связанные задачи (4)
Приоритет на DE и NL — там основной объём платежей в Q2. FR и BE можно добавить следом.
Начал с DE. Нашёл edge case: некоторые банки используют legacy формат без leading zeros. Уточню у провайдера.
По поводу response code — предлагаю использовать стандартный формат ошибки с полем `validation_errors[]`. Так проще будет фронту показать конкретную проблему.
Согласен. Добавлю поля `field`, `code`, `message` в каждую ошибку. Пример: `{"field": "iban", "code": "INVALID_CHECKSUM", "message": "Контрольная сум����а не совпадает"}`
QA: подготовила тестовые IBAN для всех 4 стран — валидные и с типичными ошибками. Файл в attachments.