Ir para conteúdo
  • Cadastre-se

dev botao

Emissão de Boleto com registro online itaú na API v2


Ver Solução Respondido por Daniel InfoCotidiano,
  • Este tópico foi criado há 229 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Vou deixar minha procedure de emissão de boleto usando API de Cobrança v2 em anexo. O mais importante é entender o processo que o site developers orienta. A ajuda dos gerente de conta é fundamental, mesmo que eles não entenda praticamente nada sobre o processo, porque quem abre a ocorrência para implantar a API de Cobrança é o gerente de conta PJ do itaú.

 

 

Procedure Emissão Boleto Itau v2.txt

Editado por JHONLENON
  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 08/11/2022 at 22:26, JHONLENON disse:

Coletek MG Eu consegui fazer a baixar....agora está 100%...Emissão, Consulta e Baixa na API Cobranca v2. O erro 403 Forbidden na consulta é permissão no seu token, nesse caso vc tem que reportar ao suporte do itaú para dá permissão no seu token. 

Eu consegui fazer os métodos de PATCH..

Tive o mesmo problema do Forbidden 403 por semanas... até o banco auxiliar e liberar o acesso.

Quanto a consulta, não consegui fazer no Delphi e fiz uma API auxiliar no PHP onde o Delphi a consome.

Ao testar com um boleto quitado, a consulta sempre retorna vazio, ou que o o boleto está "Em aberto", mesmo tendo sido quitado e apresentado no portal como "Quitado", mas via API retorna sempre "Em aberto". 

Em retorno do banco, eles disseram que tiveram problemas com alguns clientes, incluindo a Natura.

Link para o comentário
Compartilhar em outros sites

Em 29/10/2022 at 15:42, JHONLENON disse:

Boa tarde, esse é meu códgio para obter o token bearer e emissão de boleto na API v2 do itaú, feito com indy. Implementação concluida com sucesso.API de Cobrança v2 Itaú.

uses IdHTTP, IdIOHandlerStack, IdSSL, blcksock, System.Json, IdGlobalProtocols, IdSSLOpenSSL, synautil, synsock, ssl_openssl;

procedure TF_boleto.EnviarBoletoItau;
var mURL, sResponse, mCode : string;
HTTP, HttpClient: TIdHTTP;
FParams, access_token, refresh_token : String;
Json, scope, token_type, expires_in, RESULTADO_BOLETO : String;
JsontoSend, AResponseContent : TStringStream;
var IOHandler : TIdSSLIOHandlerSocketOpenSSL;
var Resp, Req, Resp_Cobranca, Req_Cobranca: TStringStream;
var Result, s, recieveID, DATA_EMISSAO, DATA_VENCIMENTO, ArquivoJSON, ACESSO_TOKEN, RESULTADO_TOKEN, valorTexto : String;
var TICKET_XML, XML_COBRANCA : TStringList;
var newFile, Arq_Liberacao : TextFile;
var TICKET, RET_CODE, TIPO_PESSOA, TIPO_AMBIENTE, NSU, sCAMINHGO_EXE, FURLToken, URL, NUMERO_CADASTRO_PESSOA, JSON_TOKEN, JSON_BOLETO : String;
var DIAS_MULTA, DATA_HORA_TOKEN : Integer;
  XMLResponse, TIPO_VALIDACAO, ID_BENEFICIARIO, VALOR_BOLETO, TIPO_CLIENTE, VALOR_JUROS, VALOR_MULTAS, TextoOriginal  : String;
  var JsonStreamRetorno, JsonStreamEnvio: TStringStream;
  SSL : TIdSSLIOHandlerSocketOpenSSL;
