ISO 7812

**ISO 7812**, pertama kali diterbitkan oleh ISO *International Organization for Standardization* pada tahun 1989, adalah mengenai pengaturan standar internasional pita magnetik kartu indentitas, kartu-2 akses, kartu ATM, dan kartu kredit. ISO 7812 disediakan dalam dua bagian, ISO 7812-1 dan ISO 7812-2. masing-2 berisikan spesifikasi lengkap di mana dapat terpakai pada penggunaannya. penomoran kartu kredit adalah bagian dari penomoran ISO 7812.

Pada ISO 7812 penggunaan satu digit untuk MII *major industry identifier*, enam digit untuk IIN *issuer identifier number*, disusul rangkaian angka dari sebuah *[[account number|nomor rekening]]*, dan satu digit kemudian dipakai untuk pengontroan. sebagian besar industri pengindentifikasi merupakan bagian dari penerbit nomor pengindentifikasi, dan besaran jumlah angka tidak lebih dari 19 digit.

## Major industry identifier
MII *major industry identifier* pengaturan pada digit pertama dari penomoran menurut ISO 7812 adalah pernyataan tujuan penggunaan atau pemakaian dari kartu adalah sbb.:

umpama [MII] *major industry identifier* adalah angka 9 maka tiga angka kemudian adalah menerangkan asal negara dengan pemakaian ketentuan dari ISO 3166-1 yang terdiri dari tiga angka.

## Issuer Identifier Number
beberapa contoh *issuer identifiers* dibawah ini 

## Nomor rekening

Keberadaan nomor rekening berjumlah maksimum 7 angka digit berada pada urutan kedua dari belakang setelah digit pengkontrolan.

## Digit pengkontrolan
Angka digit pengkontrolan check digit berada pada urutan paling akhir dan dihitung berdasarkan perumusan Algoritme Luhn.


```java
'''''Java Source Code'''''
//---------------------------------------------------------
// Checks for valid credit card number using Luhn algorithm
//---------------------------------------------------------

public abstract class LuhnCheck {

  //--------------------------------
  // Filter out non-digit characters
  //--------------------------------

  private static String getDigitsOnly (String s) {
    StringBuffer digitsOnly = new StringBuffer ();
    char c;
    for (int i = 0; i < s.length (); i++) {
      c = s.charAt (i);
      if (Character.isDigit (c)) {
        digitsOnly.append (c);
      }
    }
    return digitsOnly.toString ();
  }

  //-------------------
  // Perform Luhn check
  //-------------------

  public static boolean isValid (String cardNumber) {
    String digitsOnly = getDigitsOnly (cardNumber);
    int sum = 0;
    int digit = 0;
    int addend = 0;
    boolean timesTwo = false;

    for (int i = digitsOnly.length () - 1; i >= 0; i--) {
      digit = Integer.parseInt (digitsOnly.substring (i, i + 1));
      if (timesTwo) {
        addend = digit * 2;
        if (addend > 9) {
          addend -= 9;
        }
      }
      else {
        addend = digit;
      }
      sum += addend;
      timesTwo = !timesTwo;
    }

    int modulus = sum % 10;
    return modulus == 0;

  }

  //-----
  // Test
  //-----
```


## Referensi

## Lihat pula
* Electronic money
## Pranala luar
* Biography on the American Society for Information Science and Technology's Web site 
* Notes compiled by Susan K. Soy on "H.P. Luhn and Automatic Indexing" 
* Penerapan Standar ISO/IEC 7812-Issuer Identifikasi Number
* Badan Standardisasi Nasional