2013-06-19 3 views
4

У меня есть немецкий «Bankleitzahl» и номер учетной записи, теперь я бы хотел рассчитать соответствующий IBAN с помощью javascript, поэтому мне не нужно вводить данные своего банковского счета на ненадежном веб-сайте.вычислить европейский iban с javascript

Как бы рассчитать это с помощью javascript на моем собственном клиенте?

+1

Что вы имеете в виду «вычисления IBAN "? – fvu

+0

Обычно «конвертирует» что-то в IBAN, но не «вычисляет» его. Вы хотите его преобразовать? Каков формат ввода? –

+0

@fvu проверить это http://www.westpac.com.au/faq/iban-number/ –

ответ

0

Я думаю, вам нужно сначала знать или понять, как он его вычисляет. я имею в виду, знаю, какое уравнение для вычисления вычислений, однако быстрый поиск в Google дает мне это:

Я знаю, что они не являются javascript, как вы хотите, но вы можете проверить их и попытаться вычислить его вычисления (они с открытым исходным кодом и бесплатно) и, возможно, тогда вы можете сделать свою собственную библиотеку JS для него и позже люди просят вас помочь им

IBAN Verification in C#, Excel Automation Add-in, Word SmartTag

Node.js IBAN Check Service

c_iban

3

Итак, если вы хотите восстановить код IBAN с использованием разных национальных компонентов старого стиля, вы можете использовать Wikipedia article в качестве базы. В частности, немецкий IBAN построен следующим образом:

DEkk bbbb bbbb cccc cccc cc 

где

  • кк это код проверки
  • BBBBBBBB является БИК
  • cccccccccc это номер банковского счета

Примечание: точный формат зависит от страны, пример выше для Германия

Tom's Cafe предлагает full JavasScript implementation, который вы можете использовать в своей собственной заявке, потому что расчет суммы чеков не является тривиальным.

5

Я нашел проект в github https://github.com/arhs/iban.js, который делает проверку IBAN очень простой.

Это что-то вроде:

<script src="iban.js"></script> 
<script> 
    // the API is now accessible from the window.IBAN global object 
    IBAN.isValid('hello world'); // false 
    IBAN.isValid('BE68539007547034'); // true 
</script> 

ли под лицензией MIT, так что вы можете проверить, как это сделать проверку и попытаться использовать его для создания вашего IBAN.

2

Основываясь на работе http://toms-cafe.de/iban/iban.js я разработал свою версию Проверка IBAN.

Вы можете изменить поддержку страны, изменив переменную CODE_LENGTHS

Вот моя реализация:

function alertValidIBAN(iban) { 
    alert(isValidIBANNumber(iban)); 
} 
/* 
* Returns 1 if the IBAN is valid 
* Returns 0 if the IBAN's length is not as should be (for CY the IBAN Should be 28 chars long starting with CY) 
* Returns any other number (checksum) when the IBAN is invalid (check digits do not match) 
*/ 
function isValidIBANNumber(input) { 
    var CODE_LENGTHS = { 
     AD: 24, AE: 23, AT: 20, AZ: 28, BA: 20, BE: 16, BG: 22, BH: 22, BR: 29, 
     CH: 21, CR: 21, CY: 28, CZ: 24, DE: 22, DK: 18, DO: 28, EE: 20, ES: 24, 
     FI: 18, FO: 18, FR: 27, GB: 22, GI: 23, GL: 18, GR: 27, GT: 28, HR: 21, 
     HU: 28, IE: 22, IL: 23, IS: 26, IT: 27, JO: 30, KW: 30, KZ: 20, LB: 28, 
     LI: 21, LT: 20, LU: 20, LV: 21, MC: 27, MD: 24, ME: 22, MK: 19, MR: 27, 
     MT: 31, MU: 30, NL: 18, NO: 15, PK: 24, PL: 28, PS: 29, PT: 25, QA: 29, 
     RO: 24, RS: 22, SA: 24, SE: 24, SI: 19, SK: 24, SM: 27, TN: 24, TR: 26 
    }; 
    var iban = String(input).toUpperCase().replace(/[^A-Z0-9]/g, ''), // keep only alphanumeric characters 
      code = iban.match(/^([A-Z]{2})(\d{2})([A-Z\d]+)$/), // match and capture (1) the country code, (2) the check digits, and (3) the rest 
      digits; 
    // check syntax and length 
    if (!code || iban.length !== CODE_LENGTHS[code[1]]) { 
     return false; 
    } 
    // rearrange country code and check digits, and convert chars to ints 
    digits = (code[3] + code[1] + code[2]).replace(/[A-Z]/g, function (letter) { 
     return letter.charCodeAt(0) - 55; 
    }); 
    // final check 
    return mod97(digits); 
} 
function mod97(string) { 
    var checksum = string.slice(0, 2), fragment; 
    for (var offset = 2; offset < string.length; offset += 7) { 
     fragment = String(checksum) + string.substring(offset, offset + 7); 
     checksum = parseInt(fragment, 10) % 97; 
    } 
    return checksum; 
} 

Здесь также работает fiddle

Смежные вопросы