Module: ActiveMerchant::Billing::CreditCardMethods::ClassMethods

Defined in:
lib/active_merchant/billing/credit_card_methods.rb

Instance Method Summary collapse

Instance Method Details

#brand?(number) ⇒ Boolean

Returns a string containing the brand of card from the list of known information below.

Returns:

  • (Boolean)


391
392
393
394
395
396
397
398
399
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 391

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_companiesObject



386
387
388
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 386

def card_companies
  CARD_COMPANY_DETECTORS.keys
end

#electron?(number) ⇒ Boolean

Returns:

  • (Boolean)


401
402
403
404
405
406
407
408
409
410
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 401

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



417
418
419
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 417

def first_digits(number)
  number&.slice(0, 6) || ''
end

#last_digits(number) ⇒ Object



421
422
423
424
425
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 421

def last_digits(number)
  return '' if number.nil?

  number.length <= 4 ? number : number.slice(-4..-1)
end

#mask(number) ⇒ Object



427
428
429
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 427

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

Returns:

  • (Boolean)


432
433
434
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 432

def matching_brand?(number, brand)
  brand?(number) == brand
end

#matching_type?(number, brand) ⇒ Boolean

Returns:

  • (Boolean)


436
437
438
439
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 436

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

Returns:

  • (Boolean)


412
413
414
415
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 412

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:

Returns:

  • (Boolean)


379
380
381
382
383
384
# File 'lib/active_merchant/billing/credit_card_methods.rb', line 379

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