PSD2 обещал единый API для каждого банка в Европе. На деле мы получили одно семейство спецификаций и несколько сотен его трактовок. После пяти лет создания и эксплуатации коннекторов для получения информации о счетах и инициации платежей для клиентов по всей Балтии закономерность очевидна: первый банк занимает неделю, пятый - день, а затем очередной банк неожиданно занимает месяц.
Именно поток согласия тормозит проекты
Вызовы API - это простая часть. Сложная часть - жизненный цикл согласия: как клиент авторизует ваш доступ, как долго живёт эта авторизация и что происходит, когда она истекает в 3 часа ночи в воскресенье.
- Одни банки выдают согласия на 90 дней и продлевают их незаметно; другие требуют полной повторной авторизации.
- Потоки согласия в песочнице регулярно отличаются от продакшн-версий. Закладывайте время на второй проход интеграции после запуска.
- Таксономии ошибок непоследовательны: одно и то же истёкшее согласие может проявляться как
401,403или - в одном запоминающемся случае - как200с пустым списком транзакций.
Последний случай заслуживает отдельного внимания: пустой ответ - это не то же самое, что успешный ответ. Если ваша сверка зависит от ленты транзакций, относитесь к «нет транзакций» как к условию, которое нужно проверить, а не как к факту, который нужно зафиксировать.
На чём мы стандартизируемся
Каждый коннектор, который мы поставляем сейчас, работает за одним и тем же внутренним интерфейсом, а адаптеры для конкретных банков намеренно остаются тонкими. Та же дисциплина применяется и на стороне инициации платежей - единый канонический объект платежа, явно преобразуемый в диалект каждого банка:
Адаптер обрабатывает особенности аутентификации и разные схемы постраничной выдачи данных; всё остальное - повторные попытки, идемпотентность, оповещения, предупреждения об истечении согласия - живёт в общем слое, написанном один раз и один раз протестированном.
Если банковской интеграции нужна особая логика повторных попыток, эта логика должна быть в общем слое за флагом функциональности - никогда в адаптере. Адаптеры без присмотра быстро устаревают, а общий слой живёт и поддерживается.
В результате всё превращается в рутину - и именно это и есть цель. Новый банк - это новый адаптер, набор тестовых данных, записанный из его песочницы, и чек-лист, а не новый проект.