Example #1
0
 /**
  * Send request to VAT validation service and return validation result
  *
  * @param string $countryCode
  * @param string $vatNumber
  * @param string $requesterCountryCode
  * @param string $requesterVatNumber
  *
  * @return DataObject
  */
 public function checkVatNumber($countryCode, $vatNumber, $requesterCountryCode = '', $requesterVatNumber = '')
 {
     // Default response
     $gatewayResponse = new DataObject(['is_valid' => false, 'request_date' => '', 'request_identifier' => '', 'request_success' => false, 'request_message' => __('Error during VAT Number verification.')]);
     if (!extension_loaded('soap')) {
         $this->logger->critical(new LocalizedException(__('PHP SOAP extension is required.')));
         return $gatewayResponse;
     }
     if (!$this->canCheckVatNumber($countryCode, $vatNumber, $requesterCountryCode, $requesterVatNumber)) {
         return $gatewayResponse;
     }
     try {
         $soapClient = $this->createVatNumberValidationSoapClient();
         $requestParams = [];
         $requestParams['countryCode'] = $countryCode;
         $requestParams['vatNumber'] = str_replace([' ', '-'], ['', ''], $vatNumber);
         $requestParams['requesterCountryCode'] = $requesterCountryCode;
         $requestParams['requesterVatNumber'] = str_replace([' ', '-'], ['', ''], $requesterVatNumber);
         // Send request to service
         $result = $soapClient->checkVatApprox($requestParams);
         $gatewayResponse->setIsValid((bool) $result->valid);
         $gatewayResponse->setRequestDate((string) $result->requestDate);
         $gatewayResponse->setRequestIdentifier((string) $result->requestIdentifier);
         $gatewayResponse->setRequestSuccess(true);
         if ($gatewayResponse->getIsValid()) {
             $gatewayResponse->setRequestMessage(__('VAT Number is valid.'));
         } else {
             $gatewayResponse->setRequestMessage(__('Please enter a valid VAT number.'));
         }
     } catch (\Exception $exception) {
         $gatewayResponse->setIsValid(false);
         $gatewayResponse->setRequestDate('');
         $gatewayResponse->setRequestIdentifier('');
     }
     return $gatewayResponse;
 }