Функция проверки номера НДС не работает

Я пытаюсь написать функцию проверки номера чана, которая проверяет номер чана, чтобы убедиться, что он действителен.

В настоящее время у меня есть это

function tep_check_vatnum($countries_id, $vatnum) {
$country = tep_get_countries_with_iso_codes($countries_id);

$iso = $country['countries_iso_code_2'];

if($iso == "GB"){
return false;
} else {

$url = "http://isvat.appspot.com/$iso/$vatnum";

$session = curl_init();

curl_setopt($session, CURLOPT_URL, $url);
// curl_setopt($session, CURLOPT_HTTPGET, 1);
// curl_setopt($session, CURLOPT_HEADER, false);
// curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/xml', 'Content-Type: application/xml'));
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($session);
//echo "<!-- NOTE:" . $response . "-->";
curl_close($session);
if($response == "true"){
return true;
} else {
return false;
}
}
}

Сервис, которым я пользуюсь http://isvat.appspot.com работает, но не работает.

РЕДАКТИРОВАТЬ

Хм, не повезло. Не работая, он продолжает выдавать ошибку, в которой говорится, что номер чана недействителен. В форме создания учетной записи у меня есть этот код.

<?php echo tep_draw_input_field('vatnum', '', 'class="input"') . '&nbsp;' . (tep_not_null(ENTRY_COMPANY_TEXT) ? '<span class="inputRequirement">' . ENTRY_COMPANY_TEXT . '</span>': ''); ?>


if (is_numeric($country) == false) {
$error = true;

$messageStack->add('create_account', ENTRY_COUNTRY_ERROR);
} else {
if(strlen($vatnum) != 0){
if(is_numeric($vatnum) == false || tep_check_vatnum($country, $vatnum) == false){
$error = true;

$messageStack->add('create_account', "VAT Number is not a valid EU, non-UK VAT no.");
}
}

0

Решение

Я думаю, может быть проблема с вызовом cURL. Хорошей новостью является то, что вам, вероятно, не нужно. 😉 Дайте это попробовать:

function tep_check_vatnum($countries_id, $vatnum) {
$country = tep_get_countries_with_iso_codes($countries_id);
$iso = $country['countries_iso_code_2'];

if($iso == "GB"){
return false;
} else {
$url = "http://isvat.appspot.com/$iso/$vatnum";

$context = stream_context_create(array(
'http' => array(
'proxy' => 'http://PROXY_IP:PROXY_PORT'
),
));

$fp = fopen($url,'r',$context);
$response = fgets($fp);
fclose($fp);

//echo "<!-- NOTE:" . $response . "-->";

if($response == "true"){
return true;
} else {
return false;
}
}
}

Это должно работать, даже если у вас не включено расширение cURL.

Изменить: Как сказал Михас, трудно найти проблему с вашим исходным кодом, не зная, что вы подразумеваете под «не работает». Вы можете попытаться получить больше информации о проблеме, указав error_reporting(E_ALL) или же curl_error($session),
Возможные причины: cURL не установлен или настроен неправильно, или прокси-сервер или брандмауэр блокирует ваш запрос. В то время как код, который я предложил, устранит первый, второй может быть также примените его, в зависимости от ваших настроек.

Редактировать 2: Добавлена ​​простая конфигурация прокси

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]