CardValidator 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package CardValidator --version 1.2.0
NuGet\Install-Package CardValidator -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CardValidator" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CardValidator --version 1.2.0
#r "nuget: CardValidator, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CardValidator as a Cake Addin
#addin nuget:?package=CardValidator&version=1.2.0

// Install CardValidator as a Cake Tool
#tool nuget:?package=CardValidator&version=1.2.0

CardValidator

Description

This nuget contains performant credit card validator based on card number.

It checks number length and numeric prefixes according to issuer (AmericanExpress, ChinaUnionPay, Dankort, DinersClub, Discover, Hipercard, JCB, Laser, Maestro, MasterCard, RuPay, Switch, Visa). For respective issuers it checks if it is valid to Luhn algorythm.

This nuget focuses on the performance.

Examples

16 number Visa from String

string visaCardNumber = "4205 2245 9865 9069";
CreditCard visaCard = new CreditCard(visaCardNumber);
Console.WriteLine(visaCard);

15 number AmEx from Span

ReadOnlySpan<char> americanExpressCardNumberSpan = "347554301215479".AsSpan();
CreditCard amExCard = new CreditCard(americanExpressCardNumberSpan);
Console.WriteLine(amExCard);

16 number AmEx without length check

string americanExpressCardLonger = "3475543012154790";
CreditCard amExCard2 = new CreditCard(americanExpressCardLonger, true);
Console.WriteLine(amExCard2);

Invalid card number characters

try
{
    string invalidCardNumberChars = "ABC123456";
    CreditCard invalidCharsCard = new CreditCard(invalidCardNumberChars);
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    // ---> Invalid card number. Numbers and " " (space) allowed.
}

Luhn check

Valid Luhn for Visa
Console.WriteLine(visaCard.IsValid(CardIssuer.Visa));
// ---> True
Valid Luhn for at least one of Visa or MasterCard
Console.WriteLine(visaCard.IsValid(CardIssuer.Visa, CardIssuer.MasterCard));
// ---> True
Invalid Luhn for MasterCard
Console.WriteLine(visaCard.IsValid(CardIssuer.MasterCard));
// ---> False    

Changelog

  • 1.2.0
    • Added vaidation helpers methods (IsValidNumber, IsValidFormat)
  • 1.1.1
    • MasterCard specification fixed
    • Added demo examples
  • 1.1.0 - Performance enhancement:
    • IsValid(params CardIssuer[] issuers) method perf enhancement - 5.5x faster and half memory allocation then in v1.0.0
    • Faster creation of CreditCard object (Load() method optimized)
    • Removed redundant string allocation in CreditCard CTOR
  • 1.0.0 - Init version - card validation
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.0 170 6/5/2023
1.2.0 122 6/2/2023
1.1.1 119 5/28/2023
1.1.0 118 5/22/2023
1.0.0 125 5/21/2023