PSD2 utlovade ett API för varje bank i Europa. Det vi fick är en specifikationsfamilj och några hundra tolkningar av den. Efter fem år av att bygga och driva kopplingar för kontoinformation och betalningsinitiering åt kunder i hela Baltikum är mönstret tydligt: den första banken tar en vecka, den femte tar en dag, och sedan tar nästa bank oväntat en månad.
Samtyckesflödet är där projekten kör fast
API-anropen är den enkla delen. Den svåra delen är samtyckets livscykel - hur en kund auktoriserar er åtkomst, hur länge den auktorisationen lever, och vad som händer när den upphör klockan 03:00 en söndag.
- Vissa banker utfärdar samtycken på 90 dagar och förnyar dem tyst; andra tvingar fram fullständig ny autentisering.
- Samtyckesflöden i sandlådan skiljer sig rutinmässigt från de i produktion. Budgetera för en andra integrationsomgång efter driftsättning.
- Feltaxonomierna är inkonsekventa: samma utgångna samtycke kan visa sig som
401,403, eller - i ett minnesvärt fall - en200med en tom transaktionslista.
Det sista fallet förtjänar att understrykas: ett tomt svar är inte samma sak som ett lyckat svar. Om er avstämning är beroende av ett transaktionsflöde, behandla "inga transaktioner" som ett tillstånd att verifiera, inte ett faktum att registrera.
Vad vi standardiserar på
Varje koppling vi levererar körs nu bakom samma interna gränssnitt, med bankspecifika adaptrar som medvetet hålls tunna. Samma disciplin gäller på betalningsinitieringssidan - ett kanoniskt betalningsobjekt, uttryckligen mappat till varje banks dialekt:
Adaptern hanterar autentiseringsegenheter och varje banks eget sätt att hämta data sida för sida; allt annat - omförsök, idempotens, larmning, varningar om utgående samtycke - finns i det delade lagret, skrivet en gång och testat en gång.
> Om en bankintegration behöver egen omförsökslogik hör den logiken hemma i det delade lagret bakom en feature flag - aldrig i adaptern. Adaptrar som lämnas åt sitt öde blir föråldrade; det delade lagret underhålls kontinuerligt.
Resultatet blir rutin, och rutin är precis vad vi vill uppnå. En ny bank är en ny adapter, en inspelad exempelfil från dess sandlåda och en checklista - inte ett nytt projekt.