Module: ActiveMerchant::Billing::CreditCardMethods::ClassMethods
- Defined in:
- lib/active_merchant/billing/credit_card_methods.rb
Instance Method Summary collapse
-
#brand?(number) ⇒ Boolean
Returns a string containing the brand of card from the list of known information below.
- #card_companies ⇒ Object
- #electron?(number) ⇒ Boolean
- #first_digits(number) ⇒ Object
- #last_digits(number) ⇒ Object
- #mask(number) ⇒ Object
-
#matching_brand?(number, brand) ⇒ Boolean
Checks to see if the calculated brand matches the specified brand.
- #matching_type?(number, brand) ⇒ Boolean
- #type?(number) ⇒ Boolean
-
#valid_number?(number) ⇒ Boolean
Returns true if it validates.
Instance Method Details
#brand?(number) ⇒ Boolean
Returns a string containing the brand of card from the list of known information below.
392 393 394 395 396 397 398 399 400 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 392 def brand?(number) return 'bogus' if valid_test_mode_card_number?(number) CARD_COMPANY_DETECTORS.each do |company, func| return company.dup if func.call(number) end return nil end |
#card_companies ⇒ Object
387 388 389 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 387 def card_companies CARD_COMPANY_DETECTORS.keys end |
#electron?(number) ⇒ Boolean
402 403 404 405 406 407 408 409 410 411 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 402 def electron?(number) return false unless [16, 19].include?(number&.length) # don't recalculate for each range bank_identification_number = first_digits(number).to_i ELECTRON_RANGES.any? do |range| range.include?(bank_identification_number) end end |
#first_digits(number) ⇒ Object
418 419 420 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 418 def first_digits(number) number&.slice(0, 6) || '' end |
#last_digits(number) ⇒ Object
422 423 424 425 426 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 422 def last_digits(number) return '' if number.nil? number.length <= 4 ? number : number.slice(-4..-1) end |
#mask(number) ⇒ Object
428 429 430 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 428 def mask(number) "XXXX-XXXX-XXXX-#{last_digits(number)}" end |
#matching_brand?(number, brand) ⇒ Boolean
Checks to see if the calculated brand matches the specified brand
433 434 435 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 433 def matching_brand?(number, brand) brand?(number) == brand end |
#matching_type?(number, brand) ⇒ Boolean
437 438 439 440 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 437 def matching_type?(number, brand) ActiveMerchant.deprecated 'CreditCard#matching_type? is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#matching_brand? instead.' matching_brand?(number, brand) end |
#type?(number) ⇒ Boolean
413 414 415 416 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 413 def type?(number) ActiveMerchant.deprecated 'CreditCard#type? is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand? instead.' brand?(number) end |
#valid_number?(number) ⇒ Boolean
Returns true if it validates. Optionally, you can pass a card brand as an argument and make sure it is of the correct brand.
References:
380 381 382 383 384 385 |
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 380 def valid_number?(number) valid_test_mode_card_number?(number) || (valid_card_number_length?(number) && valid_card_number_characters?(brand?(number), number) && valid_by_algorithm?(brand?(number), number)) end |