View Source Simple Card Brand
Determine a payment card's brand from the leading digits and length of the account number (PAN).
Uses the rules documented on Wikipedia.
Card Brands
- American Express (:americanexpress)
- BORICA (:borica)
- China T-Union (:chinatunion)
- China UnionPay (:chinaunionpay)
- Dankort (:dankort)
- Diners Club (:dinersclub)
- Diners Club International (:dinersclubinternational)
- Discover (:discover)
- GPN (:gpn)
- Humo (:humo)
- InstaPayment (:instapayment)
- InterPayment (:interpayment)
- JCB: (:jcb)
- LankaPay: (:lankapay)
- Maestro (:maestro)
- Maestro UK (:maestrouk)
- Mastercard (:mastercard)
- Mir (:mir)
- Napas (:napas)
- RuPay (:rupay)
- Troy (:troy)
- UATP (:uatp)
- UkrCard (:ukrcard)
- UzCard (:uzcard)
- Verve (:verve)
- Visa (:visa)
- Visa Electron (:visaelectron)
Conflicts
The Wikipedia page has several account number range conflicts that need to be researched.
65 is always recognized as Discover. Overrides RuPay and Troy.
6759 is documented as both Maestro and Maestro UK.
- Recognized as Maestro UK.
54 is documented as both Diners Club in the US and Mastercard.
- Recognized as Diners Club.
Mix Commands
- mix format
- mix test
- mix coveralls.html
- mix credo --strict
- mix dialyzer
- mix inch
- Documentation coverage test.
- Use as guidance, not pass/fail CI.
- Fails to note documentation on new
defguard
macro.
- mix hex.outdated
- mix hex.audit
- mix deps.update XXX
- mix sobelow --config
- Better suited for Phoenix apps. Included for future reference.
Installation
TO DO
If available in Hex, the package can be installed
by adding simplecardbrand
to your list of dependencies in mix.exs
:
def deps do
[
{:simplecardbrand, "~> 0.1.0"}
]
end
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/simplecardbrand.
Adopting Elixir
I'm using this project as a reference for various quality control tools. As a result, there's a lot of code quality tools for such a small single-file module. Using the Adopting Elixir recommendations.