Validation du numéro de TVA VIES

quelqu'un sait comment intégrer un formulaire sur notre site web pour valider les VIES? - Je trouver des informations permettant de le valider sur le site internet de l'Union Européenne.

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

et ce qui m'intéresse est de valider directement à partir de la forme des données de paiement de mon site web.

Merci.

24
demandé sur Minucioso 2012-02-06 13:35:45

9 réponses

ce site Web envoie un formulaire HTML ordinaire à un serveur.

la solution la plus simple est de passer les paramètres dans L'URL et d'utiliser file_get_contents pour obtenir la réponse.

la réponse peut alors être analysée pour extraire l'information que vous voulez. Pas testé, mais l'idée:

$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;
5
répondu Mariusz Jamro 2012-02-06 10:02:30

en fait, la base de données VIES peut être interrogée via leur API.

Ils ne soutiennent que le protocole SOAP, mais cela devrait être suffisant.

Voici un exemple simple:

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

voici le WSDL:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

il y a plusieurs fournisseurs D'API qui sont basés sur l'original, mais le fournissent en utilisant des protocoles différents. Simplement dit, Ils agissent comme des traducteurs-en utilisant JSON avec votre application et connectez-vous avec SOAP à L'API d'origine. Ceux-ci ont un problème majeur avec le délai de connexion.

il y a des moments où la base de données VIES répond lentement, ce qui demande plus de temps pour retourner une réponse. Cela devrait être pris en considération lors de la conception de votre application.

84
répondu Nikola Petkanski 2014-06-18 16:44:57

Si, pour quelques raisons qui vous ne pouvez pas utiliser de SAVON sur votre serveur (pas disponible, peu importe), puis file_get_contents est votre ami.

La mise en œuvre ci-dessous ne dépend pas sur le SAVON, le Roulage, le parseur xml (Simple ou pas). C'est le code PHP standard qui devrait fonctionner sur N'importe quelle version PHP que vous pouvez avoir.

la fonction renvoie La suite articles:

  • country code
  • vatNumber
  • requestDate
  • valide
  • nom
  • adresse

eh Bien, j'espère que cela aide :-)

<?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]*)<\//';
    $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' ) );
?>
19
répondu Eugen Mihailescu 2015-04-29 22:48:24

voici un script de validation basé sur javascript avec regex + modulo par pays:

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

lien de Téléchargement: http://www.braemoor.co.uk/software/downloads/jsvat.zip

utiliser webservices n'est parfois pas une option.

Voir aussi les ports PHP pour la TVA de L'UE validation:

2
répondu lubosdz 2014-07-03 14:00:22

vous pouvez utiliser maintenant js lib pour la validation européenne VAT:

jsvat-petite bibliothèque pour vérifier la validité du numéro de TVA de L'UE

basé sur braemoor vat lib, mais réécrire avec des standarts js modernes (braemoor, for exapmpe stil use .eval()) et ajouté à bower et npm registre. Aussi avec des tests unitaires.

bower i jsvat --save

ou

npm i jsvat --save

1
répondu Sergei Panfilov 2016-02-18 04:18:15

j'ai besoin de ruby, donc voici mon code

  • gem install savon
  • ajouter cette méthode à votre contrôleur

    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
    
1
répondu Ivan Stojkovic 2016-05-21 11:50:31

I used the REST service at http://vatid.eu, mais puisqu'ils ont été bloqués par VIES( je suppose en raison du grand nombre de requêtes), Je suis passé à http://apilayer.net/.

le plan libre est de 100 demandes par mois, donc j'ai mis en place une petite cache et je génère ma propre table de numéros de TVA valides (renouvelable chaque année), donc je ne dépense pas les demandes vérifiant le même numéro de TVA plus d'une fois. Convient à mes besoins ;)

1
répondu Tarrakis 2017-02-15 13:50:05

il y a aussi une API pour la base de données VIES. https://vatlayer.com/documentation.

je cherche un travail pour partager les informations d'adresse. Maintenant tu peux l'avoir mais c'est une corde.

0
répondu Wouter Schoofs 2016-12-27 08:11:09

il s'agit d'un paquet de compositeur, qui enveloppe le service web VIES. Vous pouvez utiliser ce rapide et facile: https://github.com/drahosistvan/vatvalidation

0
répondu ISTI 2017-11-04 19:51:53