PowerBuilder
PowerBuilder
Hungary NAV Query Taxpayer
See more Hungary NAV Invoicing Examples
Demonstrates the queryTaxpayer request for the Hungarian NAV Online Invoicing System REST API v2.0.Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Crypt
oleobject loo_DtNow
string ls_MyPassword
string ls_PasswordHash
oleobject loo_Prng
oleobject loo_SbRequestId
string ls_SignatureKey
oleobject loo_SbFinalHashBase
integer li_NumReplaced
string ls_RequestSignature
oleobject loo_Xml
oleobject loo_Http
string ls_Endpoint
oleobject loo_Resp
oleobject loo_RespXml
string ls_QueryTaxpayerResponse_xmlns
string ls_QueryTaxpayerResponse_xmlns_ns2
string ls_RequestId
string ls_Timestamp
string ls_RequestVersion
string ls_HeaderVersion
string ls_FuncCode
string ls_SoftwareId
string ls_SoftwareName
string ls_SoftwareOperation
string ls_SoftwareMainVersion
string ls_SoftwareDevName
string ls_SoftwareDevContact
string ls_SoftwareDevCountryCode
string ls_SoftwareDevTaxNumber
string ls_InfoDate
string ls_TaxpayerValidity
string ls_TaxpayerName
integer li_Ns2_taxpayerId
integer li_Ns2_vatCode
string ls_TaxpayerAddressType
string ls_Ns2_countryCode
integer li_Ns2_postalCode
string ls_Ns2_city
string ls_Ns2_streetName
string ls_Ns2_publicPlaceCategory
integer li_Ns2_number
li_Success = 0
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Build the following XML:
// <?xml version="1.0" encoding="UTF-8"?>
// <QueryTaxpayerRequest xmlns="http://schemas.nav.gov.hu/OSA/2.0/api">
// <header>
// <requestId>RID215118906689</requestId>
// <timestamp>2019-09-11T11:11:08.579Z</timestamp>
// <requestVersion>2.0</requestVersion>
// <headerVersion>1.0</headerVersion>
// </header>
// <user>
// <login>lwilsmn0uqdxe6u</login>
// <passwordHash>2F43840A882CFDB7DB0FEC07D419D030D864B47B6B541DC280EF81B937B7A176E33C052B0D26638CC18A7A2C08D8D311733078A774BF43F6CA57FE8CD74DC28E</passwordHash>
// <taxNumber>11111111</taxNumber>
// <requestSignature>C5ADE8A2231C509D2887E6C2C4406CC5F72CA25B070AD3E94FADFA3F91A8A3667AF882DEDC7D67E9086E3D34A95886E929ACD8C924CD1E8357C89BEF43BA9126</requestSignature>
// </user>
// <software>
// <softwareId>123456789123456789</softwareId>
// <softwareName>string</softwareName>
// <softwareOperation>LOCAL_SOFTWARE</softwareOperation>
// <softwareMainVersion>string</softwareMainVersion>
// <softwareDevName>string</softwareDevName>
// <softwareDevContact>string</softwareDevContact>
// <softwareDevCountryCode>HU</softwareDevCountryCode>
// <softwareDevTaxNumber>string</softwareDevTaxNumber>
// </software>
// <taxNumber>22222222</taxNumber>
// </QueryTaxpayerRequest>
loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
if li_rc < 0 then
destroy loo_Crypt
MessageBox("Error","Connecting to COM object failed")
return
end if
loo_DtNow = create oleobject
li_rc = loo_DtNow.ConnectToNewObject("Chilkat.CkDateTime")
loo_DtNow.SetFromCurrentSystemTime()
Write-Debug loo_DtNow.GetAsTimestamp(0)
// The hash algorithm for the password is SHA512 (not SHA3-512).
loo_Crypt.HashAlgorithm = "sha512"
loo_Crypt.EncodingMode = "hex"
ls_MyPassword = "my-password"
ls_PasswordHash = loo_Crypt.HashStringENC(ls_MyPassword)
// Generate a random request ID like "RID215118906689"
loo_Prng = create oleobject
li_rc = loo_Prng.ConnectToNewObject("Chilkat.Prng")
loo_SbRequestId = create oleobject
li_rc = loo_SbRequestId.ConnectToNewObject("Chilkat.StringBuilder")
loo_SbRequestId.Append("RID")
loo_SbRequestId.Append(loo_Prng.RandomString(12,1,0,0))
Write-Debug "generated requestId = " + loo_SbRequestId.GetAsString()
// Calculate the requestSignature
loo_Crypt.HashAlgorithm = "sha3-512"
ls_SignatureKey = "ce-8f5e-215119fa7dd621DLMRHRLH2S"
loo_SbFinalHashBase = create oleobject
li_rc = loo_SbFinalHashBase.ConnectToNewObject("Chilkat.StringBuilder")
// First append the timestamp because we are going to remove certain chars/parts.
loo_SbFinalHashBase.Append(loo_DtNow.GetAsTimestamp(0))
li_NumReplaced = loo_SbFinalHashBase.Replace("Z","")
li_NumReplaced = loo_SbFinalHashBase.Replace("-","")
li_NumReplaced = loo_SbFinalHashBase.Replace(":","")
li_NumReplaced = loo_SbFinalHashBase.Replace("T","")
// Prepend the requestId and append the signatureKey
loo_SbFinalHashBase.Prepend(loo_SbRequestId.GetAsString())
loo_SbFinalHashBase.Append(ls_SignatureKey)
ls_RequestSignature = loo_Crypt.HashStringENC(loo_SbFinalHashBase.GetAsString())
loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")
loo_Xml.Tag = "QueryTaxpayerRequest"
loo_Xml.AddAttribute("xmlns","http://schemas.nav.gov.hu/OSA/2.0/api")
loo_Xml.UpdateChildContent("header|requestId",loo_SbRequestId.GetAsString())
loo_Xml.UpdateChildContent("header|timestamp",loo_DtNow.GetAsTimestamp(0))
loo_Xml.UpdateChildContent("header|requestVersion","2.0")
loo_Xml.UpdateChildContent("header|headerVersion","1.0")
loo_Xml.UpdateChildContent("user|login","lwilsmn0uqdxe6u")
loo_Xml.UpdateChildContent("user|passwordHash",ls_PasswordHash)
loo_Xml.UpdateChildContent("user|taxNumber","11111111")
loo_Xml.UpdateChildContent("user|requestSignature",ls_RequestSignature)
loo_Xml.UpdateChildContent("software|softwareId","123456789123456789")
loo_Xml.UpdateChildContent("software|softwareName","string")
loo_Xml.UpdateChildContent("software|softwareOperation","LOCAL_SOFTWARE")
loo_Xml.UpdateChildContent("software|softwareMainVersion","string")
loo_Xml.UpdateChildContent("software|softwareDevName","string")
loo_Xml.UpdateChildContent("software|softwareDevContact","string")
loo_Xml.UpdateChildContent("software|softwareDevCountryCode","HU")
loo_Xml.UpdateChildContent("software|softwareDevTaxNumber","string")
loo_Xml.UpdateChildContent("taxNumber","22222222")
// POST the XML to https://api-test.onlineszamla.nav.gov.hu/invoiceService/v2/queryTaxpayer
loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
loo_Http.Accept = "application/xml"
ls_Endpoint = "https://api-test.onlineszamla.nav.gov.hu/invoiceService/v2/queryTaxpayer"
loo_Resp = create oleobject
li_rc = loo_Resp.ConnectToNewObject("Chilkat.HttpResponse")
li_Success = loo_Http.HttpStr("POST",ls_Endpoint,loo_Xml.GetXml(),"utf-8","application/xml",loo_Resp)
if li_Success = 0 then
Write-Debug loo_Http.LastErrorText
destroy loo_Crypt
destroy loo_DtNow
destroy loo_Prng
destroy loo_SbRequestId
destroy loo_SbFinalHashBase
destroy loo_Xml
destroy loo_Http
destroy loo_Resp
return
end if
Write-Debug "Response status code = " + string(loo_Resp.StatusCode)
loo_RespXml = create oleobject
li_rc = loo_RespXml.ConnectToNewObject("Chilkat.Xml")
loo_RespXml.LoadXml(loo_Resp.BodyStr)
Write-Debug "Response body:"
Write-Debug loo_RespXml.GetXml()
// The result looks like this:
// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
// <QueryTaxpayerResponse xmlns="http://schemas.nav.gov.hu/OSA/2.0/api" xmlns:ns2="http://schemas.nav.gov.hu/OSA/2.0/data">
// <header>
// <requestId>RID847153193061</requestId>
// <timestamp>2020-03-24T16:00:34Z</timestamp>
// <requestVersion>2.0</requestVersion>
// <headerVersion>1.0</headerVersion>
// </header>
// <result>
// <funcCode>OK</funcCode>
// </result>
// <software>
// <softwareId>123456789123456789</softwareId>
// <softwareName>string</softwareName>
// <softwareOperation>LOCAL_SOFTWARE</softwareOperation>
// <softwareMainVersion>string</softwareMainVersion>
// <softwareDevName>string</softwareDevName>
// <softwareDevContact>string</softwareDevContact>
// <softwareDevCountryCode>HU</softwareDevCountryCode>
// <softwareDevTaxNumber>string</softwareDevTaxNumber>
// </software>
// <infoDate>1993-01-01T00:00:00.000+01:00</infoDate>
// <taxpayerValidity>true</taxpayerValidity>
// <taxpayerData>
// <taxpayerName>some taxpayer name</taxpayerName>
// <taxNumberDetail>
// <ns2:taxpayerId>22222222</ns2:taxpayerId>
// <ns2:vatCode>2</ns2:vatCode>
// </taxNumberDetail>
// <taxpayerAddressList>
// <taxpayerAddressItem>
// <taxpayerAddressType>HQ</taxpayerAddressType>
// <taxpayerAddress>
// <ns2:countryCode>HU</ns2:countryCode>
// <ns2:postalCode>1121</ns2:postalCode>
// <ns2:city>BUDAPEST 12</ns2:city>
// <ns2:streetName>ABCD</ns2:streetName>
// <ns2:publicPlaceCategory>UTCA</ns2:publicPlaceCategory>
// <ns2:number>20</ns2:number>
// </taxpayerAddress>
// </taxpayerAddressItem>
// </taxpayerAddressList>
// </taxpayerData>
// </QueryTaxpayerResponse>
// Use this online tool to generate parsing code from sample XML:
// Generate Parsing Code from XML
ls_QueryTaxpayerResponse_xmlns = loo_RespXml.GetAttrValue("xmlns")
ls_QueryTaxpayerResponse_xmlns_ns2 = loo_RespXml.GetAttrValue("xmlns:ns2")
ls_RequestId = loo_RespXml.GetChildContent("header|requestId")
ls_Timestamp = loo_RespXml.GetChildContent("header|timestamp")
ls_RequestVersion = loo_RespXml.GetChildContent("header|requestVersion")
ls_HeaderVersion = loo_RespXml.GetChildContent("header|headerVersion")
ls_FuncCode = loo_RespXml.GetChildContent("result|funcCode")
ls_SoftwareId = loo_RespXml.GetChildContent("software|softwareId")
ls_SoftwareName = loo_RespXml.GetChildContent("software|softwareName")
ls_SoftwareOperation = loo_RespXml.GetChildContent("software|softwareOperation")
ls_SoftwareMainVersion = loo_RespXml.GetChildContent("software|softwareMainVersion")
ls_SoftwareDevName = loo_RespXml.GetChildContent("software|softwareDevName")
ls_SoftwareDevContact = loo_RespXml.GetChildContent("software|softwareDevContact")
ls_SoftwareDevCountryCode = loo_RespXml.GetChildContent("software|softwareDevCountryCode")
ls_SoftwareDevTaxNumber = loo_RespXml.GetChildContent("software|softwareDevTaxNumber")
ls_InfoDate = loo_RespXml.GetChildContent("infoDate")
ls_TaxpayerValidity = loo_RespXml.GetChildContent("taxpayerValidity")
ls_TaxpayerName = loo_RespXml.GetChildContent("taxpayerData|taxpayerName")
li_Ns2_taxpayerId = loo_RespXml.GetChildIntValue("taxpayerData|taxNumberDetail|ns2:taxpayerId")
li_Ns2_vatCode = loo_RespXml.GetChildIntValue("taxpayerData|taxNumberDetail|ns2:vatCode")
ls_TaxpayerAddressType = loo_RespXml.GetChildContent("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddressType")
ls_Ns2_countryCode = loo_RespXml.GetChildContent("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:countryCode")
li_Ns2_postalCode = loo_RespXml.GetChildIntValue("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:postalCode")
ls_Ns2_city = loo_RespXml.GetChildContent("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:city")
ls_Ns2_streetName = loo_RespXml.GetChildContent("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:streetName")
ls_Ns2_publicPlaceCategory = loo_RespXml.GetChildContent("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:publicPlaceCategory")
li_Ns2_number = loo_RespXml.GetChildIntValue("taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:number")
destroy loo_Crypt
destroy loo_DtNow
destroy loo_Prng
destroy loo_SbRequestId
destroy loo_SbFinalHashBase
destroy loo_Xml
destroy loo_Http
destroy loo_Resp
destroy loo_RespXml