欧盟增值税号验证指南

在欧盟内部使用电子支付时,商业客户需要验证增值税号(VAT)。这是因为欧盟的税收法规提供了一种称为反向收费制度的规定,如果客户位于另一个欧盟国家并且能够提供一个有效的增值税号,意味着他是一个商业客户,那么增值税率可能会转嫁给客户。更多信息可以在这里找到。

增值税号的验证是必要的,因为欧盟的税收法规提供了一种称为反向收费制度的规定,如果客户位于另一个欧盟国家并且能够提供一个有效的增值税号,意味着他是一个商业客户,那么增值税率可能会转嫁给客户。更多信息可以在这里找到。

使用官方Web服务验证增值税号

欧洲委员会的税务和海关联盟总司提供了一个Web服务,可以在以下网址找到:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl。

创建Web服务代理类

首先,打开Visual Studio命令提示符。可以在开始菜单下的Microsoft Visual Studio 2010/Visual Studio Tools条目中找到它。浏览到想要创建代理类的目录,并在命令提示符中输入以下命令:

wsdl http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

现在应该看到了以下屏幕:

这将创建一个名为checkVatServices.cs的文件,使用欧盟发布的.wsdl文件实现了Web服务代理。现在已经完成了Web服务代理类的创建。快速开发,对吧?

使用这个类

要使用这个类,只需将其导入项目,并添加对System.Web.Services.dll库的引用,这是.NET SDK的一部分。现在可以创建一个checkVatService类的实例并调用它的checkVat(...)方法。

创建的文件实现了一个类对象,其中定义了.wsdl XML定义文件中的方法。此外,还会找到在应用程序中异步实现Web服务的方法。有关Web服务异步使用的更多信息,可以阅读这篇有趣的CodeProject文章。

使用包装类

为了轻松使用这个Web服务,实现了一个包装类以及一个演示项目,以示例展示如何使用。

在本文附加的zip文件中,可以找到一个名为ViesVatCheck的小包装类,当调用其CheckVat()方法时,它会为奥地利增值税号添加一个前导字符。

ViesVatCheck类实现了两个输入和四个输出属性,如下表所示:

属性 描述 方向
CountryCode 增值税号的国家代码 输入
VATNumber 要检查的增值税号 输入
Name 增值税号所属公司的名称 输出
Address 公司的地址 输出
IsValid 如果增值税号可以验证,则为true,否则为false 输出
RetDate Web服务返回的请求日期 输出

第一个输入属性是要检查的增值税号的国家代码。这个属性可以是下面的国家代码之一:

国家 国家代码
奥地利 AT
比利时 BE
保加利亚 BG

如果仔细查看欧盟发布的增值税服务FAQ,会发现其中一些国家并不总是可以像FAQ中Q11所描述的那样检查增值税号。因此,这个服务可以用来预先检查增值税号,但可能仍然需要手动检查无效的增值税号。

要使用包装类,只需下载zip文件并构建VATChecker项目。这将创建一个可以在项目中使用的程序集。此外,演示项目包含一个小型WPF项目,使用ViesVatChecker类。

可以在以下图表中看到演示应用程序的屏幕:

private void button1_Click(object sender, RoutedEventArgs e) { if (comboBoxCountries.SelectedItem == null) { comboBoxCountries.Focus(); return; } if (string.IsNullOrEmpty(textBoxVatNumber.Text)) { textBoxVatNumber.Focus(); return; } ViesVatCheck check = new ViesVatCheck(); check.VATNumber = textBoxVatNumber.Text; check.CountryCode = ((ComboBoxItem)comboBoxCountries.SelectedItem).Tag.ToString(); bool bValid = check.CheckVat(); if (bValid) { imageValid.Visibility = System.Windows.Visibility.Visible; imageInvalid.Visibility = System.Windows.Visibility.Hidden; labelAddress.Visibility = System.Windows.Visibility.Visible; labelCompanyName.Visibility = System.Windows.Visibility.Visible; labelRequestDate.Visibility = System.Windows.Visibility.Visible; labelAddress.Content = check.Address; labelCompanyName.Content = check.Name; labelRequestDate.Content = check.RetDate.ToShortDateString(); textBoxVatNumber.Text = check.VATNumber; } else { imageValid.Visibility = System.Windows.Visibility.Hidden; imageInvalid.Visibility = System.Windows.Visibility.Visible; labelAddress.Visibility = System.Windows.Visibility.Hidden; labelCompanyName.Visibility = System.Windows.Visibility.Hidden; labelRequestDate.Visibility = System.Windows.Visibility.Hidden; } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485