Пет години PSD2 конектори: това, което спецификацията не ви казва

Плочка на банка, свързана с логото на Trex Pi чрез пунктирани линии за данни

PSD2 обеща едно API за всяка банка в Европа. Това, което получихме, е едно семейство спецификации и няколкостотин негови интерпретации. След пет години изграждане и поддръжка на конектори за информация за сметки и иницииране на плащания за клиенти в Балтийския регион, моделът е ясен: първата банка отнема седмица, петата отнема ден, а после следващата неочаквано отнема месец.

Потокът за съгласие е там, където проектите засядат

API извикванията са лесната част. Трудната част е жизненият цикъл на съгласието - как клиентът упълномощава достъпа ви, колко дълго живее това упълномощаване и какво се случва, когато изтече в 03:00 ч. в неделя.

  • Някои банки издават съгласия за 90 дни и ги подновяват тихомълком; други налагат пълна повторна автентикация.
  • Потоците за съгласие в sandbox средата рутинно се различават от тези в реална среда. Заложете бюджет за втори кръг интеграция след пускането в експлоатация.
  • Таксономиите на грешките са непоследователни: едно и също изтекло съгласие може да се прояви като 401, 403, или - в един запомнящ се случай - 200 с празен списък с транзакции.

Последният случай заслужава специално внимание: празен отговор не е същото като успешен отговор. Ако вашето равнение зависи от поток от транзакции, третирайте „няма транзакции“ като условие за проверка, а не като факт за записване.

На какво стандартизираме

Всеки конектор, който доставяме сега, работи зад един и същ вътрешен интерфейс, като адаптерите за всяка отделна банка се поддържат съзнателно тънки. Същата дисциплина се прилага и от страна на инициирането на плащания - един канонично зададен обект за плащане, изрично мапиран към диалекта на всяка банка:

Мапинг на полета за плащане от ERP към XML елементи на SEPA pain.001

Адаптерът обработва особеностите на автентикацията и различните схеми за извличане на данните страница по страница; всичко останало - повторни опити, идемпотентност, сигнализация, предупреждения за изтичане на съгласие - живее в общия слой, написан веднъж и тестван веднъж.

Ако банкова интеграция се нуждае от персонализирана логика за повторни опити, тази логика принадлежи на общия слой с feature flag - никога в адаптера. Оставени сами на себе си, адаптерите остаряват; общият слой обаче продължава да се поддържа.

Резултатът се превръща в предвидима рутина - и точно това е целта. Нова банка означава нов адаптер, примерен файл, записан от нейната sandbox среда, и чеклист - не нов проект.