Jump to content

Echec systématique de la vérification numéro de TVA. Problème de config ?


Recommended Posts

Bonjour à tous,

 

J'obtiens un échec systématique de la vérification du numéro de tva avec le module vatnumber (Numéro de Tva Européen).

Le message d'erreur lorsque j'essaie d'enregistrer une adresse avec un numéro de tva est :

 "VAT number validation service unavailable"

 

Dans les logs apache, j'ai 3 lignes d'erreur identiques séparées de 5 secondes (les XX sont pour anonymiser) :

[Tue Sep 17 11:11:13 2013] [error] [client XX.XX.XX.XX] PHP Warning:  file_get_contents(http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=FR&iso=FR&vat=XXX): failed to open stream: HTTP request failed!  in XXX/modules/vatnumber/vatnumber.php on line 127, referer: https://XXX/adresse
[Tue Sep 17 11:11:18 2013] [error] [client XX.XX.XX.XX] PHP Warning:  file_get_contents(http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=FR&iso=FR&vat=XXX): failed to open stream: HTTP request failed!  in XXX/modules/vatnumber/vatnumber.php on line 127, referer: https://XXX/adresse
[Tue Sep 17 11:11:23 2013] [error] [client XX.XX.XX.XX] PHP Warning:  file_get_contents(http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=FR&iso=FR&vat=XXX): failed to open stream: HTTP request failed!  in XXX/modules/vatnumber/vatnumber.php on line 127, referer: https://XXX/adresse

 

L'url de vérification (http://ec.europa...) est correcte et répond bien si je l'ouvre depuis le serveur avec wget.

 

Je suspecte un problème de configuration de la sécurité de php (suhosin) mais je ne trouve pas ce qui bloque.

 

Merci par avance de vos lumières !

 

Paul

Link to comment
Share on other sites

  • 4 months later...

Bonjour

je déterre ce topic resté sans réponse sur le sujet du module de vérification du numéro de TVA

 

je viens d'activer le module et ... Le service de validation du numéro de TVA est indisponible

 

après quelques recherches pas de solution fonctionnelle

 

si un aimable tech de Prestashop peux venir à notre secours

 

merci

bien cordialement

Natacha Courcelles

Link to comment
Share on other sites

Re

après avoir cherché de tous les cotés j'ai pas trouvé de réponse

 

c'est mon technicien hébergeur qui a trouvé cette méthode

 

voici donc la fonction réécrite avec curl (vérifiez que Curl est installé sur votre serveur) et qui fonctionne

	public static function WebServiceCheck($vatNumber)
	{
		if (empty($vatNumber))
			return array();
		$vatNumber = str_replace(' ', '', $vatNumber);
		$prefix = substr($vatNumber, 0, 2);
		if (array_search($prefix, self::getPrefixIntracomVAT()) === false)
			return array(Tools::displayError('Invalid VAT number'));
		$vat = substr($vatNumber, 2);
		$url = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=".urlencode($prefix)."&iso=".urlencode($prefix)."&vat=".urlencode($vat)."";

		@ini_set('default_socket_timeout', 2);
		for ($i = 0; $i < 3; $i++)
		{
		       $curl = curl_init();
			curl_setopt($curl, CURLOPT_URL, $url);
			curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0");
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
			$pageRes=curl_exec($curl);
			curl_close($curl);

			if ($pageRes)
			{
				if (preg_match('/invalid VAT number/i', $pageRes))
				{
					@ini_restore('default_socket_timeout');
					return array(Tools::displayError('VAT number not found'));
				}
				else if (preg_match('/valid VAT number/i', $pageRes))
				{
					@ini_restore('default_socket_timeout');
					return array();
				}
				else
					++$i;
			}
			else
				sleep(1);
		}
		@ini_restore('default_socket_timeout');
		return array(Tools::displayError('VAT number validation service unavailable'));
	}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...