Ir para conteúdo
  • Cadastre-se

dev botao

Problemas ao autenticar Token API Banco Inter


Ver Solução Respondido por José Francisco,

Recommended Posts

Postado (editado)

Olá Pessoal, estou tendo problemas na função que Gera o Token do boleto inter, pois o mesmo retorna HTTP_Code=500. Segue os logs completos do ACBrBoleto (Componente Delphi).

12/08/24 18:50:41:524 - Autenticando Token... 
12/08/24 18:50:41:525 - Comando Enviar: TOAuth
12/08/24 18:50:41:532 - URL: [POST] https://cdpj.partners.bancointer.com.br/oauth/v2/token
12/08/24 18:50:41:588 - Erro: HTTP_Code=500 Erro=client_id={AQUI EU COLOQUEI O MEU CLIENT_ID}&client_secret={AQUI EU COLOQUEI O MEU CLIENT SECRET}&scope=boleto-cobranca.read boleto-cobranca.write pagamento-boleto.write pagamento-boleto.read cob.write cob.read cobv.write cobv.read pix.write pix.read webhook.read webhook.write payloadlocation.write payloadlocation.read pagamento-pix.write pagamento-pix.read&grant_type=client_credentials
12/08/24 18:50:41:589 - Falha Envio: Falha na Autenticação: HTTP_Code=500 Erro=client_id={AQUI EU COLOQUEI O MEU CLIENT_ID}&client_secret={AQUI EU COLOQUEI O MEU CLIENT SECRET}&scope=boleto-cobranca.read boleto-cobranca.write pagamento-boleto.write pagamento-boleto.read cob.write cob.read cobv.write cobv.read pix.write pix.read webhook.read webhook.write payloadlocation.write payloadlocation.read pagamento-pix.write pagamento-pix.read&grant_type=client_credentials

 

Abaixo as configurações do componente ACBrBoleto:

procedure TForm1.ConfigurarComponente;
var
  Boleto         : TACBrBoleto;
  WebService     : TACBrWebService;
  Beneficiario   : TACBrCedente;
  BeneficiarioWS : TACBrCedenteWS;
  Banco          : TACBrBanco;
  Cobranca       : TACBrTipoCobranca;
begin
  Boleto     := ACBrBoleto1;
  WebService := Boleto.Configuracoes.WebService;
  Cobranca   := Boleto.Banco.TipoCobranca;
  Beneficiario   := Boleto.Cedente;
  BeneficiarioWS := Beneficiario.CedenteWS;

  Boleto.Homologacao := false;
  Boleto.Banco.TipoCobranca := cobBancoInter;

  BeneficiarioWS.ClientID     := '{AQUI EU COLOQUEI O MEU CLIENT_ID}';
  BeneficiarioWS.ClientSecret := '{AQUI EU COLOQUEI O MEU CLIENT SECRET}';
  BeneficiarioWS.KeyUser      := '';
  BeneficiarioWS.Scope        := 'boleto-cobranca.read boleto-cobranca.write pagamento-boleto.write pagamento-boleto.read '+
                                 'cob.write cob.read cobv.write cobv.read pix.write pix.read webhook.read webhook.write '+
                                 'payloadlocation.write payloadlocation.read pagamento-pix.write pagamento-pix.read';
  BeneficiarioWS.IndicadorPix := true;
  WebService.Ambiente         := taProducao;
  WebService.SSLHttpLib       := TSSLHttpLib(0);
  WebService.SSLType          := TSSLType(5);
  WebService.TimeOut          := 10000;
  WebService.ArquivoCRT       := DIR_CERTIF+'InterAPI_Certificado.crt';
  WebService.ArquivoKEY       := DIR_CERTIF+'InterAPI_Chave.key';


  //Dados do Cedente:
  Beneficiario.CodigoCedente      := '{MEU CODIGO}';
  Beneficiario.Nome                      := '{MINHA EMPRESA};
  Beneficiario.Agencia                  := '0001';
  Beneficiario.AgenciaDigito        := '1';
  Beneficiario.Conta                     := '{MINHA CONTA}';
  Beneficiario.ContaDigito            := '2';
end;

 

OBs.: Para testar se realmente o banco estava aceitando as minhas credenciais, eu configurei o Postman com os mesmos parâmetros, e ao enviar o método POST obtive com sucesso o "access_token".

