PSD2 lovede ét API for hver bank i Europa. Det, vi fik, er én specifikationsfamilie og et par hundrede fortolkninger af den. Efter fem år med at bygge og drifte forbindelser til kontooplysninger og betalingsinitiering for kunder i hele Baltikum er mønsteret klart: den første bank tager en uge, den femte tager en dag, og så tager den næste uventet en måned.
Samtykkeflowet er dér, hvor projekter går i stå
API-kaldene er den nemme del. Den svære del er samtykkets livscyklus - hvordan en kunde godkender din adgang, hvor længe den godkendelse lever, og hvad der sker, når den udløber klokken 03:00 en søndag.
- Nogle banker udsteder samtykker med 90 dages varighed og fornyer dem lydløst; andre gennemtvinger fuld gen-autentificering.
- Sandbox-samtykkeflows adskiller sig rutinemæssigt fra produktionens. Sæt budget af til en anden integrationsomgang efter lancering.
- Fejltaksonomier er inkonsistente: det samme udløbne samtykke kan dukke op som
401,403, eller - i ét mindeværdigt tilfælde - en200med en tom transaktionsliste.
Det sidste fortjener en understregning: et tomt svar er ikke det samme som et vellykket svar. Hvis din afstemning afhænger af et transaktionsfeed, så behandl "ingen transaktioner" som en tilstand, der skal verificeres, ikke en kendsgerning, der skal registreres.
Det, vi standardiserer på
Hver forbindelse, vi leverer, kører nu bag den samme interne grænseflade, med bank-specifikke adaptere holdt bevidst tynde. Den samme disciplin gælder på betalingsinitieringssiden - ét kanonisk betalingsobjekt, mappet eksplicit til hver banks dialekt:
Adapteren håndterer autentificeringsejendommeligheder og forskellige måder at hente data side for side på; alt andet - gentagelser, idempotens, alarmering, advarsler om udløbende samtykke - lever i det fælles lag, skrevet én gang og testet én gang.
Hvis en bankintegration har brug for tilpasset gentagelseslogik, hører den logik hjemme i det fælles lag bag et feature flag - aldrig i adapteren. Adaptere, der får lov at passe sig selv, forældes; det fælles lag bliver løbende vedligeholdt.
Resultatet bliver rutine - og det er netop målet. En ny bank er en ny adapter, en testfil optaget fra dens sandbox og en tjekliste - ikke et nyt projekt.