Hallo Leute,
lange habe ich nach einer einfachen und funktionierenden Möglichkeit gesucht eine UID-Nummer auf ihre Gültigkeit zu prüfen. Im Netz schwirren viele verschiedene Codefragmente herum die entweder nicht funktionieren oder eine kostenpflichtige Komponente benötigen. Ich bin zwar nicht der Spitzen-Profi-Programmierer, aber ich habe es auch mit .NET Funktionen relativ einfach und funktionierend hinbekommen.
Da ich diesem Forum viel von meinem Wissen über .NET verdanke, möchte ich auch etwas zurückgeben. Daher hier der Code:
Aufgerufen wird das Modul ganz einfach mit (z.B. meine UID):
In meinem Beispiel werden die Ergebnisse in den Public-Variablen gespeichert und sind somit in der ganzen Anwendung verfügbar.
*Topic verschoben*
lange habe ich nach einer einfachen und funktionierenden Möglichkeit gesucht eine UID-Nummer auf ihre Gültigkeit zu prüfen. Im Netz schwirren viele verschiedene Codefragmente herum die entweder nicht funktionieren oder eine kostenpflichtige Komponente benötigen. Ich bin zwar nicht der Spitzen-Profi-Programmierer, aber ich habe es auch mit .NET Funktionen relativ einfach und funktionierend hinbekommen.
Da ich diesem Forum viel von meinem Wissen über .NET verdanke, möchte ich auch etwas zurückgeben. Daher hier der Code:
Aufgerufen wird das Modul ganz einfach mit (z.B. meine UID):
In meinem Beispiel werden die Ergebnisse in den Public-Variablen gespeichert und sind somit in der ganzen Anwendung verfügbar.
VB.NET-Quellcode
- Imports System.Net
- Imports System.Xml
- Imports System.IO
- Module mdl_vatchecker
- Public UID_Valid As Boolean = False 'geprüfte UID-Nummer gültig oder nicht
- Public UID_Number As String = "" 'Komplette UID-Nummer mit Ländercode (z.B. ATU1234567 oder DE123344556)
- Public UID_NumberWhithoutCC As String = "" 'UID-Nummer ohne CountryCode
- Public UID_CountryCode As String = "" 'Ländercode (AT, DE, IT, ...)
- Public UID_Name As String = "" 'Unternehmensname
- Public UID_Address As String = "" 'Unternehmensadresse (nur wenn am EU-Server verfügbar)
- Public UID_requestDate As String = "" 'Abfragezeitpunkt
- Public UID_Error As String = "" 'Fehlermeldung
- Public Sub UeberpruefeUID(CompleteVAT As String)
- 'Globale Variablen leeren
- UID_Valid = False
- UID_Number = ""
- UID_NumberWhithoutCC = ""
- UID_CountryCode = ""
- UID_Name = ""
- UID_Address = ""
- UID_requestDate = ""
- UID_Error = ""
- CompleteVAT = CompleteVAT.Replace(" ", "") 'alle Leerzeichen entfernen falls andere Schreibweisen wie z.B. "AT U12345678" oder "DE 123 456 789" übergeben werden
- If CompleteVAT.Length < 8 Then
- UID_Error = "UID-Nummer ist zu kurz"
- UID_Valid = False
- Exit Sub
- End If
- UID_Number = CompleteVAT
- 'Hier Countrycode und VatNumber trennen
- UID_CountryCode = Left(CompleteVAT, 2)
- UID_NumberWhithoutCC = Right(CompleteVAT, CompleteVAT.Length - 2)
- Dim client As WebClient = New WebClient()
- client.Encoding = System.Text.Encoding.UTF8
- Dim request As String = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:urn=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">"
- request += "<soapenv:Header/>"
- request += "<soapenv:Body>"
- request += "<urn:checkVat>"
- request += "<urn:countryCode>" + UID_CountryCode + "</urn:countryCode>"
- request += "<urn:vatNumber>" + UID_NumberWhithoutCC + "</urn:vatNumber>"
- request += "</urn:checkVat>"
- request += "</soapenv:Body>"
- request += "</soapenv:Envelope>"
- Dim response As String = ""
- Try
- response = client.UploadString("http://ec.europa.eu/taxation_customs/vies/services/checkVatService", request)
- client.Dispose()
- Catch
- client.Dispose()
- UID_Error = "Fehler beim Verbindungsaufbau zu ec.europa.eu"
- Exit Sub
- End Try
- If response.Contains("<valid>true</valid>") Then
- UID_Valid = True
- Dim XSettings As New XmlReaderSettings
- 'Unternehmensnamen auslesen
- Using SReader As New StringReader(response)
- Dim X As XmlReader = XmlReader.Create(SReader, XSettings)
- X.ReadToDescendant("name")
- UID_Name = X.ReadElementContentAsString
- End Using
- 'Unternehmensadresse auslesen wenn verfügbar (Abfragestufe 2)
- Using SReader As New StringReader(response)
- Dim X As XmlReader = XmlReader.Create(SReader, XSettings)
- X.ReadToDescendant("address")
- UID_Address = X.ReadElementContentAsString
- End Using
- 'Abfragezeitpunkt des EU-Servers (Serverzeit)
- Using SReader As New StringReader(response)
- Dim X As XmlReader = XmlReader.Create(SReader, XSettings)
- X.ReadToDescendant("requestDate")
- UID_requestDate = X.ReadElementContentAsString
- End Using
- Else
- UID_Valid = False
- End If
- End Sub
- End Module
*Topic verschoben*
Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()