DragonBe\Vies\Vies::validateVat PHP Method

validateVat() public method

Validates a given country code and VAT number and returns a \DragonBe\Vies\CheckVatResponse object
public validateVat ( string $countryCode, string $vatNumber, string $requesterCountryCode = null, string $requesterVatNumber = null ) : CheckVatResponse
$countryCode string The two-character country code of a European member country
$vatNumber string The VAT number (without the country identification) of a registered company
$requesterCountryCode string The two-character country code of a European member country
$requesterVatNumber string The VAT number (without the country identification) of a registered company
return CheckVatResponse
    public function validateVat($countryCode, $vatNumber, $requesterCountryCode = null, $requesterVatNumber = null)
    {
        if (!array_key_exists($countryCode, self::listEuropeanCountries())) {
            throw new ViesException(sprintf('Invalid country code "%s" provided', $countryCode));
        }
        $vatNumber = self::filterVat($vatNumber);
        if (!$this->validateVatSum($countryCode, $vatNumber)) {
            $params = new \StdClass();
            $params->countryCode = $countryCode;
            $params->vatNumber = $vatNumber;
            $params->requestDate = new \DateTime();
            $params->valid = false;
            return new CheckVatResponse($params);
        }
        $requestParams = array('countryCode' => $countryCode, 'vatNumber' => $vatNumber);
        if ($requesterCountryCode && $requesterVatNumber) {
            if (!array_key_exists($requesterCountryCode, self::listEuropeanCountries())) {
                throw new ViesException(sprintf('Invalid requestor country code "%s" provided', $requesterCountryCode));
            }
            $requesterVatNumber = self::filterVat($requesterVatNumber);
            $requestParams['requesterCountryCode'] = $requesterCountryCode;
            $requestParams['requesterVatNumber'] = $requesterVatNumber;
        }
        try {
            $response = $this->getSoapClient()->__soapCall('checkVatApprox', array($requestParams));
        } catch (SoapFault $e) {
            $message = sprintf('Back-end VIES service cannot validate the VAT number "%s%s" at this moment. ' . 'The service responded with the critical error "%s". This is probably a temporary problem. ' . 'Please try again later.', $countryCode, $vatNumber, $e->getMessage());
            throw new ViesServiceException($message);
        }
        return new CheckVatResponse($response);
    }

Usage Example

Example #1
3
 /**
  * Test to see the country code is rejected if not existing in the EU
  *
  * @dataProvider badCountryCodeProvider
  * @covers \DragonBe\Vies\Vies::validateVat
  * @expectedException \DragonBe\Vies\ViesException
  * @param $code
  */
 public function testExceptionIsRaisedForNonEuropeanUnionCountryCodesRequester($code)
 {
     $vies = new Vies();
     $vies->validateVat('BE', '0123.456.749', $code, 'does not matter');
 }
All Usage Examples Of DragonBe\Vies\Vies::validateVat