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