class PaystackCard

Constants

MAX_AMERICAN_EXPRESS_CARD_LENGTH
MAX_DINERS_CARD_LENGTH
MAX_NORMAL_CARD_LENGTH
PATTERN_AMERICAN_EXPRESS
PATTERN_DINERS_CLUB
PATTERN_DISCOVER
PATTERN_JCB
PATTERN_MASTERCARD
PATTERN_VISA

Attributes

addressCountry[R]
addressLine1[R]
addressLine2[R]
addressLine3[R]
addressLine4[R]
addressPostalCode[R]
cardCountry[R]
cardIssuer[R]
cvc[R]
email[R]
expiryMonth[R]
expiryYear[R]
name[R]
number[R]

Public Class Methods

getCardType(number) click to toggle source
# File lib/paystack/objects/card.rb, line 35
def PaystackCard.getCardType(number)
        if(number == nil)
                return 'invalid'
        end
        if(number =~ PATTERN_VISA) != nil
                return 'visa'
        end

        if(number =~ PATTERN_MASTERCARD) != nil
                return 'mastercard'
        end

        if(number =~ PATTERN_AMERICAN_EXPRESS) != nil
                return 'american_express'
        end

        if(number =~ PATTERN_DINERS_CLUB)
                return 'diners'
        end
        if(number =~ PATTERN_DISCOVER)
                return 'discover'
        end
        if(number =~ PATTERN_JCB)
                return 'jcb'
        end
        return 'unknown'              
end
new(args = {}) click to toggle source
# File lib/paystack/objects/card.rb, line 17
def initialize(args = {})
        @name = Utils.nullifyString(args[:name])
        @number = Utils.nullifyString(args[:number])
        @cvc = Utils.nullifyString(args[:cvc])
        @expiryMonth =  Utils.nullifyString(args[:expiryMonth])
        @expiryYear = Utils.nullifyString(args[:expiryYear])
        @cardIssuer = PaystackCard.getCardType(@number)
end

Public Instance Methods

isValidCVC() click to toggle source
# File lib/paystack/objects/card.rb, line 90
def isValidCVC
        if(@cvc.eql?(""))
                return false
        end
        cvc = @cvc.strip
        cvc_len = cvc.length

        validLength = ((cvc_len >= 3 && cvc_len <= 4) || (@cardIssuer.eql?('american_express') && cvc_len == 4) ||(!@cardIssuer.eql?('american_express') && cvc_len == 3))

end
isValidCard() click to toggle source
# File lib/paystack/objects/card.rb, line 26
def isValidCard()
if (@cvc != nil) 
        return isValidNumber() && isValidExpiryDate() && isValidCVC()
else 
        return isValidNumber() && isValidExpiryDate()
end
    
end
isValidExpiryDate() click to toggle source
# File lib/paystack/objects/card.rb, line 101
def isValidExpiryDate()
        return !(@expiryMonth == nil || @expiryYear == nil) && Utils.hasCardExpired(@expiryYear, @expiryMonth);
end
isValidNumber() click to toggle source
# File lib/paystack/objects/card.rb, line 68
def isValidNumber
        if(Utils.isEmpty(@number)) 
                return false
        end
        formatted_number = @number.gsub(/\s+|-/) {|s| '' }.strip
        
        if(Utils.isEmpty(formatted_number) || !Utils.isWholePositiveNumber(formatted_number) || !Utils.isLuhnValidNumber(formatted_number))

                return false
        end
        if PaystackCard.getCardType(formatted_number).eql?('diners') 
                return (formatted_number.length == MAX_DINERS_CARD_LENGTH)
        end

        if PaystackCard.getCardType(formatted_number).eql?('american_express') 
                return (formatted_number.length == MAX_AMERICAN_EXPRESS_CARD_LENGTH)
        end

        return (formatted_number.length == MAX_NORMAL_CARD_LENGTH)

end