Olá!
Estou desenvolvendo uma rotina de integração bancária. No caso, estou desenvolvendo a parte de um endpoint que utiliza CERTIFICADO DIGITAL (conexão MTLS). Utilizo o FwRest() atualmente, alguém sabe de que forma eu poderia fazer isso?
Já desenvolvi outros endpoints que não necessitam de MTLS (somente TLS nos outros).
Alguma idéia?
3 curtidas
Pessoal, resolvi o problema utilizando a função HTTPSPOST(). Praticamente a mesma coisa que o FwRest(), a diferença é que com essa função conseguimos enviar os certificados digitais junto à requisição.
Pode fechar o tópico adm :)
3 curtidas
Amigo, teria um exemplo da chamada com o certificado + client id e client secret? Montando o certificado?
@raphael.araujo1
Segue link:
https://tdn.totvs.com/display/tec/HTTPSPost
Segue exemplo:
#include "totvs.ch"
user function TSTPostSSL()
Local cURL := "https://homologacao.nfe.fazenda.sp.gov.br:443/nfeWEB/services/NfeStatusServico.asmx"
Local nTimeOut := 120
Local aHeadOut := {}
Local cHeadRet := ""
Local cPostRet := ""
// Acrescenta o UserAgent na requisição ...
// http://tools.ietf.org/html/rfc3261#page-179
AAdd( aHeadOut, 'User-Agent: Mozilla/4.0 (compatible; Protheus ' + GetBuild() + ')' )
cPostRet := HTTPSPost( cURL, "\certs\cert.pem" , "\certs\privkey.pem" , "pwdprivkey" , "" , "" , nTimeOut, aHeadOut, @cHeadRet )
if Empty( cPostRet )
conout( "Fail HTTPSPost" )
else
conout( "OK HTTPSPost" )
varinfo( "WebPage" , cPostRet )
endif
varinfo( "Header" , cHeadRet )
return
Felipe, este em especifico só passa o certificado, preciso que também passe o client id e o client secret. Será que é possível?
Veja se isso te ajuda
cURL := "https://teste.com"
aHeader := {"Content-Type:application/x-www-form-urlencoded"}
cResource := "/api"
cPostParam := 'grant_type='+Self:cKeyGrant+'&client_id='+Self:cMVXMLCID+'&client_secret='+Self:cMVXMLCSEC+'&scope='+Self:cKeyScope
//Realiza o post de acordo com o cURL e cResource
oRest := FwRest():New(cURL)
oRest:SetPath(cResource)
oRest:SetPostParams(cPostParam)
oJsonResp := JsonObject():New()
If oRest:Post(aHeader)
EndIf
Entendido, da pra usar o HTTSPOST com o cParams, passando as chaves.
Certo?
Tentarei, muito obrigado.
1 curtida