Adsense

Thursday, 8 August 2013

Credit card validation in Java

Credit card validation in Java:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CreditCard {
 //Credit Card Types
   public static final int INVALID = -1;
   public static final int MASTERCARD = 1;
   public static final int AMEX = 2;
   public static final int VISA = 0;
  
   boolean k = validCC("4111111111111111");
 
     private static final String [] cardNames = { "Visa" ,
      "Mastercard",
      "American Express",          
      };

 
      /* Validate Credit Card number */
      public static  boolean validCC(String number)  {
      
        
      int CardID;
      if ( (CardID = getCardID(number)) != -1)
      return validCCNumber(number);
      return false;
      }

      public static int getCardID(String number) {
      int valid = INVALID;

      String digit1 = number.substring(0,1);
      String digit2 = number.substring(0,2);
      String digit3 = number.substring(0,3);
      String digit4 = number.substring(0,4);

      if (isNumber(number)) {
      /* ----
      ** VISA prefix=4
      ** if so then length=13 or 16
      */
      if (digit1.equals("4")) {
      if (number.length() == 13 || number.length() == 16)
      valid = VISA;
      }
      /* ----------
      ** MASTERCARD prefix= 51 ... 55
      ** and the String length= 16
      */
      else if (digit2.compareTo("51")>=0 && digit2.compareTo("55")<=0) {
      if (number.length() == 16)
      valid = MASTERCARD;
      }
      /* ----
      ** AMEX prefix=34 or 37
      ** and String length=15
      */
      else if (digit2.equals("34") || digit2.equals("37")) {
      if (number.length() == 15)
      valid = AMEX;
      }    
    
    
      }
      return valid;

      /* ----
      ** DISCOVER card prefix = 60
      ** string Length = 16
      ** left as an exercise ...
      */

      }
      public static boolean isNumber(String n) {
      try {
      double d = Double.valueOf(n).doubleValue();
      return true;
      }
      catch (NumberFormatException e) {
      e.printStackTrace();
      return false;
      }
      }

      public static String getCardName(int id) {
      return (id > -1 && id < cardNames.length ? cardNames[id] : "");
      }

      public static boolean validCCNumber(String n) {
      try {
      int j = n.length();
      String [] s1 = new String[j];
      for (int i=0; i < n.length(); i++) s1[i] = "" + n.charAt(i);
      int checksum = 0;
      for (int i=s1.length-1; i >= 0; i-= 2) {
      int k = 0;
      if (i > 0) {
      k = Integer.valueOf(s1[i-1]).intValue() * 2;
      if (k > 9) {
      String s = "" + k;
      k = Integer.valueOf(s.substring(0,1)).intValue() +
      Integer.valueOf(s.substring(1)).intValue();
      }
      checksum += Integer.valueOf(s1[i]).intValue() + k;
      }
      else
      checksum += Integer.valueOf(s1[0]).intValue();
      }
      return ((checksum % 10) == 0);
      }
      catch (Exception e) {
      e.printStackTrace();
      return false;
      }
      }

      public static void main(String args[]) throws Exception {
      String aCard = "";

      if (args.length > 0)
      aCard = args[0];
      else {
      BufferedReader input =
      new BufferedReader(new InputStreamReader(System.in));
      System.out.print("Enter the Card number : ");
      aCard = input.readLine();
      }
      if (getCardID(aCard) > -1) {
      System.out.println("This is a Valid Credit Card");
      System.out.println("and the Card Type is " + getCardName(getCardID(aCard)));
      }
      else
      System.out.println("Sorry this is an invalid Credit Card Number");
      }
       
}


Output:

Enter the Card number :
4111111111111111
This is a Valid Credit Card and the Card Type is Visa


No comments:

Post a Comment