class BankCardInfo

Constants

Banks
CardType

Public Class Methods

bank_card_info(card_number=nil) click to toggle source

获取银行卡号的相关信息

# File lib/bank_card_info.rb, line 1808
def self.bank_card_info(card_number=nil)
  return {} if card_number.nil?
  return {} if !card_number.is_a?(String)
  card_number = card_number.strip
  # 匹配符合正则的银行卡元素
  card_hash = BankCardInfo::Banks.find do |bank|
    bank[:patterns].any? do |obj|
      self.is_match(card_number, obj[:reg])
    end
  end
  if card_hash
    card_type_hash = card_hash[:patterns].find do |obj|
      self.is_match(card_number, obj[:reg])
    end
    card_type = card_type_hash[:cardType]
    card_type_name = BankCardInfo::CardType[card_type.to_sym]
    {
      bank_name: card_hash[:bankName],
      bank_code: card_hash[:bankCode],
      card_number: card_number,
      card_type: card_type,
      card_type_name: card_type_name
    }
  else
    {}
  end
end
banks() click to toggle source

获取支持的银行卡

# File lib/bank_card_info.rb, line 1837
def self.banks
  BankCardInfo::Banks.map{|obj| {bank_name: obj[:bankName], bank_code: obj[:bankCode]}}
end
is_match(card_number, regexp) click to toggle source

卡号是否匹配正则

# File lib/bank_card_info.rb, line 1802
def self.is_match(card_number, regexp)
  obj = card_number.match(regexp)
  !obj.to_s.empty?
end