begin
  //-----Todo conhecimento que o homem possui é dada por DEUS-------------------
  if Length(DM.SQL_contas_receber_boletoCPF_CNPJ_Cliente.AsString) = 14 then
  begin
    TIPO_CLIENTE             := 'J';
    NUMERO_CADASTRO_PESSOA   := 'numero_cadastro_nacional_pessoa_juridica';
  end
  else
  begin
    TIPO_CLIENTE := 'F';
    NUMERO_CADASTRO_PESSOA   := 'numero_cadastro_pessoa_fisica';
  end;
  DATA_EMISSAO     :=PegarNumeros(DateToStr(DM.SQL_contas_receber_boletoDetalhe_Data_Emissao.AsDateTime));
  DATA_VENCIMENTO  :=PegarNumeros(DateToStr(DM.SQL_contas_receber_boletoDetalhe_Data_Vencimento.AsDateTime));
  TIPO_VALIDACAO   :='';
  if DM.TIPO_AMBIENTE_BOLETO = 'Homologação' then
  begin
    TIPO_VALIDACAO :='validacao';
  end
  else
  begin
    TIPO_VALIDACAO :='efetivacao';
  end;
  DATA_EMISSAO     :=Copy(DATA_EMISSAO, 5, 4)+ '-'+  Copy(DATA_EMISSAO, 3, 2)+ '-'+Copy(DATA_EMISSAO, 1, 2);
  DATA_VENCIMENTO  :=Copy(DATA_VENCIMENTO , 5, 4)+ '-'+  Copy(DATA_VENCIMENTO , 3, 2)+ '-'+Copy(DATA_VENCIMENTO , 1, 2);
  ID_BENEFICIARIO          :='';
  ID_BENEFICIARIO          :=DM.SQL_busca_contaEmpresa_Agencia.AsString + FormatFloat('0000000', DM.SQL_busca_contaEmpresa_conta.AsInteger) + DM.SQL_busca_contaEmpresa_Conta_Digito.AsString;
  VALOR_BOLETO             :='';
  VALOR_BOLETO             :=PegarNumeros(FormatFloat('#000000000000000.00', DM.SQL_contas_receber_boletoDetalhe_Valor_Falta.AsFloat));
  VALOR_MULTAS             :=PegarNumeros(FormatFloat('#000000000000000.00', roundabnt(DM.SQL_busca_contaMULTA_DIA.AsFloat,-2)));
  VALOR_JUROS              :=PegarNumeros(FormatFloat('#000000000000000.00', roundabnt(VALOR_MOURA_JUROS,-2)));

  JSON_BOLETO :='{' + #13 +
                '    "data": {' + #13 +
                '        "etapa_processo_boleto": "'+TIPO_VALIDACAO+'",' + #13 +
                '        "codigo_canal_operacao": "API",' + #13 +
                '        "beneficiario": {' + #13 +
                '            "id_beneficiario": "'+ID_BENEFICIARIO+'"' + #13 +
                '        },' + #13 +
                '        "dado_boleto": {' + #13 +
                '            "descricao_instrumento_cobranca": "boleto",' + #13 +
                '            "tipo_boleto": "a vista",' + #13 +
                '            "codigo_carteira": "'+DM.SQL_busca_contaCarteira.AsString +'",' + #13 +
                '            "valor_total_titulo": "'+VALOR_BOLETO+'",' + #13 +
                '            "codigo_especie": "01",' + #13 +
                '            "valor_abatimento": "000",' + #13 +
                '            "data_emissao": "'+DATA_EMISSAO+'",' + #13 +
                '            "indicador_pagamento_parcial": false,' + #13 +
                '            "quantidade_maximo_parcial": 0,' + #13 +
                '            "pagador": {' + #13 +
                '                "pessoa": {' + #13 +
                '                    "nome_pessoa": "'+TrocaEComercialPorE(TiraAcentos(Copy(DM.SQL_contas_receber_boletoNomeRazaoSocial.AsString, 1, 50)))+'",' + #13 +
                '                    "tipo_pessoa": {' + #13 +
                '                        "codigo_tipo_pessoa": "'+TIPO_CLIENTE+'",' + #13 +
                '                        "'+NUMERO_CADASTRO_PESSOA+'": "'+DM.SQL_contas_receber_boletoCPF_CNPJ_Cliente.AsString+'"' + #13 +
                '                    }' + #13 +
                '                },' + #13 +
                '                "endereco": {' + #13 +
                '                    "nome_logradouro": "'+TrocaEComercialPorE(TiraAcentos(Copy(DM.SQL_contas_receber_boletoEndereco.AsString, 1, 40)))+ ', '+Copy(DM.SQL_contas_receber_boletoNumero.AsString, 1, 5)+'",' + #13 +
                '                    "nome_bairro": "'+TrocaEComercialPorE(TiraAcentos(Copy(DM.SQL_contas_receber_boletoBairro.AsString, 1, 40)))+'",' + #13 +
                '                    "nome_cidade": "'+TrocaEComercialPorE(TiraAcentos(Copy(DM.SQL_contas_receber_boletoCidade.AsString, 1, 40)))+'",' + #13 +
                '                    "sigla_UF": "'+DM.SQL_contas_receber_boletoUF.AsString+'",' + #13 +
                '                    "numero_CEP": "'+DM.SQL_contas_receber_boletoCEP.AsString+'"' + #13 +
                '                }' + #13 +
                '            },' + #13 +
                '            "dados_individuais_boleto": [{' + #13 +
                '                "numero_nosso_numero": "'+sNOSSO_NUMERO_ITAU+'",' + #13 +
                '                "data_vencimento": "'+DATA_VENCIMENTO+'",' + #13 +
                '                "valor_titulo": "'+VALOR_BOLETO+'",' + #13 +
                '                "texto_uso_beneficiario": "'+DM.SQL_contas_receber_boletoDetalhe_N_Parcela.AsString+'",' + #13 +
                '                "texto_seu_numero": "'+DM.SQL_contas_receber_boletoDetalhe_N_Documento.AsString+'"' + #13 +
                '            }],' + #13 +
                '            "multa": {' + #13 +
                '                "codigo_tipo_multa": "02",' + #13 +
                '                "quantidade_dias_multa": 1,' + #13 +
                '                "percentual_multa": "'+VALOR_MULTAS+'"' + #13 +
                '            },' + #13 +
                '            "juros": {' + #13 +
                '                "codigo_tipo_juros": 93,' + #13 +
                '                "quantidade_dias_juros": 1,' + #13 +
                '                "valor_juros": "'+VALOR_JUROS+'"' + #13 +
                '            },' + #13 +
                '            "recebimento_divergente": {' + #13 +
                '                "codigo_tipo_autorizacao": "03"' + #13 +
                '            },' + #13 +
               // '            "instrucao_cobranca": [' + #13 +
               // '                {' + #13 +
               // '                    "codigo_instrucao_cobranca": "4",' + #13 +
               // '                    "quantidade_dias_apos_vencimento":60,' + #13 +
               // '                    "dia_util":false' + #13 +
               // '                }        ' + #13 +
               // '            ],  ' + #13 +
                '            "protesto": {' + #13 +
                '                "protesto": 4,' + #13 +
                '                "quantidade_dias_protesto": 1' + #13 +
                '            },' + #13 +
                '            "negativacao": { ' + #13 +
                '                 "negativacao": 5, ' + #13 +
                '                 "quantidade_dias_negativacao": 1 ' + #13 +
                '             }, ' + #13 +
                '        ' + #13 +
                '            "desconto_expresso": false' + #13 +
                '        }' + #13 +
                '    }' + #13 +
                '}';

   ArquivoJSON          := '';
   ArquivoJSON          := JSON_BOLETO;
   sCAMINHGO_EXE        := (ExtractFilePath(ParamStr(0)) +'Boletos\LogsWebservice\');
   System.AssignFile(newFile, sCAMINHGO_EXE + Trim('Registro _Itau_'+sNOSSO_NUMERO_ITAU) + '.json');
   System.Rewrite(newFile);
   WriteLn(newFile, ArquivoJSON);
   System.CloseFile(newFile);

   RESULTADO_TOKEN  :='';
   access_token     :='';
   JSON_TOKEN       := 'grant_type=client_credentials&client_id='+ DM.SQL_busca_contaClientID.AsString+'&client_secret='+DM.SQL_busca_contaClientSecret.AsString;
   try
     HttpClient := TIdHTTP.Create( nil );
     SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
     HttpClient.IOHandler := SSL;
     JsonStreamEnvio   := TStringStream.Create(utf8Encode(JSON_TOKEN));
     DATA_HORA_TOKEN      :=DM.conecta.ExecSQLScalar('SELECT IFNULL(TIMESTAMPDIFF (MINUTE,Data_access_token,NOW()),8) AS QTD_Horas FROM configuracao_boleto where Codigo_Config_Boleto =:BANCO and CodLoja_Boleto =:COD_LOJA', [DM.COD_BANCO, DM.COD_LOJA]);
     if DATA_HORA_TOKEN >= 4 then
     begin
       with SSL.SSLOptions do
       begin
         CertFile     := ExtractFilePath(ParamStr(0)) +'Boletos\Certificado\Itau\ARQUIVO_CERTIFICADO.crt';
         KeyFile      := ExtractFilePath(ParamStr(0)) +'Boletos\Certificado\Itau\ARQUIVO_CHAVE_PRIVADA.key';
         Mode         := sslmUnassigned;
         Method       := sslvSSLv23;
         SSLVersions  := [sslvSSLv23];
       end;

       URL  :='essa url está no portal do developers itau';
       with HttpClient do
       begin
          Request.CharSet := 'utf-8';
          Request.Accept := '*/*';
          Request.AcceptEncoding := 'gzip, deflate, br';
          Request.CustomHeaders.Values['Content-Type'] := 'application/x-www-form-urlencoded';
          Request.CustomHeaders.Values['x-itau-flowID'] := DM.SQL_busca_contaClientID.AsString + 'd7';
          Request.CustomHeaders.Values['x-itau-correlationID'] := DM.SQL_busca_contaClientSecret.AsString;
          Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';
          HandleRedirects := True;
          HTTPOptions := [hoKeepOrigProtocol, hoInProcessAuth];
       end;

       try
         RESULTADO_TOKEN := HttpClient.Post(URL,JsonStreamEnvio);
          Except
       on E: Exception do
         begin
           ERRO_ITTAU      :='SIM';
           RESULTADO_TOKEN :=HttpClient.ResponseText;
           ArquivoJSON     :='';
           ArquivoJSON     := RESULTADO_TOKEN;
           sCAMINHGO_EXE   := (ExtractFilePath(ParamStr(0)) +'Boletos\LogsWebservice\');
           System.AssignFile(newFile, sCAMINHGO_EXE + Trim(sNOSSO_NUMERO_ITAU +'_erro_retorno_itau') + '.json');
           System.Rewrite(newFile);
           WriteLn(newFile, ArquivoJSON);
           System.CloseFile(newFile);
         end;
       end;

       if HttpClient.ResponseCode = 200 then
       begin
         access_token  :='';
         expires_in    :='';
         access_token  :=getCamposJsonString(RESULTADO_TOKEN, 'access_token');
         expires_in    :=getCamposJsonString(RESULTADO_TOKEN, 'expires_in');
         scope         :=getCamposJsonString(RESULTADO_TOKEN, 'scope');
         DM.conecta.ExecSQL('update configuracao_boleto set access_token =:TOKEN, Scope =:SCOPE, expires_in =:EXPIRA, Data_access_token =NOW() where Codigo_Config_Boleto =:BANCO and CodLoja_Boleto =:COD_LOJA', [access_token, scope, StrToInt(expires_in), DM.COD_BANCO, DM.COD_LOJA]);
       end
        else
       begin
         ERRO_ITTAU     :='SIM';
         ArquivoJSON    :='';
         ArquivoJSON    := RESULTADO_TOKEN;
         sCAMINHGO_EXE  := (ExtractFilePath(ParamStr(0)) +'Boletos\LogsWebservice\');
         System.AssignFile(newFile, sCAMINHGO_EXE + Trim(sNOSSO_NUMERO_ITAU +'_erro_retorno_itau') + '.json');
         System.Rewrite(newFile);
         WriteLn(newFile, ArquivoJSON);
         System.CloseFile(newFile);
       end;
     end
     else
     begin
       access_token  :='';
       access_token  :=DM.conecta.ExecSQLScalar('select IFNULL(access_token, "") AS token from configuracao_boleto where Codigo_Config_Boleto =:BANCO and CodLoja_Boleto =:COD_LOJA', [DM.COD_BANCO, DM.COD_LOJA]);
     end;

     if access_token <> '' then
     begin
        AResponseContent := TStringStream.Create('');
        JsonToSend := TStringStream.Create(JSON_BOLETO, TEncoding.UTF8);
        with SSL.SSLOptions do
        begin
          CertFile     := ExtractFilePath(ParamStr(0)) +'Boletos\Certificado\Itau\ARQUIVO_CERTIFICADO.crt';
          KeyFile      := ExtractFilePath(ParamStr(0)) +'Boletos\Certificado\Itau\ARQUIVO_CHAVE_PRIVADA.key';
          Mode         :=sslmUnassigned;
          Method       :=sslvSSLv23;
          SSLVersions  :=[sslvSSLv23];
        end;

        URL  :='está url está no portal do developers itau';
        with HttpClient do
        begin
           IOHandler :=IOHandler;
           Request.Clear;
           Request.CharSet := 'utf-8';
           Request.Accept := '*/*';
           Request.AcceptEncoding := 'gzip, deflate, br';
           Request.ContentType := 'application/json';
           Request.CustomHeaders.Values['Authorization'] :='Bearer '+access_token;
           Request.CustomHeaders.Values['x-itau-apikey'] :=DM.SQL_busca_contaClientID.AsString;
           Request.CustomHeaders.Values['x-itau-flowID'] :=DM.SQL_busca_contaClientID.AsString + 'd7';
           Request.CustomHeaders.Values['x-itau-correlationID'] := DM.SQL_busca_contaClientSecret.AsString;
           Request.UserAgent :='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';
           HandleRedirects := True;
           HTTPOptions := [hoKeepOrigProtocol, hoInProcessAuth];
        end;

        try
          RESULTADO_BOLETO   :='';
          RESULTADO_BOLETO   :=HttpClient.Post(URL, JsontoSend);
         except
          on E: Exception do
          begin
            ERRO_ITTAU       :='SIM';
            RESULTADO_BOLETO :=HttpClient.ResponseText;
            ArquivoJSON      :='';
            ArquivoJSON      := RESULTADO_BOLETO;
            sCAMINHGO_EXE    := (ExtractFilePath(ParamStr(0)) +'Boletos\LogsWebservice\');
            System.AssignFile(newFile, sCAMINHGO_EXE + Trim(sNOSSO_NUMERO_ITAU +'_erro_retorno_itau') + '.json');
            System.Rewrite(newFile);
            WriteLn(newFile, ArquivoJSON);
            System.CloseFile(newFile);
          end
        end;

        if HttpClient.ResponseCode = 200 then
        begin
           ArquivoJSON      :='';
           ArquivoJSON      := RESULTADO_BOLETO;
           sCAMINHGO_EXE    := (ExtractFilePath(ParamStr(0)) +'Boletos\LogsWebservice\');
           System.AssignFile(newFile, sCAMINHGO_EXE + Trim(sNOSSO_NUMERO_ITAU +'_retorno_itau') + '.json');
           System.Rewrite(newFile);
           WriteLn(newFile, ArquivoJSON);
           System.CloseFile(newFile);

           TextoOriginal    :='';
           valorTexto       :='';
           TextoOriginal    := RESULTADO_BOLETO;
           valorTexto       := Copy(TextoOriginal , Pos('numero_linha_digitavel', TextoOriginal) + 26, Length(TextoOriginal));
           LINHA_DIGITAVEL  :='';
           LINHA_DIGITAVEL  := Copy(valorTexto,1, 47);

           TextoOriginal    :='';
           valorTexto       :='';
           TextoOriginal    := RESULTADO_BOLETO;
           valorTexto       := Copy(TextoOriginal , Pos('codigo_barras', TextoOriginal) + 17, Length(TextoOriginal));
           COD_BARRA_BOLETO := '';
           COD_BARRA_BOLETO := Copy(valorTexto,1, 44);

           XMLTemporario.Append;
           XMLTemporarioNossoNumero.AsString     :=LINHA_DIGITAVEL;
            if Length(OnlyNumber(LINHA_DIGITAVEL)) = 47 then
           begin
             XMLTemporarioStatus.AsString        :='OK';
             XMLTemporarioObs.AsString           :='Boleto Registrado com Sucesso';
           end
           else
           begin
             ERRO_ITTAU                          :='SIM';
             XMLTemporarioStatus.AsString        :='ERRO';
             XMLTemporarioObs.AsString           :='Erro ao Registrar Boleto via API';
           end;
           XMLTemporarioNumeroDocumento.AsString :=NR_DOCUMENTO;
           XMLTemporarioParcela.AsInteger        :=NR_PARCELA;
           XMLTemporario.Post;
           XMLTemporario.Close;
           XMLTemporario.Open;
        end
        else
        begin
          ERRO_ITTAU       :='SIM';
          ArquivoJSON      :='';
          ArquivoJSON      := HttpClient.ResponseText;
          sCAMINHGO_EXE    := (ExtractFilePath(ParamStr(0)) +'Boletos\LogsWebservice\');
          System.AssignFile(newFile, sCAMINHGO_EXE + Trim(sNOSSO_NUMERO_ITAU +'_erro_retorno_itau') + '.json');
          System.Rewrite(newFile);
          WriteLn(newFile, ArquivoJSON);
          System.CloseFile(newFile);
        end;
     end;
   finally
     FreeAndNil(HttpClient);
     FreeAndNil(SSL);
   end;
end;
 

Bom Dia!

Qual URL é esta, que você citou ? 

" URL  :='está url está no portal do developers itau';"

Link para o comentário
Compartilhar em outros sites

flexmobile Está no portal do developers..infelizmente não posso postar algumas informações sobre a API do Itaú, quando somos cadastrado no portal do developers existe um contrato que falo sobre publicar informações interna sobre a API. Acessa o portal developers que está tudo lá...qualquer coisa me chama no privado.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...

Boa tarde!

JHONLENON e Coletek MG, vocês conseguiram consultar o boletos pagos no dia anterior, para realizar a baixa no sistema?

Pelo que vi na documentação da consulta, os parâmetros possíveis são data inclusão e nosso número, não vi possibilidade por data pagamento/status.

Vocês conseguiram de alguma forma?

Link para o comentário
Compartilhar em outros sites

14 horas atrás, Paulo Evaristo disse:

Boa tarde!

JHONLENON e Coletek MG, vocês conseguiram consultar o boletos pagos no dia anterior, para realizar a baixa no sistema?

Pelo que vi na documentação da consulta, os parâmetros possíveis são data inclusão e nosso número, não vi possibilidade por data pagamento/status.

Vocês conseguiram de alguma forma?

Bom dia....para o itaú não tem a opção de consultar por data de pagamento ou vencimento, apenas por nosso numero....um por um

Link para o comentário
Compartilhar em outros sites

Sem sentido essa limitação, já que existe uma consulta por data de inclusão, prq não colocar também por data pagamento.

Isso acaba consumindo a aplicação deles de forma desnecessária, pois vamos ter que consultar toda a carteira de títulos em aberto.

Já tentei ver se há uma forma alternativa, mas o suporte deles e nada e quase a mesma coisa.

Obrigado

Link para o comentário
Compartilhar em outros sites

Em 08/11/2022 at 22:39, JHONLENON disse:

Vou deixar minha procedure de emissão de boleto usando API de Cobrança v2 em anexo. O mais importante é entender o processo que o site developers orienta. A ajuda dos gerente de conta é fundamental, mesmo que eles não entenda praticamente nada sobre o processo, porque quem abre a ocorrência para implantar a API de Cobrança é o gerente de conta PJ do itaú.

 

 

Procedure Emissão Boleto Itau v2.txt 17.06 kB · 49 downloads

Boa tarde tudo bem?

Esse seu procedimento de emissão via API v2 engloba também o BOLECODE (QR Code) ?

Agradeço.

Fábio

Link para o comentário
Compartilhar em outros sites

fabiojrmoraes Bom dia, bolecode (Boleto PIX) do itaú é outra API diferente da API de Cobrança V2 deles....se vc já fez a v2 o processo é o mesmo...você teria pedir para seu cliente abrir uma nova implantação para boleto hibrido PIX, onde seria liberado a Recebimentos Pix - API exclusiva Itaú é nessa API que tem o bolecode, o json e header muda um pouco...mais é pouco parecido com a v2....só uma observação...você tem que gerar um novo certificado para essa nova API igual fez com v2.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
Em 17/11/2022 at 16:10, Coletek MG disse:

Eu consegui fazer os métodos de PATCH..

Tive o mesmo problema do Forbidden 403 por semanas... até o banco auxiliar e liberar o acesso.

Quanto a consulta, não consegui fazer no Delphi e fiz uma API auxiliar no PHP onde o Delphi a consome.

Ao testar com um boleto quitado, a consulta sempre retorna vazio, ou que o o boleto está "Em aberto", mesmo tendo sido quitado e apresentado no portal como "Quitado", mas via API retorna sempre "Em aberto". 

Em retorno do banco, eles disseram que tiveram problemas com alguns clientes, incluindo a Natura.

Coletek, tudo bom com você?
 

Você conseguiria disponibilizar o seu código? é a primeira API de cobrança de boletos que eu estou fazendo e me decai logo com a do Itaú V2 kskkkkkk, a minha demanda é para fazer em php. Se vc conseguisse disponibilizar me ajudaria imensamente. 

Infelizmente a empresa está com muita pressa para fazer essa API.

Desde já agradeço

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 1 mês depois ...

Bom dia, estou tendo o mesmo problema que muita gente aqui. Na hora de enviar o boleto eu recebo a mensage de 'handshake failure'.

Modifiquei o meu código e tentei fazer exatamente como o de JhonLenon e mesmo assim continuo obtendo o erro. 

Meu código:

var
  http: TIdHTTP;
  ssl: TIdSSLIOHandlerSocketOpenSSL;
  params: TStringList;
  response: string;
  JObject: TJsonObject;
begin
  Http := TIdHTTP.Create(nil);
  SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    with SSL.SSLOptions do
    begin
      CertFile     := CRT;
      KeyFile      := KEY;
      Mode         :=sslmUnassigned;
      Method       :=sslvSSLv23;
      SSLVersions  :=[sslvSSLv23];
    end;

    with http do
    begin
      IOHandler := IOHandler;
      Request.Clear;
      Request.CharSet := 'utf-8';
      Request.Accept := '*/*';
      Request.AcceptEncoding := 'gzip, deflate, br';
      Request.ContentType := 'application/json';
      Request.CustomHeaders.Values['Authorization'] :='Bearer '+token;
      Request.CustomHeaders.Values['x-itau-apikey'] := clientId;
      Request.UserAgent :='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';
      HandleRedirects := True;
      HTTPOptions := [hoKeepOrigProtocol, hoInProcessAuth];
    end;

//    http.IOHandler := ssl;

    response := http.Post(urlBoleto, payStream);

(http.IOHandler:= SSL;) Esse código ta comentado porque foi uma outra tentativa que fiz.

Versão do Delphi: 10.3.

Versão IdHTTP: 10.6.2.5366

Em anexo tem o erro que estou recebendo.

 

hadshake-faliure.png

Editado por Lucasmed
Link para o comentário
Compartilhar em outros sites

  • Consultores
4 minutos atrás, Julianops disse:

Caso alguém queira analisar, refratora e subir para o repositório a minha implementação

Bom dia @Julianops,

Obrigado pela contribuição! Foi aberta a TK-4089 para avaliar os fontes.
Assim que fizermos a análse retornamos aqui informando.

 

  • Curtir 1
Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

@Julianops
Primeiramente obrigado pela contribuição.
Pode me passar a documentação a qual vc usou para que possamos analisar e documentar a contribuição por favor.
se preferir enviar por email [email protected] e no corpo da mensagem favor colocar o link desta postagem.
No aguardo , obrigado

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Consultores

@jefferson01
Iniciei os testes com ambiente sandbox... atrasou um pouco p liberarem minhas credenciais...
estou utilizando as units anexadas acima. ontem testei inclusao foi normal.. hoje tive erros na inclusao mas deve ser alguma instabilidade... ja ja volto nos testes;

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 229 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.