DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoCrypt
Handle hoDtNow
String sMyPassword
String sPasswordHash
Handle hoPrng
Handle hoSbRequestId
String sSignatureKey
Handle hoSbFinalHashBase
Integer iNumReplaced
String sRequestSignature
Handle hoXml
Handle hoHttp
String sEndpoint
Variant vResp
Handle hoResp
Variant vResp
Xml Handle hoRespXml
String sQueryTaxpayerResponse_xmlns
String sQueryTaxpayerResponse_xmlns_ns2
String sRequestId
String sTimestamp
String sRequestVersion
String sHeaderVersion
String sFuncCode
String sSoftwareId
String sSoftwareName
String sSoftwareOperation
String sSoftwareMainVersion
String sSoftwareDevName
String sSoftwareDevContact
String sSoftwareDevCountryCode
String sSoftwareDevTaxNumber
String sInfoDate
String sTaxpayerValidity
String sTaxpayerName
Integer iNs2_taxpayerId
Integer iNs2_vatCode
String sTaxpayerAddressType
String sNs2_countryCode
Integer iNs2_postalCode
String sNs2_city
String sNs2_streetName
String sNs2_publicPlaceCategory
Integer iNs2_number
String sTemp1
Integer iTemp1
Move False To iSuccess
// 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>
Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
If (Not(IsComObjectCreated(hoCrypt))) Begin
Send CreateComObject of hoCrypt
End
Get Create (RefClass(cComCkDateTime)) To hoDtNow
If (Not(IsComObjectCreated(hoDtNow))) Begin
Send CreateComObject of hoDtNow
End
Get ComSetFromCurrentSystemTime Of hoDtNow To iSuccess
Get ComGetAsTimestamp Of hoDtNow False To sTemp1
Showln sTemp1
// The hash algorithm for the password is SHA512 (not SHA3-512).
Set ComHashAlgorithm Of hoCrypt To "sha512"
Set ComEncodingMode Of hoCrypt To "hex"
Move "my-password" To sMyPassword
Get ComHashStringENC Of hoCrypt sMyPassword To sPasswordHash
// Generate a random request ID like "RID215118906689"
Get Create (RefClass(cComChilkatPrng)) To hoPrng
If (Not(IsComObjectCreated(hoPrng))) Begin
Send CreateComObject of hoPrng
End
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbRequestId
If (Not(IsComObjectCreated(hoSbRequestId))) Begin
Send CreateComObject of hoSbRequestId
End
Get ComAppend Of hoSbRequestId "RID" To iSuccess
Get ComRandomString Of hoPrng 12 True False False To sTemp1
Get ComAppend Of hoSbRequestId sTemp1 To iSuccess
Get ComGetAsString Of hoSbRequestId To sTemp1
Showln "generated requestId = " sTemp1
// Calculate the requestSignature
Set ComHashAlgorithm Of hoCrypt To "sha3-512"
Move "ce-8f5e-215119fa7dd621DLMRHRLH2S" To sSignatureKey
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbFinalHashBase
If (Not(IsComObjectCreated(hoSbFinalHashBase))) Begin
Send CreateComObject of hoSbFinalHashBase
End
// First append the timestamp because we are going to remove certain chars/parts.
Get ComGetAsTimestamp Of hoDtNow False To sTemp1
Get ComAppend Of hoSbFinalHashBase sTemp1 To iSuccess
Get ComReplace Of hoSbFinalHashBase "Z" "" To iNumReplaced
Get ComReplace Of hoSbFinalHashBase "-" "" To iNumReplaced
Get ComReplace Of hoSbFinalHashBase ":" "" To iNumReplaced
Get ComReplace Of hoSbFinalHashBase "T" "" To iNumReplaced
// Prepend the requestId and append the signatureKey
Get ComGetAsString Of hoSbRequestId To sTemp1
Get ComPrepend Of hoSbFinalHashBase sTemp1 To iSuccess
Get ComAppend Of hoSbFinalHashBase sSignatureKey To iSuccess
Get ComGetAsString Of hoSbFinalHashBase To sTemp1
Get ComHashStringENC Of hoCrypt sTemp1 To sRequestSignature
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Set ComTag Of hoXml To "QueryTaxpayerRequest"
Get ComAddAttribute Of hoXml "xmlns" "http://schemas.nav.gov.hu/OSA/2.0/api" To iSuccess
Get ComGetAsString Of hoSbRequestId To sTemp1
Send ComUpdateChildContent To hoXml "header|requestId" sTemp1
Get ComGetAsTimestamp Of hoDtNow False To sTemp1
Send ComUpdateChildContent To hoXml "header|timestamp" sTemp1
Send ComUpdateChildContent To hoXml "header|requestVersion" "2.0"
Send ComUpdateChildContent To hoXml "header|headerVersion" "1.0"
Send ComUpdateChildContent To hoXml "user|login" "lwilsmn0uqdxe6u"
Send ComUpdateChildContent To hoXml "user|passwordHash" sPasswordHash
Send ComUpdateChildContent To hoXml "user|taxNumber" "11111111"
Send ComUpdateChildContent To hoXml "user|requestSignature" sRequestSignature
Send ComUpdateChildContent To hoXml "software|softwareId" "123456789123456789"
Send ComUpdateChildContent To hoXml "software|softwareName" "string"
Send ComUpdateChildContent To hoXml "software|softwareOperation" "LOCAL_SOFTWARE"
Send ComUpdateChildContent To hoXml "software|softwareMainVersion" "string"
Send ComUpdateChildContent To hoXml "software|softwareDevName" "string"
Send ComUpdateChildContent To hoXml "software|softwareDevContact" "string"
Send ComUpdateChildContent To hoXml "software|softwareDevCountryCode" "HU"
Send ComUpdateChildContent To hoXml "software|softwareDevTaxNumber" "string"
Send ComUpdateChildContent To hoXml "taxNumber" "22222222"
// POST the XML to https://api-test.onlineszamla.nav.gov.hu/invoiceService/v2/queryTaxpayer
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Set ComAccept Of hoHttp To "application/xml"
Move "https://api-test.onlineszamla.nav.gov.hu/invoiceService/v2/queryTaxpayer" To sEndpoint
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get ComGetXml Of hoXml To sTemp1
Get pvComObject of hoResp to vResp
Get ComHttpStr Of hoHttp "POST" sEndpoint sTemp1 "utf-8" "application/xml" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStatusCode Of hoResp To iTemp1
Showln "Response status code = " iTemp1
Get Create (RefClass(cComChilkatXml)) To hoRespXml
If (Not(IsComObjectCreated(hoRespXml))) Begin
Send CreateComObject of hoRespXml
End
Get ComBodyStr Of hoResp To sTemp1
Get ComLoadXml Of hoRespXml sTemp1 To iSuccess
Showln "Response body:"
Get ComGetXml Of hoRespXml To sTemp1
Showln sTemp1
// 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
Get ComGetAttrValue Of hoRespXml "xmlns" To sQueryTaxpayerResponse_xmlns
Get ComGetAttrValue Of hoRespXml "xmlns:ns2" To sQueryTaxpayerResponse_xmlns_ns2
Get ComGetChildContent Of hoRespXml "header|requestId" To sRequestId
Get ComGetChildContent Of hoRespXml "header|timestamp" To sTimestamp
Get ComGetChildContent Of hoRespXml "header|requestVersion" To sRequestVersion
Get ComGetChildContent Of hoRespXml "header|headerVersion" To sHeaderVersion
Get ComGetChildContent Of hoRespXml "result|funcCode" To sFuncCode
Get ComGetChildContent Of hoRespXml "software|softwareId" To sSoftwareId
Get ComGetChildContent Of hoRespXml "software|softwareName" To sSoftwareName
Get ComGetChildContent Of hoRespXml "software|softwareOperation" To sSoftwareOperation
Get ComGetChildContent Of hoRespXml "software|softwareMainVersion" To sSoftwareMainVersion
Get ComGetChildContent Of hoRespXml "software|softwareDevName" To sSoftwareDevName
Get ComGetChildContent Of hoRespXml "software|softwareDevContact" To sSoftwareDevContact
Get ComGetChildContent Of hoRespXml "software|softwareDevCountryCode" To sSoftwareDevCountryCode
Get ComGetChildContent Of hoRespXml "software|softwareDevTaxNumber" To sSoftwareDevTaxNumber
Get ComGetChildContent Of hoRespXml "infoDate" To sInfoDate
Get ComGetChildContent Of hoRespXml "taxpayerValidity" To sTaxpayerValidity
Get ComGetChildContent Of hoRespXml "taxpayerData|taxpayerName" To sTaxpayerName
Get ComGetChildIntValue Of hoRespXml "taxpayerData|taxNumberDetail|ns2:taxpayerId" To iNs2_taxpayerId
Get ComGetChildIntValue Of hoRespXml "taxpayerData|taxNumberDetail|ns2:vatCode" To iNs2_vatCode
Get ComGetChildContent Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddressType" To sTaxpayerAddressType
Get ComGetChildContent Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:countryCode" To sNs2_countryCode
Get ComGetChildIntValue Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:postalCode" To iNs2_postalCode
Get ComGetChildContent Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:city" To sNs2_city
Get ComGetChildContent Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:streetName" To sNs2_streetName
Get ComGetChildContent Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:publicPlaceCategory" To sNs2_publicPlaceCategory
Get ComGetChildIntValue Of hoRespXml "taxpayerData|taxpayerAddressList|taxpayerAddressItem|taxpayerAddress|ns2:number" To iNs2_number
End_Procedure