Se alguma pergunta ou resposta lhe foi útil, não deixe de dar seu voto positivo!

Consumir API REST de registro de boleto

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!

compartilhar
  • 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
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags api boleto fwrest ou faça a sua própria pergunta.