【问题标题】:calculate european iban with javascript用 javascript 计算欧洲 iban
【发布时间】:2013-06-16 08:11:00
【问题描述】:

我有德语“Bankleitzahl”和帐号,现在我想用 javascript 计算相应的 IBAN,这样我就不必在不可信的网站上输入我的银行数据。

我将如何在我自己的客户端上使用 javascript 进行计算?

【问题讨论】:

  • “计算 IBAN”是什么意思?
  • 人们通常将某些东西“转换”为 IBAN,但不会“计算”它。你想转换它吗?输入格式是什么?
  • 检查wikipedia page“IBAN 的生成应由为帐户提供服务的银行/分行独家负责”最后有一个国家格式表。
  • @ebramtharwat 他们解释了如何在不使用 IBAN 的情况下进行国际汇款,而是使用 SWIFT 代码及其专有的 . IBAN 是您的银行提供给您的标准化银行账户 ID,它基于 here 解释的多个组件,仅此而已...

标签: javascript banking iban


【解决方案1】:

基于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

【讨论】:

    【解决方案2】:

    试试这个,

    https://stackoverflow.com/questions/21735674/iban-validation-jquery

    这将在客户端评估 IBAN..

    for jsfiddle output:
    

    http://jsfiddle.net/tamilpesu_net/LyuJ6/

    【讨论】:

      【解决方案3】:

      我在 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。

      【讨论】:

        【解决方案4】:

        因此,如果您想使用手头的不同旧式国家组件重构 IBAN 代码,您可以使用 Wikipedia article 作为基础。具体来说,德国的 IBAN 构建如下:

        DEkk bbbb bbbb cccc cccc cc
        

        在哪里

        • kk是校验码
        • bbbbbbbb是BLZ
        • cccccccccc 是帐号

        注意:具体格式取决于国家/地区,上面的示例适用于德国

        Tom's Cafe 提供了一个full JavasScript implementation,您可以在自己的应用程序中使用,因为校验和计算并不简单。

        【讨论】:

          【解决方案5】:

          我认为您首先需要知道或了解它是如何计算的。我的意思是知道用什么方法来计算,但是在谷歌上快速搜索给我的是:

          我知道它们不是你想要的 javascript,但你可以检查它们并尝试计算它的计算(它们是开源且免费的),也许你可以为它做自己的 JS 库,后来人们请你帮忙他们

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

          Node.js IBAN Check Service

          c_iban

          【讨论】:

            猜你喜欢
            • 2018-01-13
            • 1970-01-01
            • 2011-03-06
            • 2020-09-01
            • 2019-12-05
            • 2021-09-16
            • 1970-01-01
            • 2021-03-08
            • 2012-09-22
            相关资源
            最近更新 更多