Bom dia, Estou com dúvidas de como eu faço a chamada da API ItemTaxSimulationPublic, alguém aqui já utilizou? Pelo que entendi, ela é igual o cálculo do pedido/nf da PD4000 pois preciso simular um calculo de nota em um programa específico que estou estudando. Tenho uma breve documentação desta API porém não informa as chamadas: Função:ItemTaxSimulationPublic - API Pública p/ Retorno da Simulação dos impostos de um Estabelecimento x Cliente x Item DT Criação da API pública ItemTaxSimulationPublic - Linha Datasul - TDN USING PROGRESS.Json.ObjectModel.JSONObject. USING PROGRESS.Json.ObjectModel.JSONArray. USING PROGRESS.Json.ObjectModel.ObjectModelParser. USING OpenEdge.Net.HTTP.lib.ClientLibraryBuilder. USING OpenEdge.Net.HTTP.IHttpClientLibrary. USING OpenEdge.Net.HTTP.ClientBuilder. USING OpenEdge.Net.HTTP.RequestBuilder. USING OpenEdge.Net.HTTP.IHttpClient. USING OpenEdge.Net.HTTP.IHttpResponse. USING OpenEdge.Net.HTTP.IHttpRequest. USING OpenEdge.Net.URI. DEF VAR oLib AS IHttpClientLibrary NO-UNDO. DEF VAR oLib AS IHttpClientLibrary NO-UNDO. DEF VAR oHttpClient AS IHttpClient NO-UNDO. DEF VAR oURI AS URI NO-UNDO. DEF VAR oResponse AS IHttpResponse NO-UNDO. /* Variaveis de conexao com o servico */ /* Variaveis de conexao com o servico */ DEF VAR c-url AS CHAR NO-UNDO. /* Ex: http://embau ou um IP: http://10.80.72.113 */ DEF VAR c-porta AS CHAR NO-UNDO. /* Ex: 8480 */ DEF VAR c-usuario AS CHAR NO-UNDO. /* Ex: super */ DEF VAR c-senhaBase64 AS CHAR NO-UNDO. /* Senha codificada base64. Ex: sszk@123 -> c3N6a0AxMjM= */ DEF VAR c-protocolo AS CHAR NO-UNDO. /* Ex: http */ DEF VAR c-protocolo AS CHAR NO-UNDO. /* Ex: http */ DEF VAR c-token AS CHAR NO-UNDO. /* Eh gerado a partir do usuario e senha */ DEF VAR oJsonRemessa AS JSONObject NO-UNDO. /* JSON que sera enviado no POST (body) */ DEF VAR oRequest AS IHttpRequest NO-UNDO. DEF VAR c-rota AS CHAR NO-UNDO. /* Rota, exemplo: dts/datasul-rest/resources/prg/ftp/v1/itemTaxSimulationPublic */ DEF VAR oJsonObject AS JsonObject NO-UNDO. DEF VAR oJsonObject AS JsonObject NO-UNDO. DEF VAR JsonString AS LONGCHAR NO-UNDO. ASSIGN c-url = "http://embau" ASSIGN c-url = "http://embau" c-porta = "8480" c-usuario = "SUPER" c-senhaBase64 = "c3N6a0AxMjM=" c-rota = "dts/datasul-rest/resources/prg/ftp/v1/itemTaxSimulationPublic?itemCode=.compras&siteCode=1&customerCode=136". oJsonRemessa = NEW JsonObject(). /* body da requisocao post (no caso da itemTaxSimulationPublic os parametros sao no query) */ oJsonRemessa = NEW JsonObject(). /* body da requisocao post (no caso da itemTaxSimulationPublic os parametros sao no query) */ //oJsonRemessa:AddNumber('OrderNum','3213'). RUN getRequest (INPUT c-rota, INPUT oJsonRemessa, OUTPUT oRequest). /* monta a requisicao */ RUN getRequest (INPUT c-rota, INPUT oJsonRemessa, OUTPUT oRequest). /* monta a requisicao */ ASSIGN oResponse = oHttpClient:EXECUTE(oRequest). /* executa a requisicao */ IF oResponse:StatusCode = 200 THEN DO: /* respondeu 200 OK imprime resposta */ IF oResponse:StatusCode = 200 THEN DO: /* respondeu 200 OK imprime resposta */ oJsonObject = CAST(oResponse:Entity, JsonObject). oJsonObject:WRITE(JsonString, TRUE). MESSAGE STRING(JsonString) MESSAGE STRING(JsonString) VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. END. /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ PROCEDURE getRequest PRIVATE: PROCEDURE getRequest PRIVATE: DEF INPUT PARAM c-rota AS CHARACTER NO-UNDO. /* Rota, exemplo: dts/datasul-rest/resources/prg/ftp/v1/itemTaxSimulationPublic */ DEF INPUT PARAM p-oJsonRemessa AS JSONObject NO-UNDO. /* JSON que sera enviado no POST */ DEF OUTPUT PARAM p-oRequest AS IHttpRequest NO-UNDO. IF c-protocolo = "" THEN DO: IF c-protocolo = "" THEN DO: ASSIGN c-protocolo = IF INDEX(c-url,"://") = 0 THEN "http" ELSE SUBSTRING(c-url,1,INDEX(c-url,"://") - 1) c-url = IF INDEX(c-url,"://") = 0 THEN c-url ELSE SUBSTRING(c-url,INDEX(c-url,"://") + 3,LENGTH(c-url)). END. DO ON ERROR UNDO, THROW: DO ON ERROR UNDO, THROW: DELETE OBJECT oURI NO-ERROR. ASSIGN oURI = NEW URI(c-protocolo, c-url) oURIort = INT(c-porta) oLib = ClientLibraryBuilder:Build():sslVerifyHost(NO):LIBRARY oHttpClient = ClientBuilder:Build():UsingLibrary(oLib):Client. END. RUN geraToken. /* gera token para autenticacao */ RUN geraToken. /* gera token para autenticacao */ ASSIGN oURIath = c-rota ASSIGN oURIath = c-rota p-oRequest = RequestBuilderost(oURI, p-oJsonRemessa,"application/json":U) :AddHeader("Authorization":U, c-token) :AddHeader("Accept-Charset":U, "utf-8":U) :REQUEST. END PROCEDURE. END PROCEDURE. PROCEDURE geraToken PRIVATE: PROCEDURE geraToken PRIVATE: def var lc-token-long as longchar no-undo. def var lc-senha-long as longchar no-undo. def var mptr-token as memptr no-undo. def var mptr-senha as memptr no-undo. if c-senhaBase64 = '' then if c-senhaBase64 = '' then assign c-senhaBase64 = 'IA=='. /*'IA== ‚ espa‡o em branco codificado em BASE64'*/ ASSIGN lc-senha-long = c-senhaBase64. ASSIGN lc-senha-long = c-senhaBase64. ASSIGN mptr-senha = BASE64-DECODE(lc-senha-long). copy-lob mptr-senha to lc-senha-long. assign lc-token-long = if c-usuario = "" then "" else c-usuario + ':' assign lc-token-long = if c-usuario = "" then "" else c-usuario + ':' lc-token-long = lc-token-long + lc-senha-long. copy-lob lc-token-long to mptr-token. copy-lob lc-token-long to mptr-token. assign lc-token-long = base64-encode(mptr-token). assign c-token = "Basic ":U + lc-token-long. RETURN "OK":U. RETURN "OK":U. END PROCEDURE.