Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Hungary NAV Token ExchangeDemonstrates the tokenExchange request for the Hungarian NAV Online Invoicing System REST API v2.0. Note: This example requires Chilkat v9.5.0.83 or greater. For more information, see https://onlineszamla.nav.gov.hu/api/files/container/download/Online%20Szamla_Interfesz%20specifik%C3%A1ci%C3%B3_EN_v2.0.pdf
LOCAL lnSuccess LOCAL loCrypt LOCAL loDtNow LOCAL lcMyPassword LOCAL lcPasswordHash LOCAL loPrng LOCAL loSbRequestId LOCAL lcSignatureKey LOCAL loSbFinalHashBase LOCAL lnNumReplaced LOCAL lcRequestSignature LOCAL loXml LOCAL loHttp LOCAL lcEndpoint LOCAL loResp LOCAL loRespXml LOCAL lcTokenExchangeResponse_xmlns LOCAL lcTokenExchangeResponse_xmlns_ns2 LOCAL lcRequestId LOCAL lcTimestamp LOCAL lcRequestVersion LOCAL lcHeaderVersion LOCAL lcFuncCode LOCAL lcSoftwareId LOCAL lcSoftwareName LOCAL lcSoftwareOperation LOCAL lcSoftwareMainVersion LOCAL lcSoftwareDevName LOCAL lcSoftwareDevContact LOCAL lcSoftwareDevCountryCode LOCAL lcSoftwareDevTaxNumber LOCAL lcEncodedExchangeToken LOCAL lcTokenValidityFrom LOCAL lcTokenValidityTo * This example assumes the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * Build the following XML: * Use this online tool to generate code from sample XML: * Generate Code to Create XML * <?xml version="1.0" encoding="UTF-8"?> * <TokenExchangeRequest xmlns="http://schemas.nav.gov.hu/OSA/2.0/api"> * <header> * <requestId>RID896801578348</requestId> * <timestamp>2019-09-11T10:55:31.440Z</timestamp> * <requestVersion>2.0</requestVersion> * <headerVersion>1.0</headerVersion> * </header> * <user> * <login>lwilsmn0uqdxe6u</login> * <passwordHash>2F43840A882CFDB7DB0FEC07D419D030D864B47B6B541DC280EF81B937B7A176E33C052B0D26638CC18A7A2C08D8D311733078A774BF43F6CA57FE8CD74DC28E</passwordHash> * <taxNumber>11111111</taxNumber> * <requestSignature>B4B5E0F197BFFD3DF69BCC98D3BE775F65FD5445EEF95C9D6B6C59425F2B81C4F6DA1FD563B0C7E7D98AF1E1725E5C63C2803B5D3A93D1C02ED354AC92F2CC94</requestSignature> * <!--<signKey>ac-ac3a-7f661bff7d342N43CYX4U9FG</signKey>--> * </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> * </TokenExchangeRequest> * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Crypt2') loCrypt = CreateObject('Chilkat.Crypt2') * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.CkDateTime') loDtNow = CreateObject('Chilkat.CkDateTime') loDtNow.SetFromCurrentSystemTime() ? loDtNow.GetAsTimestamp(0) * The hash algorithm for the password is SHA512 (not SHA3-512). loCrypt.HashAlgorithm = "sha512" loCrypt.EncodingMode = "hex" lcMyPassword = "my-password" lcPasswordHash = loCrypt.HashStringENC(lcMyPassword) * Generate a random request ID like "RID215118906689" * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Prng') loPrng = CreateObject('Chilkat.Prng') * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbRequestId = CreateObject('Chilkat.StringBuilder') loSbRequestId.Append("RID") loSbRequestId.Append(loPrng.RandomString(12,1,0,0)) ? "generated requestId = " + loSbRequestId.GetAsString() * IMPORTANT: This example requires Chilkat v9.5.0.83 or greater. The SHA3 hash algorithm is implemented in Chilkat v9.5.0.83, but not in earlier versions. * IMPORTANT: This example requires Chilkat v9.5.0.83 or greater. The SHA3 hash algorithm is implemented in Chilkat v9.5.0.83, but not in earlier versions. * IMPORTANT: This example requires Chilkat v9.5.0.83 or greater. The SHA3 hash algorithm is implemented in Chilkat v9.5.0.83, but not in earlier versions. * IMPORTANT: This example requires Chilkat v9.5.0.83 or greater. The SHA3 hash algorithm is implemented in Chilkat v9.5.0.83, but not in earlier versions. * IMPORTANT: This example requires Chilkat v9.5.0.83 or greater. The SHA3 hash algorithm is implemented in Chilkat v9.5.0.83, but not in earlier versions. * Calculate the requestSignature loCrypt.HashAlgorithm = "sha3-512" lcSignatureKey = "ce-8f5e-215119fa7dd621DLMRHRLH2S" * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbFinalHashBase = CreateObject('Chilkat.StringBuilder') * First append the timestamp because we are going to remove certain chars/parts. loSbFinalHashBase.Append(loDtNow.GetAsTimestamp(0)) lnNumReplaced = loSbFinalHashBase.Replace("Z","") lnNumReplaced = loSbFinalHashBase.Replace("-","") lnNumReplaced = loSbFinalHashBase.Replace(":","") lnNumReplaced = loSbFinalHashBase.Replace("T","") * Prepend the requestId and append the signatureKey loSbFinalHashBase.Prepend(loSbRequestId.GetAsString()) loSbFinalHashBase.Append(lcSignatureKey) lcRequestSignature = loCrypt.HashStringENC(loSbFinalHashBase.GetAsString()) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXml = CreateObject('Chilkat.Xml') loXml.Tag = "TokenExchangeRequest" loXml.AddAttribute("xmlns","http://schemas.nav.gov.hu/OSA/2.0/api") loXml.UpdateChildContent("header|requestId",loSbRequestId.GetAsString()) loXml.UpdateChildContent("header|timestamp",loDtNow.GetAsTimestamp(0)) loXml.UpdateChildContent("header|requestVersion","2.0") loXml.UpdateChildContent("header|headerVersion","1.0") loXml.UpdateChildContent("user|login","lwilsmn0uqdxe6u") loXml.UpdateChildContent("user|passwordHash",lcPasswordHash) loXml.UpdateChildContent("user|taxNumber","11111111") loXml.UpdateChildContent("user|requestSignature",lcRequestSignature) loXml.UpdateChildContent("software|softwareId","123456789123456789") loXml.UpdateChildContent("software|softwareName","string") loXml.UpdateChildContent("software|softwareOperation","LOCAL_SOFTWARE") loXml.UpdateChildContent("software|softwareMainVersion","string") loXml.UpdateChildContent("software|softwareDevName","string") loXml.UpdateChildContent("software|softwareDevContact","string") loXml.UpdateChildContent("software|softwareDevCountryCode","HU") loXml.UpdateChildContent("software|softwareDevTaxNumber","string") * POST the XML to https://api-test.onlineszamla.nav.gov.hu/invoiceService/v2/tokenExchange * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http') loHttp = CreateObject('Chilkat.Http') loHttp.Accept = "application/xml" loHttp.SetRequestHeader("Content-Type","application/xml") lcEndpoint = "https://api-test.onlineszamla.nav.gov.hu/invoiceService/v2/tokenExchange" loResp = loHttp.PostXml(lcEndpoint,loXml.GetXml(),"utf-8") IF (loHttp.LastMethodSuccess = 0) THEN ? loHttp.LastErrorText RELEASE loCrypt RELEASE loDtNow RELEASE loPrng RELEASE loSbRequestId RELEASE loSbFinalHashBase RELEASE loXml RELEASE loHttp CANCEL ENDIF ? "Response status code = " + STR(loResp.StatusCode) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loRespXml = CreateObject('Chilkat.Xml') loRespXml.LoadXml(loResp.BodyStr) ? "Response body:" ? loRespXml.GetXml() * Save our exchange token to a file to be used for subsequent requests. loRespXml.SaveXml("qa_data/tokens/nav_exchange_token.xml") RELEASE loResp * The result looks like this: * <?xml version="1.0" encoding="UTF-8" standalone="yes"?> * <TokenExchangeResponse xmlns="http://schemas.nav.gov.hu/OSA/2.0/api" xmlns:ns2="http://schemas.nav.gov.hu/OSA/2.0/data"> * <header> * <requestId>RID789246611489</requestId> * <timestamp>2020-03-25T14:14:36Z</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> * <encodedExchangeToken>2lR5v57Tl ... 9n4tIWCYgjKQ==</encodedExchangeToken> * <tokenValidityFrom>2020-03-25T15:14:36.987+01:00</tokenValidityFrom> * <tokenValidityTo>2020-03-25T15:19:36.987+01:00</tokenValidityTo> * </TokenExchangeResponse> * Use this online tool to generate parsing code from sample XML: * Generate Parsing Code from XML lcTokenExchangeResponse_xmlns = loRespXml.GetAttrValue("xmlns") lcTokenExchangeResponse_xmlns_ns2 = loRespXml.GetAttrValue("xmlns:ns2") lcRequestId = loRespXml.GetChildContent("header|requestId") lcTimestamp = loRespXml.GetChildContent("header|timestamp") lcRequestVersion = loRespXml.GetChildContent("header|requestVersion") lcHeaderVersion = loRespXml.GetChildContent("header|headerVersion") lcFuncCode = loRespXml.GetChildContent("result|funcCode") lcSoftwareId = loRespXml.GetChildContent("software|softwareId") lcSoftwareName = loRespXml.GetChildContent("software|softwareName") lcSoftwareOperation = loRespXml.GetChildContent("software|softwareOperation") lcSoftwareMainVersion = loRespXml.GetChildContent("software|softwareMainVersion") lcSoftwareDevName = loRespXml.GetChildContent("software|softwareDevName") lcSoftwareDevContact = loRespXml.GetChildContent("software|softwareDevContact") lcSoftwareDevCountryCode = loRespXml.GetChildContent("software|softwareDevCountryCode") lcSoftwareDevTaxNumber = loRespXml.GetChildContent("software|softwareDevTaxNumber") lcEncodedExchangeToken = loRespXml.GetChildContent("encodedExchangeToken") lcTokenValidityFrom = loRespXml.GetChildContent("tokenValidityFrom") lcTokenValidityTo = loRespXml.GetChildContent("tokenValidityTo") RELEASE loCrypt RELEASE loDtNow RELEASE loPrng RELEASE loSbRequestId RELEASE loSbFinalHashBase RELEASE loXml RELEASE loHttp RELEASE loRespXml |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.