becklyn / vatin-bundle
Symfony bundle for the VATIN library
Installs: 60
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 10
Type:symfony-bundle
Requires
- php: >=7.4
- ddeboer/vatin: ^2.2.2
- symfony/config: ^v5.4.3 || ^v6.0.3
- symfony/dependency-injection: ^v5.4.3 || ^v6.0.3
- symfony/http-kernel: ^v5.4.3 || ^v6.0.3
- symfony/validator: ^v5.4.3 || ^v6.0.3
Requires (Dev)
- doctrine/annotations: ^1.13.2
- roave/security-advisories: dev-latest
- symfony/framework-bundle: ^v5.4.3 || ^v6.0.3
- symfony/phpunit-bridge: ^5.4.3 || ^6.0.3
- symfony/yaml: ^v5.4.3 || ^v6.0.3
README
A Symfony bundle for the VATIN library.
Installation
This library is available on Packagist:
composer require ddeboer/vatin-bundle
Then add the bundle to your application:
// app/AppKernel.php public function registerBundles() { return [ ... new Ddeboer\VatinBundle\DdeboerVatinBundle(), ... ]; }
Usage
Validate number format
Use the validator to validate a property on your models. For instance using annotations:
use Ddeboer\VatinBundle\Validator\Constraints\Vatin; class Company { /** * @Vatin */ protected $vatNumber;
Symfony’s validator will now check whether $vatNumber
has a valid VAT number
format. For more information, see Symfony’s documentation.
Validate number existence
Additionally, you can check whether the VAT number is in use:
use Ddeboer\VatinBundle\Validator\Constraints\Vatin; /** * @Vatin(checkExistence=true) */ protected $vatNumber;
The validator will now check the VAT number against the VAT Information Exchange System (VIES) SOAP web service. This service’s availability is rather unreliable, so it’s a good idea to catch the case where it’s unreachable:
use Symfony\Component\Validator\Exception\ValidatorException; try { if ($validator->isValid()) { // Happy flow } } catch (ValidatorException $e) { // VAT could not be validated because VIES service is unreachable }
Using the services directly
You can also use this bundle’s services directly. Validate a VAT number’s format:
$validator = $container->get('ddeboer_vatin.vatin_validator'); $bool = $validator->isValid('NL123456789B01');
Additionally, check whether the VAT number is in use:
$bool = $validator->isValid('NL123456789B01', true);
To interact with the VIES webservice:
$vies = $container->get('ddeboer_vatin.vies.client'); $checkVatResponse = $vies->checkVat('NL', '123456789B01');
More information
For more information, see the VATIN library’s documentation.