Allgemein
Java: Validierung und strukturelle Pruefung einer IBAN
Posted on .Als ich vor einer Weile die Anforderung bekam eine Prüfung für IBANs zu implementieren habe ich gedacht ich bin im 10 Minuten fertig, das Internet ist groß, stimmts? Google ist nur einen Klick entfernt, oder?
Nun ja, nach den ersten Suchvorgängen habe ich den einen oder anderen Beitrag gefunden der einen mehr oder weniger brauchbaren IBAN Validator verlinkt. Doch die Validierung einer IBAN ist im Grunde der einfache Teil, das etwas schwierigere Vorhaben ist aber die Strukturelle Prüfung einer IBAN.
Dazu kann man zwar einige Web-Tools finden, die das bei bedarf erledigen, aber eine ordentliche Library sucht man dafür vergeblich. (Zumindest habe ich nichts gefunden was mir wirklich gefallen hat).
Lösung: selber machen
Zwei Aufgaben waren also zu bewältigen:
- Validierung einer IBAN = Berechnen einer Prüfziffer mit einem ähnlichen System wie bei BAR-Codes.
- Strukturelle Prüfung einer IBAN = Den Aufbau der IBAN gegen ein fest definiertes Schema prüfen.
Die Aufgabe war dann doch recht schnell abgearbeitet und das Ergebnis könnt ihr euch bei Github anschauen.
Hier ein Aufrufbeispiel:
private final String VALID_IBAN_DE = "DE89 3704 0044 0532-0130 00";
private final String DE_IBAN_LENGTH = "22";
private final String DE_IBAN_STRUCTURE = "DE2!n8!n10!n";
@Test
public void validGermanIBANStructureCheck() {
boolean result = false;
try {
result = IBANValidator.checkIbanStructure(VALID_IBAN_DE, "DE", DE_IBAN_LENGTH, DE_IBAN_STRUCTURE);
} catch (IBANValidationException e) {}
assertTrue(result);
}
Die drei Klassen sind in ein Maven-Projekt eingepackt, damit ihr das gleich ausprobieren könnt, ein paar UnitTests sind natürlich auch dabei.
Ich habe auch schon ein paar Kleinigkeiten festgestellt, die ich in nächster Zeit verbessern werde. Wenn ihr noch Vorschläge habt oder eine IBAN findet, die der Validator nicht korrekt behandelt, meldet euch einfach entweder hier im Kommentarbereich oder direkt im Github Bugtracker.
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
There are no comments.