【发布时间】:2026-01-18 01:45:01
【问题描述】:
我在link 有这个有趣的功能 这适用于检查欧盟的增值税号。但我无法与我的注册表单集成。我想在 js 函数中转换它,在发送注册数据之前使用它,我正在尝试但我做不到,同一个可以帮助我吗?
链接中的代码是这个
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 ( 'http://ec.europa.eu/taxation_customs/vies/services/checkVatService', 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;
}
$arr = viesCheckVAT($countryCode, $vatNumber);
if ($arr[valid] == fasle) {
...
} else {
...
}
现在我真的很喜欢使用这个 servis true JavaScript。这样我可以在通过 PHP 发送数据之前检查数字。
如何在 JS 中编写此函数? 对于数组没有问题,但我可以进行 SOAP 调用吗?
【问题讨论】:
-
我建议您将其保留为 PHP 并在发送表单之前通过 ajax / fetch 从您的注册表单中调用它,而不是将上述内容转换为 javascript(这将是很多工作)?
-
根据我的经验,此验证服务通常不起作用。不要使表单提交依赖于它。我总是事后检查。
-
不,这是 权限。您必须使用它,但不要依赖它始终有效。它不是。我google了一下,确实找到了一个JS版本:jsvat.
-
好吧,我只是用谷歌搜索了一下,看起来不错。我会按照 RamRaider 说的做:不要费心把它转换成 JS,如果你真的需要在 JS 中使用 AJAX。
-
对增值税验证 PHP 脚本执行 AJAX 调用的最简单方法是使用 JQuery。请参阅:jQuery Ajax。有些人坚持不使用 JQuery,这绝对是可能的:Pure JavaScript ajax
标签: javascript php function soap