package com.idega.util; /** Creditcardnumber checker * Visa <br> * MasterCard <br> * American Express <br> * Diner's Club <br> * Carte Blanche <br> * Discover <br> * en Route <br> * JCB <br> * **/ public class CreditCardChecker { public static boolean isValid(String cardnumber) throws NumberFormatException { if ((cardnumber == null) || (cardnumber.length() != 16)) { return false; } int sum = 0; int multiplier = 1; int length = cardnumber.length(); String digit; int numberProduct; for (int i = 0; i < length; i++) { digit = cardnumber.substring(length - i - 1, length - i); try { numberProduct = Integer.parseInt(digit, 10) * multiplier; } catch (NumberFormatException nfe) { return false; } if (numberProduct >= 10) { sum += (numberProduct % 10) + 1; } else { sum += numberProduct; } if (multiplier == 1) { multiplier++; } else { multiplier--; } } if ((sum % 10) == 0) { return true; } else { return false; } } }