ISO 7812ISO 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 dimana 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 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 identifierMII major industry identifier pengaturan pada digit pertama dari penomoran menurut ISO 7812 adalah pernyataan tujuan penggunaan atau pemakaian dari kartu adalah sbb.:[1]
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 Numberbeberapa contoh issuer identifiers dibawah ini [2]
Nomor rekeningKeberadaan nomor rekening berjumlah maksimum 7 angka digit berada pada urutan kedua dari belakang setelah digit pengkontrolan. Digit pengkontrolanAngka digit pengkontrolan check digit berada pada urutan paling akhir dan dihitung berdasarkan perumusan Algoritme Luhn.[3] '''''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 pulaPranala luar
|