Forum - Beitrag anzeigen

CF-Basics - IBAN/BIC prüfen

Icon Pfeil Startseite Icon Pfeil Kategorie Icon Pfeil Suche

Icon Forum Beitrag vom 13.12.2013 10:12 (3365 Aufrufe)
Name: Jens
Titel: IBAN/BIC prüfen
Inhalt: Ich habe gerade zwei Funktionen geschrieben, die den Aufbau von IBAN und BIC prüfen.
Damit das Rad nicht immer neu erfunden werden muss, poste ich den Code hier für interessierte Entwickler.
Der Code darf frei benutzt werden.

/**
* prüft, ob der String eine IBAN sein kann
*
*/
public boolean function isIBAN (required string iban) {
// Offset, um Buchstaben in Zahlen umzuwandeln
local.offset = 55;

// vorbereiten
arguments.iban = ucase(arguments.iban);
arguments.iban = replace(arguments.iban, " ", "", "all");
local.len = len(arguments.iban);

// Länge prüfen
if ( local.len > 34 or local.len < 15)
return false;

// Ländercode prüfen
local.country = left(arguments.iban, 2);
if ( REfind("[A-Z][A-Z]", local.country) == 0 )
return false;

// Prüfsumme testen
local.checksum = mid(arguments.iban, 3, 2);
if ( REfind("[0-9][0-9]", local.checksum) == 0 )
return false;

// Ländercode in Zahl umwandeln
local.numericCountry = toString( asc(local.country) - local.offset ) & toString( asc( right(local.country, 1) ) - local.offset );

local.numbers = "";
for (i = 5; i <= local.len; i = i + 1) {
local.c = mid(arguments.iban, i, 1);
if ( isNumeric(local.c) ) {
local.numbers = local.numbers & local.c;
} else {
// Buchstaben in Zahlen umwandeln
local.numbers = local.numbers & toString( asc(local.c) - local.offset );
}
}
// mit großen Zahlen kann Coldfusion nicht umgehen, aber Java kann es!
local.bigInt = createObject( "java", "java.math.BigInteger" ).init(
javaCast( "string", local.numbers & local.numericCountry & local.checksum ) );
local.modBase = createObject( "java", "java.math.BigInteger" ).init(
javaCast( "string", "97" ) );
// modulo berechnen
local.result = local.bigInt.mod( local.modBase ).toString();

if (local.result != "1")
return false;
// alles ist gut
return true;
}

/**
* prüft, ob der String ein BIC sein kann
*
*/
public boolean function isBIC (required string bic) {
// vorbereiten
arguments.bic = ucase(arguments.bic);
local.len = len(arguments.bic);
// nur 8 oder 11 Zeichen erlaubt
if ( local.len != 8 and local.len != 11 )
return false;
// Bankcode darf nur Buchstaben enthalten
local.bankcode = left(arguments.bic, 4);
if ( REfind("[A-Z][A-Z][A-Z][A-Z]", local.bankcode) == 0 )
return false;
// Ländercode prüfen
local.country = mid( arguments.bic, 5, 2);
if ( REfind("[A-Z][A-Z]", local.country) == 0 )
return false;

// Ortskennung prüfen
if ( REfind("[01]", mid(arguments.bic, 7, 1) ) != 0 )
return false;
if ( mid(arguments.bic, 8, 1) == "O" )
return false;
// Branch Code prüfen
if (local.len == 11 and mid(arguments.bic, 9, 1) == "X" and mid(arguments.bic, 9, 3) != "XXX")
return false;
// alles ist gut
return true;
}

Antworten
Icon Forum IBAN/BIC prüfen (Jens, 13.12.2013 10:12)

Bitte melden Sie sich kostenlos an, um eine Antwort auf diesen Beitrag zu erstellen.


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen