vies vat validar tributaria page nif iva intracomunitario europea europa consultar consulta comprobacion cif averiguar agencia aeat php javascript jquery html
http://www.braemoor.co.uk/software/downloads/jsvat.zip

php - vat - Validación del número de IVA VIES



vat europa (9)

Aquí hay un script de validación basado en javascript de validación de pila completa con regex + módulo por país :

http://www.braemoor.co.uk/software/vat.shtml

Enlace de descarga: http://www.braemoor.co.uk/software/downloads/jsvat.zip

El uso de servicios web en algún momento no es una opción.

También vea los puertos PHP para la validación del IVA de la UE:

¿Alguien sabe cómo incorporar un formulario en nuestro sitio web para validar el VIES? Encuentro información para validarla a través del sitio web de la Unión Europea.

http://ec.europa.eu/taxation_customs/vies/vieshome.do

Y lo que me interesa es validar directamente desde la forma de pago de datos de mi sitio web.

Gracias.


En realidad, la base de datos VIES se puede consultar a través de su API.
Solo admiten el protocolo SOAP, pero eso debería ser suficiente.

Aquí hay un ejemplo simple:

$client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"); var_dump($client->checkVat(array( ''countryCode'' => $countryCode, ''vatNumber'' => $vatNo )));

Aquí está el WSDL: http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

Existen múltiples proveedores de API que se basan en la original, pero la proporcionan utilizando diferentes protocolos. En pocas palabras, actúan como traductores: utilizan json con su aplicación y se conectan utilizando SOAP a la API original. Estos tienen un gran problema con el tiempo de espera de conexión.

Hay momentos en los que la base de datos de VIES está respondiendo lentamente, lo que requiere más tiempo para devolver una respuesta. Esto debe tenerse en cuenta al diseñar su aplicación.



Este sitio web envía un formulario HTML ordinario a un servidor.

La solución más sencilla es pasar los parámetros en la URL y usar file_get_contents para obtener la respuesta.

Luego se puede analizar la respuesta para extraer la información que desee. No probado, pero muestra la idea:

$country1 = ''PL''; $country2 = ''PL''; $vatnum1 = ''123456''; $vatnum2 = ''789012''; //Prepare the URL $url = ''http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=''.$country1.''&iso=''.$country1.''&vat=''.$vatnum1.''&name=&companyType=&street1=&postcode=&city=&requesterMs=''.$country2.''&requesterIso=''.$country2.''&requesterVat=''.$vatnum2.''&BtnSubmitVat=Verify''; $response = file_get_contents($url); // Do sth with the response echo $response;


Necesitaba esto en ruby, así que aquí está mi código

  • gema instalar savon
  • agrega este método a tu controlador

    def validateVAT # create a client for the service client = Savon.client(wsdl: ''http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'') response = client.call(:check_vat, message: {countryCode: params[:country_code], vatNumber: params[:vat]}) render json: { valid: response.body[:check_vat_response][:valid] }, status: :ok end



Si por alguna razón no puede usar SOAP en su servidor (no disponible, cualquiera), file_get_contents es su amigo.

La implementación a continuación no depende de SOAP, Curl, XMLParser (Simple o no). Es un código PHP estándar que debería funcionar en cualquier versión de PHP que pueda tener.

La función devuelve los siguientes elementos:

  • código de país
  • Número de valor agregado
  • Fecha de solicitud
  • válido
  • nombre
  • dirección

Bueno, espero que ayude :-)

<?php DEFINE ( ''VIES_URL'', ''http://ec.europa.eu/taxation_customs/vies/services/checkVatService'' ); /** * VIES VAT number validation * * @author Eugen Mihailescu * * @param string $countryCode * @param string $vatNumber * @param int $timeout */ function viesCheckVAT($countryCode, $vatNumber, $timeout = 30) { $response = array (); $pattern = ''/<(%s).*?>([/s/S]*)<///1/''; $keys = array ( ''countryCode'', ''vatNumber'', ''requestDate'', ''valid'', ''name'', ''address'' ); $content = "<s11:Envelope xmlns:s11=''http://schemas.xmlsoap.org/soap/envelope/''> <s11:Body> <tns1:checkVat xmlns:tns1=''urn:ec.europa.eu:taxud:vies:services:checkVat:types''> <tns1:countryCode>%s</tns1:countryCode> <tns1:vatNumber>%s</tns1:vatNumber> </tns1:checkVat> </s11:Body> </s11:Envelope>"; $opts = array ( ''http'' => array ( ''method'' => ''POST'', ''header'' => "Content-Type: text/xml; charset=utf-8; SOAPAction: checkVatService", ''content'' => sprintf ( $content, $countryCode, $vatNumber ), ''timeout'' => $timeout ) ); $ctx = stream_context_create ( $opts ); $result = file_get_contents ( VIES_URL, false, $ctx ); if (preg_match ( sprintf ( $pattern, ''checkVatResponse'' ), $result, $matches )) { foreach ( $keys as $key ) preg_match ( sprintf ( $pattern, $key ), $matches [2], $value ) && $response [$key] = $value [2]; } return $response; } print_r ( viesCheckVAT ( ''RO'', ''19386256'' ) ); ?>


También hay una API para la base de datos VIES. https://vatlayer.com/documentation .

Estoy buscando una solución para dividir la información de la dirección. Ahora puedes conseguirlo pero es una cadena.


Utilicé el servicio REST en http://vatid.eu , pero como fueron bloqueados por VIES (supongo que debido al alto volumen de solicitudes), he cambiado a http://apilayer.net/ .

El plan gratuito es de 100 solicitudes por mes, así que implementé un pequeño caché y generé mi propia tabla de números de IVA válidos (renovables cada año), por lo que no invierto solicitudes para verificar el mismo número de IVA más de una vez. Se adapta a mis necesidades;)