Skyline Groningen
Toegevoegd op

Conversie naar IBAN

Het gebruik van IBAN komt voort uit Europese wetgeving. Het doel van deze wetgeving is ervoor te zorgen dat alle betalingen binnen het SEPA-gebied op dezelfde manier worden uitgevoerd. De overgang naar IBAN is verplicht. Alle deelnemende landen moeten in de periode tot 2014 over naar deze manier van betalen. Dit betekent dat er meer gedaan moet worden bij een controle van een banknummer dan alleen de elf-proef maar ook zal menig consument in het begin moeite hebben om het IBAN-nummer te achterhalen.

Voorbeeld weergeven

Bovenstaand voorbeeld is geschreven met jQuery maar het principe geldt natuurlijk voor alle talen. Het gaat om het koppelen van de BIC van de bank aan het banknummer, zoals in onderstaand voorbeeld : // Switch bank and account to European IBAN. function createIban() { // Add 0 in front untill the length of the account is 10 var tenBank = $.trim(($('#bankaccount').val())).toString(); for (var i = tenBank.length; i < 10; ++i) { tenBank='0'+tenBank; }; /* Now we make the big string with a trimmed bankaccount and add the countrycode. Again the countrycode is converted to numeric where A=10, B=11 etc At the end I add 00 for calculation sake. */ var bankcodeText = $('#bankSelector').val(); var bigbic=convertBic(bankcodeText)+tenBank+(bankcodeText.charCodeAt(4)-55).toString()+(bankcodeText.charCodeAt(5)-55).toString()+'00'; var checkdigits=CheckDigits(bigbic); var iban = bankcodeText.substr(4,2) + checkdigits + bankcodeText.substring(0,4) + tenBank; // return iban to form $('#banknummer').val(iban); } // Switch alphanumeric BIC to numeric where A=10, B=11 etc and create new string from the first 4 characters function convertBic(bankText) { var bankcodeText = bankText var bicomzet1=(bankcodeText.charCodeAt(0)-55).toString(); var bicomzet2=(bankcodeText.charCodeAt(1)-55).toString(); var bicomzet3=(bankcodeText.charCodeAt(2)-55).toString(); var bicomzet4=(bankcodeText.charCodeAt(3)-55).toString(); return bicomzet1+bicomzet2+bicomzet3+bicomzet4; } function CheckDigits(bigbic) { var checkdigits='00';//checkdigits 2 digits var modulo=''; //long string (bigbic)for calculating checkdigits //This string gets a modulo calculation over 24 digits //modulo is done for calculating the 2 checkdigits modulo = parseInt(bigbic.substr(0,6)); modulo = modulo % 97; modulo = (1000000 * modulo) + parseInt(bigbic.substr(6,6)); modulo = modulo % 97; modulo = (1000000 * modulo) + parseInt(bigbic.substr(12,6)); modulo = modulo % 97; modulo = (1000000 * modulo) + parseInt(bigbic.substr(18,6)); modulo = modulo % 97; checkdigits = 98 - modulo; //end modulo if (checkdigits.lenght < 2) { checkdigits = '0' + checkdigits; } return checkdigits; } function elfproef (numberToCheck) { if ( numberToCheck.length < 9 ) { return true; } var sum = 0; for( i = 1; i <= numberToCheck.length; i++ ) { // Steeds een karakter pakken van positie i - 1 var amount = numberToCheck.charAt( i - 1 ); // Optelling doen sum += amount * ( 10 - i ); } // De modulo van de optelling controleren, daarnaast de lengte van de bankrekening checken if ( sum % 11 == 0 && ( numberToCheck.length == 10 || numberToCheck.length == 9 ) ) { return true; } // Als de berekening niet correct is, dan is hij false return false; } Mocht je een IBAN-nummer willen valideren kan dat natuurlijk ook : $.validator.addMethod("iban", function( value, element ) { if ( value.length < 11 || value.lenght > 34 ) { return false; } // At the end the calculations must match checkValid checkValid = value.substr(2,2); // Number should now be the bankaccountnumber with leading zero's var startNumber = value.length - 10 // we take the last string of 10 characters. var tenNumber = value.substr(startNumber,10); var cleanTenNumber = parseInt(tenNumber); // quick way to delete leading zeroes var ibanText = value.substr(4,4); var bic = ibanText+value.substr(0,1)+value.substr(1,1); var bigIban=convertBic(ibanText)+tenNumber+(value.charCodeAt(0)-55).toString()+(value.charCodeAt(1)-55).toString()+'00'; var checkDigits = CheckDigits(bigIban); if (checkDigits == checkValid) { if (elfproef(cleanTenNumber.toString())) { if(jQuery.inArray(bic,babic) == -1){ $('#antwoordGoed').hide(); return false; } else { $('#antwoordGoed').show(); return true; } } } $('#antwoordGoed').hide(); return false; }, "Ongeldig IBANnummer"); Het voorbeeld werkt alleen met Nederlands banknummers omdat alleen de codes van Nederlandse banken hierin zijn opgenomen. Voor de volledige uitleg verwijs ik je naar http://nl.wikipedia.org/wiki/International_Bank_Account_Number#Landspecifieke_regels Voor de popup heb ik gebruik gemaakt van Fancybox. Klik hier om de source code te downloaden.