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