我正在尝试编写增值税验证功能,该功能会检查增值税号码是否有效。
目前我已经有了这个
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"') . ' ' . (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 :(得分: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扩展程序,它也应该有效。
编辑:正如Michas所说,很难在不知道你的意思的情况下找到你的原始代码的问题&#34;没有工作&#34;。您可以通过声明error_reporting(E_ALL)
或curl_error($session)
来尝试获取有关该问题的更多信息。
可能的原因:未正确安装或配置cURL,或者代理或防火墙阻止了您的请求。虽然我建议的代码会消除第一个代码,但第二个可能也可以使用它,具体取决于您的设置。
编辑2:添加了简单的代理配置