danielebarbaro / laravel-vat-eu-validator
A simple package that validates EU VAT numbers against the central ec.europa.eu database
Fund package maintenance!
danielebarbaro
Requires
- php: ^8.2
- ext-openssl: *
- ext-soap: *
- illuminate/contracts: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- driftingly/rector-laravel: ^1.2
- friendsofphp/php-cs-fixer: ^3.59
- orchestra/testbench: ^8.1|^9.1
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.4.7
- phpstan/phpstan-deprecation-rules: ^1.2
- phpstan/phpstan-phpunit: ^1.4
- phpunit/phpunit: ^10.5|^11.0
- rector/rector: ^1.1
README
laravel-vat-eu-validator is a package inspired from vat.php to validate a VAT number for businesses based in Europe.
For Laravel 5,6,7 use tag 0.5.4
For Laravel 7,8,9 use tag 1.20
Installation
You can install the package via composer:
composer require danielebarbaro/laravel-vat-eu-validator
The package will automatically register itself.
Usage
use Danielebarbaro\LaravelVatEuValidator\Facades\VatValidatorFacade as VatValidator; // Check VAT format and VIES existence VatValidator::validate('IT12345'); // Check VAT format VatValidator::validateFormat('IT12345678901'); // Check VAT existence VatValidator::validateExistence('IT12345678901');
Validation
The package registers two new validation rules.
vat_number
The field under validation must be a valid and existing VAT number.
vat_number_exist
The field under validation check id is an existing VAT number.
vat_number_format
The field under validation must be a valid VAT number.
use Illuminate\Http\Request; class Controller { public function foo(Request $request) { $request->validate([ 'bar_field' => [new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumber()], ]); $request->validate([ 'bar_field' => [new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumberExist()], ]); $request->validate([ 'bar_field' => [new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumberFormat()], ]); } }
Alternatively, you can also use the Rule
directly.
use Illuminate\Http\Request; use Danielebarbaro\LaravelVatEuValidator\Rules; class Controller { public function foo(Request $request) { $request->validate([ 'bar_field' => [ new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumber() ], 'bar_field' => [ new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumberExist() ], 'bar_field' => [ new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumberFormat() ], ]); } }
Translations
Most of the displayed strings are defined in the vatEuValidator::validation
translation files. The package ships with a few supported locales, but if yours is not yet included we would greatly appreciate a PR.
If not already published, you can edit or fill the translation files using php artisan vendor:publish --tag=laravel-vat-eu-validator-lang
, this will copy our translation files to your app's vendor/laravelVatEuValidator
"lang" path.
Testing
composer test
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email barbaro.daniele@gmail.com instead of using the issue tracker.
Credits
Contributors
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.