Description
Gem adds validator to check whether or not a given number actually falls within the ranges of possible numbers prior to performing such verification, and, as such, CreditCardValidations simply verifies that the credit card number provided is well-formed.
More info about card BIN numbers http://en.wikipedia.org/wiki/Bank_card_number
credit_card_validations alternatives and similar gems
Based on the "E-Commerce and Payments" category.
Alternatively, view credit_card_validations alternatives based on common mentions on social networks and blogs.
-
Active Merchant
Active Merchant is a simple payment abstraction library extracted from Shopify. The aim of the project is to feel natural to Ruby users and to abstract as many parts as possible away from the user to offer a consistent interface across all supported gateways.
Judoscale - Save 47% on cloud hosting with autoscaling that just works

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of credit_card_validations or a related project?
README
CreditCardValidations
Gem adds validator to check whether or not a given number actually falls within the ranges of possible numbers prior to performing such verification, and, as such, CreditCardValidations simply verifies that the credit card number provided is well-formed.
More info about card BIN numbers http://en.wikipedia.org/wiki/Bank_card_number
Installation
Add this line to your application's Gemfile:
$ gem 'credit_card_validations'
And then execute:
$ bundle
Or install it yourself as:
$ gem install credit_card_validations
Usage
The following issuing institutes are accepted:
Name | Key |
---|---|
American Express | :amex |
China UnionPay | :unionpay |
Dankort | :dankort |
Diners Club | :diners |
Elo | :elo |
Discover | :discover |
Hipercard | :hipercard |
JCB | :jcb |
Maestro | :maestro |
MasterCard | :mastercard |
MIR | :mir |
Rupay | :rupay |
Solo | :solo |
Switch | :switch |
Visa | :visa |
The following are supported with with plugins
Name | Key |
---|---|
Diners Club US | :diners_us |
EnRoute | :en_route |
Laser | :laser |
Examples using string monkey patch
require 'credit_card_validations/string'
'5274 5763 9425 9961'.credit_card_brand #=> :mastercard
'5274 5763 9425 9961'.credit_card_brand_name #=> "MasterCard"
'5274 5763 9425 9961'.valid_credit_card_brand?(:mastercard, :visa) #=> true
'5274 5763 9425 9961'.valid_credit_card_brand?(:amex) #=> false
'5274 5763 9425 9961'.valid_credit_card_brand?('MasterCard') #=> true
ActiveModel support
only for certain brands
class CreditCardModel
attr_accessor :number
include ActiveModel::Validations
validates :number, credit_card_number: {brands: [:amex, :maestro]}
end
for all known brands
validates :number, presence: true, credit_card_number: true
Examples using CreditCardValidations::Detector class
number = "4111111111111111"
detector = CreditCardValidations::Detector.new(number)
detector.brand #:visa
detector.visa? #true
detector.valid?(:mastercard,:maestro) #false
detector.valid?(:visa, :mastercard) #true
detector.issuer_category #"Banking and financial"
Also You can add your own brand rules to detect other credit card brands/types
passing name,length(integer/array of integers) and prefix(string/array of strings) Example
CreditCardValidations.add_brand(:voyager, {length: 15, prefixes: '86'})
voyager_test_card_number = '869926275400212'
CreditCardValidations::Detector.new(voyager_test_card_number).brand #:voyager
CreditCardValidations::Detector.new(voyager_test_card_number).voyager? #true
Remove brands also supported
CreditCardValidations::Detector.delete_brand(:maestro)
Check luhn
CreditCardValidations::Detector.new(@credit_card_number).valid_luhn?
#or
CreditCardValidations::Luhn.valid?(@credit_card_number)
Generate credit card numbers that pass validation
CreditCardValidations::Factory.random(:amex)
# => "348051773827666"
CreditCardValidations::Factory.random(:maestro)
# => "6010430241237266856"
Plugins
require 'credit_card_validations/plugins/en_route'
require 'credit_card_validations/plugins/laser'
require 'credit_card_validations/plugins/diners_us'
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
*Note that all licence references and agreements mentioned in the credit_card_validations README section above
are relevant to that project's source code only.