Skip to content

中国大陆身份证、增值税发票、工商营业执照/统一信用代码的验证类库

License

Notifications You must be signed in to change notification settings

fdstar/NumberValidators

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NumberValidators

中国大陆证件、号码的验证类库,目前包含身份证、增值税发票、工商注册码/统一社会信用代码

NuGet version (NumberValidators) GitHub license

.NET版本支持

目前支持以下版本:.NET40.NET Standard 2.0

规范约束IValidator<out T>

所有验证均需实现IValidator<out T>接口,其中泛型T具备如下约束:必须继承自ValidationResult且需有无参构造函数,该接口定义了以下规范:

  • 随机生成一个符合规则的号码 string GenerateRandomNumber();
  • 验证号码是否正确 T Validate(string number);

实际验证会在此接口基础上定义额外的规范约束,且每种证件号码均默认提供ValidatorHelper类,用于统一验证该类型的证件号码,根据实际调用的IValidator<out T>实现,返回的ValidationResult也可能会有所不同,所有Helper类都提供了AddDefaultValidator来解决Net Core下反射生成实例会产生异常问题。

PS:如果验证结果IsValid为True,那么相应的ValidationResult会包含该号码可识别的所有信息,以身份证为例,返回结果会包含行政区划(即出生登记地)、出生日期、登记序列号、校验位

简单的使用示例

1、大陆居民身份证

默认提供ID15Validator(15位一代身份证)以及ID18Validator(18位二代身份证)两种类型的身份证验证,具体使用代码如下:

//一代身份证验证,虽然目前未过期的一代身份证(未办理二代,如果办理了,有效期内的一代也就失效了)的仍然有效,但很多地方使用上已不被承认
valid = new ID15Validator().Validate(idNumber); 
//二代身份证验证
valid = new ID18Validator().Validate(idNumber); 
IDValidatorHelper.AddDefaultValidator(); //进行默认注册
valid = IDValidatorHelper.Validate(idNumber, ignoreCheckBit: false); //无法确认是哪种身份证时可以通过该类进行验证

2、增值税发票

默认提供VATCode10Validator(增值税专用发票、增值税普通发票、货物运输业增值税专用发票)以及VATCode12Validator(增值税普通发票[卷票]、增值税电子普通发票、区块链发票、增值税电子专用发票)两种长度的增值税发票验证(货物运输业增值税专用发票按国家规定目前已停用),具体使用代码如下:

valid = new VATCode10Validator().Validate(vatCode); //增值税专用发票、增值税普通发票、货物运输业增值税专用发票验证
valid = new VATCode12Validator().Validate(vatCode); //增值税普通发票[卷票]、增值税电子普通发票验证
valid = VATCodeValidatorHelper.Validate(vatCode, minYear: 2012); //无法确认是哪种增值税发票时可以通过该类进行验证

注意VATCode10Validator返回验证结果为VATCode10ValidationResultVATCode12Validator返回验证结果为VATCode12ValidationResultVATCodeValidatorHelper返回验证结果为VATCodeValidationResult(实际也可能为VATCode10ValidationResultVATCode12ValidationResult

3、工商注册码/统一社会信用代码

默认提供RegistrationNo15Validator(工商注册码)以及RegistrationNo18Validator(法人和其他组织统一社会信用代码),具体使用代码如下:

valid = new RegistrationNo15Validator().Validate(code); //工商注册码验证
valid = new RegistrationNo18Validator().Validate(code); //法人和其他组织统一社会信用代码验证
valid = RegistrationNoValidatorHelper.Validate(code, validLimit: null); //无法确认是工商注册码还是法人和其他组织统一社会信用代码时可以通过该类进行验证

注意RegistrationNo15Validator返回验证结果为RegistrationNo15ValidationResultRegistrationNo18Validator返回验证结果为RegistrationNo18ValidationResultRegistrationNoValidatorHelper返回验证结果为RegistrationNoValidationResult(实际也可能为RegistrationNo15ValidationResultRegistrationNo18ValidationResult

Release History

2021-04-14

  • Release v1.0.3 增加电子专票支持,Helper增加注册方法临时处理Core下反射生成实例失败问题

2019-08-06

  • Release v1.0.2 增加区块链电子发票支持

2019-08-05

  • Release v1.0.1 增加12位增值税普通发票支持,增加支持增值税电子发票通行费支持

2018-05-09

  • Release v1.0.0

About

中国大陆身份证、增值税发票、工商营业执照/统一信用代码的验证类库

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages