Boa noite pessoal!
Estou com um problema com um método POST da API de um banco para registro online de cobrança. Fiz todo procedimento pelo POSTMAN e funciona, ou seja, já descartei problemas técnicos do "lado de lá". Mas no ADVPL não estou conseguindo de maneira alguma Estou usando FwRest e a resposta é sempre a mesma, ERRO 401 - NÃO AUTORIZADO.
Será que alguém já passou por isso e poderia me dar uma luz? Abaixo segue o código cURL do POSTMAN. É basicamente o código de autorização e o JSON com os dados do título.
**curl --location --request POST 'https://api.brb.com.br/boletos/v1.0.0/boletosonline' \**
**--header 'Authorization: Bearer a84a1c53-4fc4-4167-9417-2b724f5fb232' \**
**--header 'Content-Type: application/json' \**
**--data-raw '{
"incrementoCampoLivreNossoNumero":"000",
"codigoBeneficiario":"0780200888",
"nossoNumero":"100699607080",
"seuNumero":"1000015956",
"nomePagador":"RAFA RAFINHA RAFAO",
"enderecoPagador":"Rua 45 ,100",
"bairroPagador":"Jereissati II",
"cidadePagador":"Maracanaú",
"ufPagador":"CE",
"cepPagador":"61901050",
"codigoTipoPagador":"1",
"cpfCnpjPagador":"72533471100",
"identificadorSequencialCarne":"0",
"tipoCobranca":"0",
"especieDocumento":"22",
"codigoMoeda":"2",
"indicadorImpressao":"2",
"agenciaCobranca":"078",
"dataEmissaoTitulo":"30/05/2022",
"codigoCondicaoPagamento":"0",
"dataVencimento":"10/10/2023",
"valor":"10.94",
"valorAbatimento":"0",
"descontoAntecipacao":"0",
"iof":"0",
"prazoCobrancaJuros":"0",
"tipoJuros":"12",
"valorJuro":"0",
"tipoDesconto":"0",
"valorDesconto1":"0",
"dataDesconto1":"0",
"valorDesconto2":"0",
"dataDesconto2":"0",
"valorDesconto3":"0",
"dataDesconto3":"0",
"codigoInstrucao1":"03",
"prazoInstrucao1":"000",
"codigoInstrucao2":"94",
"prazoInstrucao2":"030",
"codigoInstrucao3":"00",
"prazoInstrucao3":"000",
"valorTaxaRef":"10.94",
"prazoProtesto":"000",
"localPagamento":"01",
"distribuicaoBoletos":"0",
"nomeSacador":"SINDICATO DOS POLICIAIS PENAIS DO DF",
"tipoDocSacador":"2",
"cpfCnpjSacador":"11236674000106",
"codigoRateio":"0",
"valorRateio1":"0",
"valorRateio2":"0",
"valorRateio3":"0",
"primeiraMensagem":" ",
"segundaMensagem":" ",
"terceiraMensagem":" ",
"quartaMensagem":" ",
"identificacaoTipoPagamento":"03",
"identificacaoPagamentosPossiveis":"01",
"tipoValorMaximo":"2",
"valorMaximoPercentual":"10.94",
"tipoValorMinimo":"2",
"valorMinimoPercentual":"10.94"
}'**
O que eu preciso saber? Como colocar isto no ADVPL! Tentei da seguinte forma:
//Cabeçalho
aAdd(aHeadPar,"Authorization: Bearer a84a1c53-4fc4-4167-9417-2b724f5fb232")
aAdd(aHeadPar, "Content-Type: application/json;charset=UTF-8")
aAdd(aHeadPar, "Content-Length: "+cValtochar(Len(cJson)) )
//Monta a conexão com o servidor REST
oRestBRB := FWRest():New("https://api.brb.com.br")
oRestBRB:setPath("/boletos/v1.0.0/boletosonline")
//Definindo o parâmetro a ser usado no POST
cJson := FWNoAccent(cJson)
oRestBRB:SetPostParams(cJson)
//Publica a alteração, e caso não dê certo, mostra erro
If ! oRestBRB:Post(aHeadPar)
Aviso('Atenção', 'Houve erro na atualização no servidor!' + CRLF + ;
'Contate o Administrador!', {'OK'}, 03)
Conout(oRestBRB:GetResult())
Else
Alert("Deu bom: "+oRestClient:GetResult())
EndIf
Qualquer ajuda ou dica, será bem vinda!
Resolvido! Na verdade, por precaução, não fiz mais o json manual como estava testando, para eliminar o risco de erro na sintaxe utilizei JsonObject, e o erro principal no processo foi uma confusão feita com a checagem do token enviado pelo banco. Por algum motivo, este banco em específico, retorna mais de um TOKEN de validação na primeira requisição (feita com httppost), eu estava utilizando o TOKEN errado no envio do post de registro do título, por esta razão era sempre NÃO AUTORIZADO. A sintaxe no fonte esta correta, o envio dos dados é que estava errado. FUNFOU...
— RAFAEL DE PAULA ARAUJO 09 de Jun de 2022