Package org.jpos.core

Class CardHolder

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, Loggeable

    public class CardHolder
    extends java.lang.Object
    implements java.lang.Cloneable, java.io.Serializable, Loggeable
    Since:
    jPOS 1.1 This class is called 'CardHolder', but a better name could have been 'Card' At some point we'll deprecate this one and create a new 'Card' class.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String exp
      Expiration date (YYMM)
      protected java.lang.String pan
      Primary Account Number
      protected java.lang.String securityCode
      Optional security code (CVC, CVV, Locale ID, wse)
      protected java.lang.String track1
      Track1 Data
      protected java.lang.String trailer
      Track2 trailler
    • Constructor Summary

      Constructors 
      Constructor Description
      CardHolder()
      creates an empty CardHolder
      CardHolder​(java.lang.String track2)
      creates a new CardHolder based on track2
      CardHolder​(java.lang.String pan, java.lang.String exp)
      creates a new CardHolder based on pan and exp
      CardHolder​(ISOMsg m)
      Construct a CardHolder based on content received on field 35 (track2) or field 2 (PAN) + field 14 (EXP)
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void dump​(java.io.PrintStream p, java.lang.String indent)
      dumps CardHolder basic information
      by default we do not dump neither track1/2 nor securityCode for security reasons.
      boolean equals​(java.lang.Object obj)  
      java.lang.String getBIN()
      Get the traditional 6-digit BIN (Bank Issuer Number) from the PAN
      java.lang.String getBIN​(int len)
      Get the first len digits from the PAN.
      java.lang.String getEXP()
      Get Expiration Date
      java.lang.String getNameOnCard()  
      java.lang.String getPAN()  
      java.lang.String getSecurityCode()  
      java.lang.String getServiceCode()  
      java.lang.String getTrack1()  
      java.lang.String getTrack2()  
      java.lang.String getTrailer()  
      java.lang.String getTrailler()
      Deprecated.
      use getTrailer()
      int hashCode()  
      boolean hasSecurityCode()  
      boolean hasTrack1()  
      boolean hasTrack2()  
      boolean isExpired()
      Y2K compliant expiration check
      boolean isExpired​(java.util.Date currentDate)
      Y2K compliant expiration check
      boolean isValidCRC()  
      static boolean isValidCRC​(java.lang.String p)  
      void parseTrack2​(java.lang.String s)
      extract pan/exp/trailler from track2
      boolean seemsManualEntry()  
      void setEXP​(java.lang.String exp)
      Set Expiration Date
      void setPAN​(java.lang.String pan)
      Sets Primary Account Number
      void setSecurityCode​(java.lang.String securityCode)
      assigns securityCode to this CardHolder object
      void setTrack1​(java.lang.String track1)  
      void setTrailer​(java.lang.String trailer)  
      void setTrailler​(java.lang.String trailer)
      Deprecated.
      use setTrailer
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • pan

        protected java.lang.String pan
        Primary Account Number
      • exp

        protected java.lang.String exp
        Expiration date (YYMM)
      • trailer

        protected java.lang.String trailer
        Track2 trailler
      • securityCode

        protected java.lang.String securityCode
        Optional security code (CVC, CVV, Locale ID, wse)
      • track1

        protected java.lang.String track1
        Track1 Data
    • Method Detail

      • setTrack1

        public void setTrack1​(java.lang.String track1)
        Parameters:
        track1 - card's track1
      • getTrack1

        public java.lang.String getTrack1()
        Returns:
        the track1
      • hasTrack1

        public boolean hasTrack1()
        Returns:
        true if we have a track1
      • getNameOnCard

        public java.lang.String getNameOnCard()
        Returns:
        the Name written on the card (from track1)
      • getTrack2

        public java.lang.String getTrack2()
        Returns:
        reconstructed track2 or null
      • hasTrack2

        public boolean hasTrack2()
        Returns:
        true if we have a (may be valid) track2
      • setSecurityCode

        public void setSecurityCode​(java.lang.String securityCode)
        assigns securityCode to this CardHolder object
        Parameters:
        securityCode - Card's security code
      • getSecurityCode

        public java.lang.String getSecurityCode()
        Returns:
        securityCode (or null)
      • hasSecurityCode

        public boolean hasSecurityCode()
        Returns:
        true if we have a security code
      • getTrailler

        public java.lang.String getTrailler()
        Deprecated.
        use getTrailer()
        Returns:
        trailer (may be null)
      • setTrailler

        public void setTrailler​(java.lang.String trailer)
        Deprecated.
        use setTrailer
        Set Card's trailer
        Parameters:
        trailer - Card's trailer
      • getTrailer

        public java.lang.String getTrailer()
      • setTrailer

        public void setTrailer​(java.lang.String trailer)
      • getPAN

        public java.lang.String getPAN()
        Returns:
        Primary Account Number
      • getBIN

        public java.lang.String getBIN​(int len)
        Get the first len digits from the PAN. Can be used for the newer 8-digit BINs, or some arbitrary length.
        Returns:
        len-digit bank issuer number
      • getBIN

        public java.lang.String getBIN()
        Get the traditional 6-digit BIN (Bank Issuer Number) from the PAN
        Returns:
        6-digit bank issuer number
      • getEXP

        public java.lang.String getEXP()
        Get Expiration Date
        Returns:
        card expiration date
      • isExpired

        public boolean isExpired()
        Y2K compliant expiration check
        Returns:
        true if card is expired (or expiration is invalid)
      • isExpired

        public boolean isExpired​(java.util.Date currentDate)
        Y2K compliant expiration check
        Parameters:
        currentDate - current system's date
        Returns:
        true if card is expired (or expiration is invalid)
      • isValidCRC

        public static boolean isValidCRC​(java.lang.String p)
      • dump

        public void dump​(java.io.PrintStream p,
                         java.lang.String indent)
        dumps CardHolder basic information
        by default we do not dump neither track1/2 nor securityCode for security reasons.
        Specified by:
        dump in interface Loggeable
        Parameters:
        p - a PrintStream usually suplied by Logger
        indent - ditto
        See Also:
        Loggeable
      • getServiceCode

        public java.lang.String getServiceCode()
        Returns:
        ServiceCode (if available) or a String with three blanks
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object