Desde já agradeço

Editado por magisystem
Esconder dados pessoais
  • Moderadores
Postado
46 minutos atrás, magisystem disse:

WebService.SSLHttpLib       := TSSLHttpLib(0);

porque está deixando NONE aqui

TSSLHttpLib = (httpNone, httpWinINet, httpWinHttp, httpOpenSSL, httpIndy); 

deixaria assim

SSLHttpLib=3
SSLCryptLib=1
SSLXmlSignLib=4
SSLType=5

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado
15 horas atrás, Juliomar Marchetti disse:

porque está deixando NONE aqui

TSSLHttpLib = (httpNone, httpWinINet, httpWinHttp, httpOpenSSL, httpIndy); 

deixaria assim

SSLHttpLib=3
SSLCryptLib=1
SSLXmlSignLib=4
SSLType=5

 

Fala Juliomar blz, pois é, tbm testei assim, e da forma que vc enviou tbm, mesmo erro..

Postado
5 minutos atrás, Juliomar Marchetti disse:

então é algo com seu token ou até mesmo alguma informação que esteja diferente

pois é Juliomar, muito estranho, mas testei o token juntamente com os certificados e ids que o banco inter oferece no postman e funcionou normal. Ele da o erro na procedure TOAuth.ProcessarRespostaOAuth(const ARetorno: AnsiString); dentro de ACBrBoletoWS.Rest.OAuth.pas na linha em vermelho.

procedure TOAuth.ProcessarRespostaOAuth(const ARetorno: AnsiString);
var
  LJson        : TACBrJSONObject;
  LErrorMessage: String;
begin
  FToken           := '';
  FExpire          := 0;
  FErroComunicacao := '';
  try
    LJson := TACBrJSONObject.Parse(UTF8ToNativeString(ARetorno));
    try
      if (FHTTPSend.ResultCode in [ 200 .. 205 ]) then
      begin
        FToken := LJson.AsString[ 'access_token' ];
        try
          FExpire := now + (LJson.AsInteger[ 'expires_in' ] * OneSecond);
          DoLog('Validade: ' + DateTimeToStr(FExpire), logSimples);
        except
          FExpire := 0;
        end;
      end
      else
      begin
        FErroComunicacao := 'HTTP_Code=' + IntToStr(FHTTPSend.ResultCode);
        if Assigned(LJson) then
        begin
          LErrorMessage := LJson.AsString[ 'error_description' ];
          if LErrorMessage = '' then
            LErrorMessage  := LJson.AsString[ 'error_title' ];
          FErroComunicacao := FErroComunicacao + ' Erro=' + LErrorMessage;
        end;
        DoLog('Erro: ' + FErroComunicacao, logSimples);
      end;
    finally
      LJson.Free;
    end;
  except
    FErroComunicacao := 'HTTP_Code=' + IntToStr(FHTTPSend.ResultCode) + ' Erro=' + ARetorno;
    DoLog('Erro: ' + FErroComunicacao, logSimples);
  end;
end;

 

essa ARetorno vem alimentada da seguinte forma:

ARetorno: 'client_id={AQUI EU COLOQUEI O MEU CLIENT_ID}&client_secret={AQUI EU COLOQUEI O MEU CLIENT_SECRET}&scope=boleto-cobranca.read boleto-cobranca.write pagamento-boleto.write pagamento-boleto.read cob.write cob.read cobv.write cobv.read pix.write pix.read webhook.read webhook.write payloadlocation.write payloadlocation.read pagamento-pix.write pagamento-pix.read&grant_type=client_credentials'

EU acredito que deveria vir um JSON aqui.

Postado
14 minutos atrás, Juliomar Marchetti disse:

eu sei que está funcionando e tem gente usando pois já vi apessoa emitindo boletos portanto tem a ver com suas credenciais a situação.

mas não posso afirmar o que . eu não emito e não tenho dados, só estou tentando ajudar

Assim Juliomar, eu agradeço pela ajuda, vou continuar investigando aqui, abraços.

  • Solution
Postado

Consegui resolver meu Problema Juliomar, gerei uma nova API lá no site do banco inter, baixei os novos certificados em produção e funcionou normal, Obrigado pela atenção e a toda equipe.

  • Curtir 1
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.