Module: CreditCardChecks
- Included in:
- Paypal
- Defined in:
- lib/ruby-paypal/credit_card_checks.rb
Overview
Performs a series of credit card number checks.
Instance Method Summary collapse
-
#card_type_check(type, number) ⇒ Object
Perform checks on credit card numbers with reference to the length of the credit card number and the type of credit card.
-
#luhn_check(number) ⇒ Object
Perform Luhn check on a credit card number.
Instance Method Details
#card_type_check(type, number) ⇒ Object
Perform checks on credit card numbers with reference to the length of the credit card number and the type of credit card. Refer to en.wikipedia.org/wiki/Credit_card_number
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ruby-paypal/credit_card_checks.rb', line 32 def card_type_check(type, number) validity = false case type.upcase when "VISA" validity = true if (number.length == 16 or number.length = 13) and number[0,1] == "4" when "MASTERCARD" validity = true if (number.length == 16) and (52..55).include?(number[0,2].to_i) when "AMEX" validity = true if (number.length == 16) and ['34', '37'].include?(number[0,2]) when "DISCOVER" validity = true if (number.length == 16) and (number[0,2] == "65" or number[0,4] == "6011") when "SWITCH" # TODO checks for Switch cards validity = true when "SOLO" # TODO checks for Solo cards validity = true else raise "Invalid card type entered" end return validity end |
#luhn_check(number) ⇒ Object
Perform Luhn check on a credit card number. Refer to en.wikipedia.org/wiki/Luhn_algorithm
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ruby-paypal/credit_card_checks.rb', line 7 def luhn_check(number) num = 0 number.length.times { |p| position = number.length - p - 1 if position % 2 == 0 then doubled = number[position,1].to_i * 2 if doubled > 9 then num = num + doubled.to_s[0,1].to_i + doubled.to_s[1,1].to_i else num = num + doubled.to_i end else num = num + number[position,1].to_i end } if num.to_i % 10 == 0 then return true else return false end end |