Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example:
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Main/VAT ID Check/VATCheck
This example is the version from Sun, 12th Nov 2022.
Project "VATCheck.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Const XMLVorlage = "<?xml version=""1.0"" encoding=""UTF-8""?>\n<env:Envelope xmlns:env=""http://schemas.xmlsoap.org/soap/envelope/"">\n <env:Body>\n <checkVat xmlns=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">\n <countryCode>%1</countryCode>\n <vatNumber>%2</vatNumber>\n </checkVat>\n </env:Body>\n</env:Envelope>\n\n\n"
Control Country Inherits TextField
ControlInstance Country Inherits TextField
End Control
Control IDNo Inherits TextField
ControlInstance IDNo Inherits TextField
End Control
Control CountryLabel Inherits Label
ControlInstance CountryLabel Inherits Label
End Control
Control IDNoLabel Inherits Label
ControlInstance IDNoLabel Inherits Label
End Control
Control AbfrageButton Inherits PushButton
ControlInstance AbfrageButton Inherits PushButton
EventHandler Sub Action()
dim url as string = "http://ec.europa.eu/taxation_customs/vies/services/checkVatService"
dim xml as string = XMLVorlage
xml = Replace(xml, "%1", country.Text)
xml = Replace(xml, "%2", idno.Text)
socke.SetRequestContent xml, "text/xml; charset=utf-8"
socke.Post url
End EventHandler
End Control
Control Socke Inherits HTTPSocket
ControlInstance Socke Inherits HTTPSocket
EventHandler Sub Connected()
List.AddRow CurrentMethodName
End EventHandler
EventHandler Sub Error(code as integer)
List.AddRow CurrentMethodName+" "+stR(code)
End EventHandler
EventHandler Sub PageReceived(url as string, httpStatus as integer, headers as internetHeaders, content as string)
List.AddRow CurrentMethodName
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
'<soap:Body>
'<checkVatResponse xmlns="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
'<countryCode>DE
'</countryCode>
'<vatNumber>182723467
'</vatNumber>
'<requestDate>2014-07-18+02:00
'</requestDate>
'<valid>true
'</valid>
'<name>---
'</name>
'<address>---
'</address>
'</checkVatResponse>
'</soap:Body>
'</soap:Envelope>
if content.Encoding = nil then
content = DefineEncoding(content, encodings.UTF8)
end if
if httpStatus = 200 then
// you could parse XML here or simply check if right tag is there:
Dim doc As New XmlDocument(content)
Dim EnvelopeNode As XmlNode = doc.FirstChild
Dim BodyNode As XmlNode = FindNode(EnvelopeNode, "Body")
Dim checkVatResponseNode As XmlNode = FindNode(BodyNode, "checkVatResponse")
Dim validNode As XmlNode = FindNode(checkVatResponseNode, "valid")
Dim nameNode As XmlNode = FindNode(checkVatResponseNode, "name")
Dim valid As String = validNode.FirstChild.Value
If valid = "true" Then
MsgBox "OK: "+nameNode.FirstChild.Value
else
MsgBox "Not OK"
end if
else
List.AddRow "HTTP Status: "+str(httpStatus)
end if
End EventHandler
End Control
Control List Inherits Listbox
ControlInstance List Inherits Listbox
End Control
Function FindNode(n as XmlNode, name as string) As XmlNode
Dim p As XmlNode = n.FirstChild
While p <> Nil
If p.LocalName = name Then
Return p
End If
p = p.NextSibling
Wend
End Function
Note "Note"
This uses a service from European Union to query any ID number
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project
See also:
The items on this page are in the following plugins: MBS Main Plugin.