Ir para conteúdo
  • Cadastre-se

dev botao

Erro no ACBrExtratoAPI do Banco Brasil


Recommended Posts

  • Membros Pro

Bom dia, 

Comecei usar o novo componente ACBrExtratoAPI  para o Banco do Brasil.

Estou tento problema para consultar o extrato para as datas quando o dia é menor que 10, olhando a documentação do banco notei que deve ser enviada a data sem zeros a esquerda, por exemplo:

Dia 01/09/2024 deve ser enviado 1092024.

Segue página da documentação.

https://apoio.developers.bb.com.br/referency/post/647f6e28dcefbe001288865e

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia!

Atualizei e resolveu esse problema, agora estou fazendo a importação dos dados.

Tentei seguir o programa exemplo, mas estou com dificuldade para importar os números dos documentos dos extratos, no exemplo está utilizando a classe geral de Lançamentos e não possui o campo numero do documento, olhando os fontes no banco do Brasil trata esse campo.

Como posso fazer para ler na importação o numero do documento?

 

Classe geral:

  TACBrExtratoLancamento = class
  private
    fpDataLancamento: TDateTime;
    fpDataMovimento: TDateTime;
    fpDescricao: String;
    fpInfoComplementar: String;
    fpTipoOperacao: TACBrExtratoAPITipoOperacao;
    fpValor: Double;

 

Classe Banco Brasil

TACBrExtratoBBLancamento = class(TACBrAPISchema)
  private
    fcodigoAgenciaContrapartida: Integer;
    fcodigoAgenciaOrigem: Integer;
    fcodigoBancoContrapartida: Integer;
    fcodigoHistorico: String;
    fdataLancamento: TDateTime;
    fdataMovimento: TDateTime;
    findicadorTipoLancamento: Integer;
    fnumeroContaContrapartida: String;
    fnumeroCpfCnpjContrapartida: Integer;
    fnumeroDocumento: Integer;
    fnumeroLote: Integer;
    ftextoDescricaoHistorico: String;
    ftextoDvContaContrapartida: String;
    ftextoInformacaoComplementar: String;
    fvalorLancamento: Double;
    findicadorSinalLancamento: TACBrExtratoAPITipoOperacao;
    findicadorTipoPessoaContrapartida: TACBrExtratoBBTipoPessoa;

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você poderia usar TypeCast... mas se fizer isso, o seu código ficará funcional, apenas para a API do Banco do Brasil, pois as demais classes filhas, podem não ter todas as mesmas propriedades

@EliasCesar,

Porque foi necessário separar TACBrExtratoLancamento  e TACBrExtratoBBLancamento ?

Como você pensa em especificar, as classes dos demais bancos ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia pessoal, 

Foi criada a classe TACBrExtratoLancamento que possui os campos em comum entre as respostas dos Bancos que já implementamos.
Ela poderia ser alterada para abranger esse campo específico, porém não seria preenchida na implementação dos demais Bancos.

14 horas atrás, Daniel Simoes disse:

Como você pensa em especificar, as classes dos demais bancos ?

Todos os bancos possuirão uma classe específica de resposta do lançamento, e após a consulta precisarão converter esse conteúdo para a nossa classe padrão TACBrExtratoLancamento 

22 horas atrás, Desenv. AT Info Sistemas disse:

preciso de uma ajuda para buscar o retorno com os dados do Extrato do Banco do Brasil

Uma alternativa é fazer um typecast, como o Daniel citou. Algo como:

  if (ACBrExtratoAPI1.BancoConsulta = bccBancoDoBrasil) then
    for i := 0 to Pred(ACBrExtratoAPI1.ExtratoConsultado.Lancamentos.Count) do
      wNumDocto := TACBrExtratoBBLancamento(ACBrExtratoAPI1.ExtratoConsultado.Lancamentos[i]).numeroDocumento;

 

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia,

Mas acredito que o Numero do Documento terá em todos os demais bancos, pois se trata de um campo principal do documento, alguns poderão retornar em um campo com nome diferente, como 'Seu numero', 'Numero documento', 'Documento'.

Acredito que poderia add o campo Numero do Documento na classe principal.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Sim, concordo que na teoria deveria vir em todos os bancos mesmo. 
Mas da uma olhada na resposta das transações do banco Inter:

image.png

Como eu coloquei apenas os campos comum entre os bancos, acabei deixando esse campo fora. 
Mas vou efetuar a alteração incluindo esse campo no objeto padrão.

Tem mais algum campo que vcs julguem importante que deveria estar no TACBrExtratoLancamento?
daí eu ja incluo junto aqui...

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

  • Consultores

Conforme a documentação da API Extrato do Banco do Brasil, esse campo é Integer:
image.png


E pelo que verifiquei nos meus testes, em todas as respostas da lista de lançamentos o campo também é integer:
image.png

2 horas atrás, Desenv. AT Info Sistemas disse:

o correto é ser String

Essa informação está em alguma documentação?

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde

Identifiquei o erro, na importação que fiz os números não bateram por exemplo no log no dia 19092024 tem um documento com número  "numeroDocumento": 550911000030471 ,  mas o Acbr no retorno está retornando como -160060153.

Deve ter algum erro na conversão de inteiro para string.

 

Segue o log com a importação

Extrato.log

Link para o comentário
Compartilhar em outros sites

  • Consultores

Deu erro logo ao tentar solicitar o token, 
Provavelmente é algum problema com as credenciais/certificado ou estão faltando as DLLs da OpenSSL junto ao executável.

Sobre o problema do Integer... tente trocar essa unit e fazer um novo teste por favor:
ACBrExtratoAPIBB.pas

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

  • Consultores

Vi que está configurando a chave pública. O componente está esperando a chave privada.

14 minutos atrás, Desenv. AT Info Sistemas disse:

Quanto ao número do documento deu certo,  importou corretamente

Obrigado pelo feedback. Acabei de enviar ao SVN, rev: 35396.

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

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