Fem år med PSD2-forbindelser: det specifikationen ikke fortæller dig

En bankbrik forbundet til Trex Pi-mærket med stiplede datalinjer

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 - en 200 med 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:

Mapning af ERP-betalingsfelter til SEPA pain.001 XML-elementer

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.