网络服务 (checkVatService) powershell
webservice (checkVatService) powershell
我想使用这个网络服务:
http://ec.europa.eu/taxation_customs/vies/services/checkVatService
方法:POST
内容类型 application/xml
这是我的要求:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<soapenv:Header/>
<soapenv:Body>
<urn:checkVat>
<urn:countryCode>ES</urn:countryCode>
<urn:vatNumber>A28017895</urn:vatNumber>
</urn:checkVat>
</soapenv:Body>
wsdl 在这里:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
如何使用 powershell 发送 xml 请求并在那里获得响应?
提前致谢。
您应该能够使用 Invoke-Webrequest
来处理它。只需将 -Method
开关设置为 POST 并提供您的 xml 作为正文
您也可以使用 New-WebServiceProxy
,我认为这是一个更优雅的解决方案。您不需要自己构建 envelope
。
Function Get-ViesVatNumber {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true,
Position=0)]
$CountryCode,
[Parameter(Mandatory=$true,
Position=1)]
$VatNumber
)
$Vies = New-WebServiceProxy -Uri "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl" -Class "checkVat"
$Valid = $false
$Name = ""
$Address = ""
$DateChecked = $Vies.checkVat([ref]$CountryCode, [ref]$VatNumber, [ref]$Valid, [ref]$Name, [ref]$Address)
$Properties = @{
'CountryCode' = $CountryCode
'VatNumber' = $VatNumber
'Valid' = $Valid
'Name' = $Name
'Address' = $Address
'DateChecked' = $DateChecked
}
$Company = New-Object -TypeName PSCustomObject -Property $Properties
Write-Output $Company
}
具有有效增值税的示例
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429375"
DateChecked : 02/08/2018 00:00:00
Name : Comm.VA ALPRO
VatNumber : 0420429375
Address : VLAMINGSTRAAT 28
8560 WEVELGEM
Valid : True
CountryCode : BE
包含无效增值税的示例
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429335"
DateChecked : 02/08/2018 00:00:00
Name : ---
VatNumber : 0420429335
Address : ---
Valid : False
CountryCode : BE
更妙的是:在 VIES 检查网站上输入您自己的增值税号时,您将收到一个咨询号(出于管理目的证明您检查时该号码有效)。
您也可以通过调用 "checkVatApprox" 网络服务而不是 "checkVat" 来请求此咨询号码。通过这样做,您需要进行以下修改(很多参数):
$Valid = $false
$Name = ""
$Address = ""
$Identifier = ""
$TraderCompanyType = ""
$TraderStreet = ""
$TraderPostcode = ""
$TraderCity = ""
$TraderNameMatch = 1
$TraderNameMatchSpecified = $false
$TraderCompanyTypeMatch = 1
$TraderCompanyTypeMatchSpecified = $false
$TraderStreetMatch =1
$TraderStreetMatchSpecified = $false
$TraderPostcodeMatch = 1
$TraderPostcodeMatchSpecified = $false
$TraderCityMatch = 1
$TraderCityMatchSpecified = $false
$RequesterCountryCode = "YourCountryCode"
$RequesterVatNumber = "YourVATNumber"
$DateChecked = $Vies.checkVatApprox([ref]$CountryCode, [ref]$VatNumber, [ref]$Name, [ref]$TraderCompanyType, [ref]$TraderStreet, [ref]$TraderPostcode, [ref]$TraderCity, $RequesterCountryCode, $RequesterVatNumber, [ref]$Valid, [ref]$Address, [ref]$TraderNameMatch, [ref]$TraderNameMatchSpecified, [ref]$TraderCompanyTypeMatch, [ref]$TraderCompanyTypeMatchSpecified, [ref]$TraderStreetMatch, [ref]$TraderStreetMatchSpecified, [ref]$TraderPostcodeMatch, [ref]$TraderPostcodeMatchSpecified, [ref]$TraderCityMatch, [ref]$TraderCityMatchSpecified, [ref]$Identifier)
请注意 $RequesterCountryCode 和 $RequesterVatNumber 不需要 [ref]。这让我在注意到这个请求之前寻找了年龄。
现在一切正常,如果你添加这个:
$Properties = @{
'CountryCode' = $CountryCode
'VatNumber' = $VatNumber
'Valid' = $Valid
'Name' = $Name
'Address' = $Address
'DateChecked' = $DateChecked
'Consultation' = $Identifier
}
您将收到以下回复:
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429375"
DateChecked : 8/13/2019 10:00:00 PM
Name : Comm.VA ALPRO
VatNumber : 0420429375
Address : VLAMINGSTRAAT 28
8560 WEVELGEM
Valid : True
CountryCode : BE
Consultation: WAPIAAAAWyQb9ELI
其他字段,如 TraderNameMatch,您也可以将它们用作响应,但据我所知,只有西班牙支持输入地址进行验证。其他国家没有。
我想使用这个网络服务:
http://ec.europa.eu/taxation_customs/vies/services/checkVatService 方法:POST 内容类型 application/xml
这是我的要求:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<soapenv:Header/>
<soapenv:Body>
<urn:checkVat>
<urn:countryCode>ES</urn:countryCode>
<urn:vatNumber>A28017895</urn:vatNumber>
</urn:checkVat>
</soapenv:Body>
wsdl 在这里:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
如何使用 powershell 发送 xml 请求并在那里获得响应?
提前致谢。
您应该能够使用 Invoke-Webrequest
来处理它。只需将 -Method
开关设置为 POST 并提供您的 xml 作为正文
您也可以使用 New-WebServiceProxy
,我认为这是一个更优雅的解决方案。您不需要自己构建 envelope
。
Function Get-ViesVatNumber {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true,
Position=0)]
$CountryCode,
[Parameter(Mandatory=$true,
Position=1)]
$VatNumber
)
$Vies = New-WebServiceProxy -Uri "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl" -Class "checkVat"
$Valid = $false
$Name = ""
$Address = ""
$DateChecked = $Vies.checkVat([ref]$CountryCode, [ref]$VatNumber, [ref]$Valid, [ref]$Name, [ref]$Address)
$Properties = @{
'CountryCode' = $CountryCode
'VatNumber' = $VatNumber
'Valid' = $Valid
'Name' = $Name
'Address' = $Address
'DateChecked' = $DateChecked
}
$Company = New-Object -TypeName PSCustomObject -Property $Properties
Write-Output $Company
}
具有有效增值税的示例
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429375"
DateChecked : 02/08/2018 00:00:00
Name : Comm.VA ALPRO
VatNumber : 0420429375
Address : VLAMINGSTRAAT 28
8560 WEVELGEM
Valid : True
CountryCode : BE
包含无效增值税的示例
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429335"
DateChecked : 02/08/2018 00:00:00
Name : ---
VatNumber : 0420429335
Address : ---
Valid : False
CountryCode : BE
更妙的是:在 VIES 检查网站上输入您自己的增值税号时,您将收到一个咨询号(出于管理目的证明您检查时该号码有效)。
您也可以通过调用 "checkVatApprox" 网络服务而不是 "checkVat" 来请求此咨询号码。通过这样做,您需要进行以下修改(很多参数):
$Valid = $false
$Name = ""
$Address = ""
$Identifier = ""
$TraderCompanyType = ""
$TraderStreet = ""
$TraderPostcode = ""
$TraderCity = ""
$TraderNameMatch = 1
$TraderNameMatchSpecified = $false
$TraderCompanyTypeMatch = 1
$TraderCompanyTypeMatchSpecified = $false
$TraderStreetMatch =1
$TraderStreetMatchSpecified = $false
$TraderPostcodeMatch = 1
$TraderPostcodeMatchSpecified = $false
$TraderCityMatch = 1
$TraderCityMatchSpecified = $false
$RequesterCountryCode = "YourCountryCode"
$RequesterVatNumber = "YourVATNumber"
$DateChecked = $Vies.checkVatApprox([ref]$CountryCode, [ref]$VatNumber, [ref]$Name, [ref]$TraderCompanyType, [ref]$TraderStreet, [ref]$TraderPostcode, [ref]$TraderCity, $RequesterCountryCode, $RequesterVatNumber, [ref]$Valid, [ref]$Address, [ref]$TraderNameMatch, [ref]$TraderNameMatchSpecified, [ref]$TraderCompanyTypeMatch, [ref]$TraderCompanyTypeMatchSpecified, [ref]$TraderStreetMatch, [ref]$TraderStreetMatchSpecified, [ref]$TraderPostcodeMatch, [ref]$TraderPostcodeMatchSpecified, [ref]$TraderCityMatch, [ref]$TraderCityMatchSpecified, [ref]$Identifier)
请注意 $RequesterCountryCode 和 $RequesterVatNumber 不需要 [ref]。这让我在注意到这个请求之前寻找了年龄。
现在一切正常,如果你添加这个:
$Properties = @{
'CountryCode' = $CountryCode
'VatNumber' = $VatNumber
'Valid' = $Valid
'Name' = $Name
'Address' = $Address
'DateChecked' = $DateChecked
'Consultation' = $Identifier
}
您将收到以下回复:
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429375"
DateChecked : 8/13/2019 10:00:00 PM
Name : Comm.VA ALPRO
VatNumber : 0420429375
Address : VLAMINGSTRAAT 28
8560 WEVELGEM
Valid : True
CountryCode : BE
Consultation: WAPIAAAAWyQb9ELI
其他字段,如 TraderNameMatch,您也可以将它们用作响应,但据我所知,只有西班牙支持输入地址进行验证。其他国家没有。