Ir para conteúdo
  • Cadastre-se

dev botao

Consulta de boletos Sicoob


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

Recommended Posts

  • Membros Pro

Prezados,

Estou implementado a geração de boletos via api para o banco Sicoob.

Preciso fazer a consulta de boletos e estou preenchendo o componente da mesma forma que já faço para o banco do brasil e esta funcionando.

Porém recebo a seguinte mensagem:

Falha Envio: TBoletoW_BancoobOperação CONSULTA_BOLETO nao Implementado para este Banco

O que pode ser?

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

  • Consultores

Boa tarde !
Consulta do Sicoob não é igual o BB, cada API se comporta de uma forma.
Sicoob  tem tpConsultaDetalhe

 

So para complementar, na documentação do Sicoob existe uma maneira que vc precisa fazer algumas requisições para receber um arquivo compactado com os registros.
Mas devido a demora prevista, fica retornando time-out, infelizmente não tem como fazer o componente/lib aguardar tanto tempo os retornos.
 

 

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

  • Membros Pro
1 hora atrás, Daniel InfoCotidiano disse:

Boa tarde !
Consulta do Sicoob não é igual o BB, cada API se comporta de uma forma.
Sicoob  tem tpConsultaDetalhe

 

So para complementar, na documentação do Sicoob existe uma maneira que vc precisa fazer algumas requisições para receber um arquivo compactado com os registros.
Mas devido a demora prevista, fica retornando time-out, infelizmente não tem como fazer o componente/lib aguardar tanto tempo os retornos.
 

 

Certo, Daniel, mas não entendi, a consulta funciona para o Sicoob ou não?

Link para o comentário
Compartilhar em outros sites

  • Consultores
44 minutos atrás, rpaulogio disse:

Certo, Daniel, mas não entendi, a consulta funciona para o Sicoob ou não?

A consulta detalhe sim, observe o programa exemplo. tpConsultaDetalhe

  • Obrigado 1
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

  • Membros Pro
16 horas atrás, Daniel InfoCotidiano disse:

A consulta detalhe sim, observe o programa exemplo. tpConsultaDetalhe

Daniel, no programa exemplo não encontrei tpConsultaDetalhe, olhei no fonte da unit uDemoBoleto.pas, existe em outro lugar?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Tem sim, realizei o envio via WS de vários boletos no dia 28/07/2023 com vcto para 30 dias 

E realizei o pagamento no dia 28/07/2023 conforme anexo

 

 

pgto.png

agendamento.jpeg

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

  • Consultores

Eu não havia lido o tópico que o Daniel indicou.

A consulta por período não foi implementada, o programa de exemplo tem os parâmetros alimentados, pois serve de exemplo para outros bancos que utilizem essas informações, mas não estão sendo usados para o Sicoob.

A consulta existente para o Sicoob é unitária por NossoNumero, conforme abaixo.

../trunk2/Fontes/ACBrBoleto/WS/ACBrBoletoW_Bancoob.pas

procedure TBoletoW_Bancoob.DefinirURL;
var
  LNossoNumero,LContrato: string;
begin
  if( aTitulo <> nil ) then
  begin
    LNossoNumero := ACBrUtil.Strings.RemoveZerosEsquerda(OnlyNumber(aTitulo.NossoNumero)+aTitulo.ACBrBoleto.Banco.CalcularDigitoVerificador(aTitulo));
    LContrato    := OnlyNumber(aTitulo.ACBrBoleto.Cedente.CodigoCedente);
  end;
  FPURL := IfThen(Boleto.Configuracoes.WebService.Ambiente = taProducao, C_URL,C_URL_HOM);
  case Boleto.Configuracoes.WebService.Operacao of
  .
  .
  .
  tpConsultaDetalhe:  FPURL := FPURL + '/boletos?numeroContrato='+LContrato+'&modalidade=1&nossoNumero='+LNossoNumero;
 

Preencha as propriedades a seguir para consultar o título que foi pago:

aTitulo.NossoNumero

aTitulo.ACBrBoleto.Cedente.CodigoCedente

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

  • Consultores
1 hora atrás, ralty disse:

Porem continua não trazendo nenhuma informação no retorno 

Bom dia !
Se vc pesquisa no postman ele retorna a consulta ?
Pela lib, vc esta passando o NossoNumero sem o DV?

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

  • Membros Pro

Bom dia

pelo postman não consegui autenticar mesmo seguindo o exemplo deles

Em relação ao nosso numero, estou enviando sem o DV porem é incluído junto ao nosso número

LNossoNumero := ACBrUtil.Strings.RemoveZerosEsquerda(OnlyNumber(aTitulo.NossoNumero)+aTitulo.ACBrBoleto.Banco.CalcularDigitoVerificador(aTitulo));

 

Na documentação do sicoob aparentemente a consulta via nossoNumero é sem o DV, talves seja esse o problema de não retornar nenhuma informação.

image.thumb.png.558c6a84f7a414df5f2a9aa7f34ebe70.png

 

Na consulta esta sendo enviado o nosso numero é 10006 + DV 5 

 

image.thumb.png.73d624c5569ae5c71d494c7a4acd8771.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia !
Este banco já está em em produção alguns meses e não temos relatos.
lembrando que NossoNumero deve ser informado sem o dv(pois o sistema já adiciona o DV na montagem do campo)


001.PNG

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

  • Membros Pro

Bom dia

"lembrando que NossoNumero deve ser informado sem o dv(pois o sistema já adiciona o DV na montagem do campo)"

Conforme já tinha mencionado, estou enviando sem o NossoNumero porem o componente inclui o DV ao realizar a consulta.

Esse exemplo que você postou é do numeroBoletoBB e não sicoob.

 

 

"Este banco já está em em produção alguns meses e não temos relatos."

O Envio deu certo, a consulta não!

Nos demos não consta exemplo do sicoob, alterei por aqui e a consulta não traz nenhuma informação.

Facilitaria se o demo fosse atualizado com sicoob.

 

 

 

 

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

  • Consultores
14 minutos atrás, ralty disse:

Esse exemplo que você postou é do numeroBoletoBB e não sicoob.

Que estranho, peguei do manual on-line, mas nao sei de q perte, desculpe-me, nosso numero é montado assim

image.png

15 minutos atrás, ralty disse:

Nos demos não consta exemplo do sicoob, alterei por aqui e a consulta não traz nenhuma informação.

O Demo é p funcionar com qualquer banco.
Basta alimentar o titulo e realizar a consulta TpConsultaDetalhe
Atenção TpConsulta para este banco não é suportada apenas TpConsultaDetalhe.
Exemplo do retorno TpConsultaDetalhe Sicoob do programa exemplo:

exemploretornoProgramaExemploDelphi.txt
 

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

  • Membros Pro

Boa tarde

Realizei algumas mudanças no demo, pois para gerar/consultar boletos no sicoob é necessário enviar os arquivos CTR e Key. 

No demo não consta nenhuma referencia sobre eles, incluí e alterei a consulta para TpConsultaDetalhe  conforme sua orientação.

 

Passei todos os campos, mas a consulta continua não trazendo nenhuma informação. Sempre passando o nosso numero sem o DV 

 

Segue

 

 

configurao.thumb.png.21d2f0625b2b5fe16ea1f3734e3f8311.png

 

 

Demo-consulta.thumb.png.3086f42316e60415128d0e0c168e78ed.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

@ralty
boa tarde !
Se você desejar que eu teste aqui, posso testar aqui. envie os dados da conta, nosso numero, keys, crt, pem para nosso email [email protected] , no corpo da mensagem informar o link deste post.
Não esqueça de passar Conta: , Agencia: , Cooperativa: , Digitos Cooperativa e Numero Posto.

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

  • Consultores

@ralty Aqui funcionou no meu ambiente:
Screenshot_284.png

Enviei nosso número 10005

Screenshot_285.png

E obviamente dados da conta q vc passou, crt pem e scopos:

ACBrBoleto1.Cedente.CedenteWS.Scope :=  'cobranca_boletos_consultar '+
  'cobranca_boletos_incluir '+
  'cobranca_boletos_pagador '+
  'cobranca_boletos_segunda_via '+
  'cobranca_boletos_descontos '+
  'cobranca_boletos_abatimentos '+
  'cobranca_boletos_valor_nominal '+
  'cobranca_boletos_seu_numero '+
  'cobranca_boletos_especie_documento '+
  'cobranca_boletos_baixa '+
  'cobranca_boletos_rateio_credito '+
  'cobranca_pagadores '+
  'cobranca_boletos_negativacoes_incluir '+
  'cobranca_boletos_negativacoes_alterar '+
  'cobranca_boletos_negativacoes_baixar '+
  'cobranca_boletos_protestos_incluir '+
  'cobranca_boletos_protestos_alterar '+
  'cobranca_boletos_protestos_desistir '+
  'cobranca_boletos_solicitacao_movimentacao_incluir '+
  'cobranca_boletos_solicitacao_movimentacao_consultar '+
  'cobranca_boletos_solicitacao_movimentacao_download '+
  'cobranca_boletos_prorrogacoes_data_vencimento '+
  'cobranca_boletos_prorrogacoes_data_limite_pagamento '+
  'cobranca_boletos_encargos_multas '+
  'cobranca_boletos_encargos_juros_mora '+
  'cobranca_boletos_pix '+
  'cobranca_boletos_faixa_nn_disponiveis';

image.png

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

  • Membros Pro

Boa tarde Daniel

Não consegui identificar onde esta o erro, refiz o processo no meu software montando em uma única rotina mas mesmo assim sem resultando

No exemplo do acbr e não traz nenhum retorno.

 

Se for possível analisar, segue o código da consulta

 

procedure TfEmiteBoletoNew.btConsultaWSClick(Sender: TObject);
var
  SLRetorno: TStringList;
  I: Integer;
  Titulo: TACBrTitulo;
  Beneficiario: TACBrCedente;
  Banco: TACBrBanco;
  Boleto: TACBrBoleto;
  WebService: TACBrWebService;
  BeneficiarioWS: TACBrCedenteWS;
  Retorno: TListaACBrBoletoRetornoWS;
  CobAnterior: TACBrTipoCobranca;
begin

//  carregaDadosConta; retirado
  //IncluirBoleto; retirado

  Boleto := FACBrBoleto;
  WebService := Boleto.Configuracoes.WebService;

  Beneficiario := Boleto.Cedente;
  BeneficiarioWS := Beneficiario.CedenteWS;

  CobAnterior := Boleto.Banco.TipoCobranca;

  Beneficiario.Nome := fmenu.qUsuariosRAZAO_SOCIAL.asstring;
  Beneficiario.TipoInscricao := pJuridica;
  Beneficiario.Agencia := qContaBancoNUMERO_AGENCIA.AsString;
  Beneficiario.AgenciaDigito := qContaBancoDIGITO_AGENCIA.AsString;
  Beneficiario.Conta := qContaBancoNUMERO_CONTA.AsString;

  Beneficiario.ContaDigito := qContaBancoDIGITO_CONTA.AsString;
  Beneficiario.DigitoVerificadorAgenciaConta := qContaBancoDIGITO_VERIFICADOR.AsString;

  Beneficiario.Convenio := qContaBancoBOLETO_CONVENIO.AsString;

  Beneficiario.Modalidade := qContaBancoBOLETO_CARTEIRA_MODALIDADE.AsString;

  Beneficiario.Operacao := ''; //edtOperacao.Text;
  Beneficiario.CodigoTransmissao := Trim(qContaBancoBOLETO_CODIGOTRANSMISSAO.AsString);
  Beneficiario.CodigoCedente := sonumero(qContaBancoCOD_CEDENTE.AsString);

  Banco := Boleto.Banco;
  Banco.TipoCobranca := cobBancoob;
  Banco.LayoutVersaoArquivo := StrToInt(qContaBancoLAYOUTVERSAOARQUIVO.AsString);
  Banco.LayoutVersaoLote := StrToInt(qContaBancoLAYOUTVERSAOLOTE.AsString);

  WebService.ArquivoCRT := qContaBancoDIR_INTER_API_CERTIFICADO.AsString;
  WebService.ArquivoKEY := qContaBancoDIR_INTER_API_CHAVE.AsString;

  BeneficiarioWS.ClientID := qContaBancoCLIENT_ID.AsString;
  BeneficiarioWS.ClientSecret := qContaBancoCLIENT_ID.AsString;

//  BeneficiarioWS.KeyUser      := edtKeyUser.Text;
  BeneficiarioWS.Scope := 'cobranca_boletos_consultar ' + 'cobranca_boletos_incluir ' + 'cobranca_boletos_pagador ' + 'cobranca_boletos_segunda_via ' + 'cobranca_boletos_descontos ' + 'cobranca_boletos_abatimentos ' + 'cobranca_boletos_valor_nominal ' + 'cobranca_boletos_seu_numero ' + 'cobranca_boletos_especie_documento ' + 'cobranca_boletos_baixa ' + 'cobranca_boletos_rateio_credito ' + 'cobranca_pagadores ' + 'cobranca_boletos_negativacoes_incluir ' + 'cobranca_boletos_negativacoes_alterar ' +
    'cobranca_boletos_negativacoes_baixar ' + 'cobranca_boletos_protestos_incluir ' + 'cobranca_boletos_protestos_alterar ' + 'cobranca_boletos_protestos_desistir ' + 'cobranca_boletos_solicitacao_movimentacao_incluir ' + 'cobranca_boletos_solicitacao_movimentacao_consultar ' + 'cobranca_boletos_solicitacao_movimentacao_download ' + 'cobranca_boletos_prorrogacoes_data_vencimento ' + 'cobranca_boletos_prorrogacoes_data_limite_pagamento ' + 'cobranca_boletos_encargos_multas ' + 'cobranca_boletos_encargos_juros_mora ' + 'cobranca_boletos_pix ' + 'cobranca_boletos_faixa_nn_disponiveis';

  BeneficiarioWS.IndicadorPix := false;
  WebService.Ambiente := taProducao;
  WebService.SSLHttpLib := httpOpenSSL;

  FACBrBoleto.ListadeBoletos.Clear;
  Titulo := FACBrBoleto.CriarTituloNaLista;

  Titulo.Vencimento := qContasReceberDATA_VCTO.AsDateTime;
  Titulo.DataDocumento := date;
  Titulo.NumeroDocumento := qContasReceberNUM_DOC.AsString;

//  Titulo.EspecieMod        := edtEspecieMod.Text;

  Titulo.EspecieDoc := 'DM';
  if Trim(qContaBancoBOLETO_ESPECIE.AsString) <> '' then
    Titulo.EspecieDoc := qContaBancoBOLETO_ESPECIE.AsString;

  if qContaBancoBOLETO_ACEITE.AsString = 'S' then
    Titulo.Aceite := atSim
  else
    Titulo.Aceite := atNao;

  Titulo.DataProcessamento := Now;
  Titulo.Carteira := qContaBancoBOLETO_CARTEIRA.AsString;

  Titulo.NossoNumero := qContasReceberNOSSO_NUMERO.AsString;
  Titulo.ValorDocumento := qContasReceberVALOR.AsFloat;

  Titulo.sacado.NomeSacado := qContasReceberCLIENTE.AsString;
  Titulo.sacado.CNPJCPF := OnlyNumber(qContasReceberCPF_CNPJ.AsString);
  Titulo.sacado.Logradouro := qContasReceberENDERECO.AsString;
  Titulo.sacado.Numero := qContasReceberNUM_CASA.AsString;
  Titulo.sacado.Bairro := qContasReceberBAIRRO.AsString;
  Titulo.sacado.Cidade := qContasReceberCIDADE.AsString;
  Titulo.sacado.UF := qContasReceberUF.AsString;
  Titulo.sacado.CEP := OnlyNumber(qContasReceberCEP.AsString);

  Titulo.LocalPagamento := '';
  Titulo.ValorMoraJuros := 0;
  Titulo.ValorDesconto := 0;
  Titulo.ValorAbatimento := 0;
  Titulo.DataMoraJuros := qContasReceberDATA_VCTO.AsDateTime;
//  Titulo.DataDesconto := StrToDateDef(edtDataDesconto.Text, 0);
  Titulo.TipoDesconto := tdNaoConcederDesconto;
//  Titulo.DataAbatimento := StrToDateDef(edtDataAbatimento.Text, 0);
//  Titulo.DataProtesto := StrToDateDef(edtDataProtesto.Text, 0);
//  Titulo.PercentualMulta := StrToCurrDef(edtMulta.Text, 0);
  Titulo.CodigoMoraJuros := cjValorMensal;
  //Mensagem.Text     := memMensagem.Text;
  Titulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar;

  Titulo.QtdePagamentoParcial := 1;
  Titulo.TipoPagamento := tpNao_Aceita_Valor_Divergente;
  Titulo.PercentualMinPagamento := 0;
  Titulo.PercentualMaxPagamento := 0;
  Titulo.ValorMinPagamento := 0;
  Titulo.ValorMaxPagamento := 0;

  Boleto.Configuracoes.WebService.Operacao := tpConsultaDetalhe;

  Boleto.Configuracoes.WebService.Filtro.Clear;
  Boleto.Configuracoes.WebService.Filtro.indicadorSituacao := isbAberto;
  Boleto.Configuracoes.WebService.Filtro.dataMovimento.DataInicio := Date;
  Boleto.Configuracoes.WebService.Filtro.dataMovimento.DataFinal := Date;

  Boleto.Enviar;
  Retorno := Boleto.ListaConsultaRetornoWeb;

  if Retorno.Count > 0 then
  begin
    SLRetorno := TStringList.Create;
    try
      SLRetorno.Add('Cod_Retorno=' + Retorno[I].CodRetorno + sLineBreak + 'Msg_Retorno=' + Retorno[I].MsgRetorno + sLineBreak + 'Ori_Retorno=' + Retorno[I].OriRetorno + sLineBreak + 'HTTP_Result=' + IntToStr(Retorno[I].HTTPResultCode) + sLineBreak + 'JSON=' + Retorno[I].JSON);
      SLRetorno.Add('indicadorContinuidade=' + BoolToStr(Retorno[0].indicadorContinuidade));
      SLRetorno.Add('proximoIndice=' + IntToStr(Retorno[0].proximoIndice));
      SLRetorno.Add(' ');
      SLRetorno.Add(' ');
      for I := 0 to Pred(Retorno.Count) do
      begin
        SLRetorno.Add('[Boletos Index = ' + FormatFloat('000', I) + ']');
        SLRetorno.Add('numeroBoletoBB = ' + Retorno[I].DadosRet.TituloRet.NossoNumero);
        SLRetorno.Add('dataRegistro = ' + DateToStr(Retorno[I].DadosRet.TituloRet.DataRegistro));
        SLRetorno.Add('dataVencimento = ' + DateToStr(Retorno[I].DadosRet.TituloRet.Vencimento));
        SLRetorno.Add('valorOriginal = ' + DateToStr(Retorno[I].DadosRet.TituloRet.ValorDocumento));
        SLRetorno.Add('carteiraConvenio = ' + Retorno[I].DadosRet.TituloRet.Carteira);
        SLRetorno.Add('variacaoCarteiraConvenio = ' + intToStr(Retorno[I].DadosRet.TituloRet.Modalidade));
        SLRetorno.Add('codigoEstadoTituloCobranca = ' + Retorno[I].DadosRet.TituloRet.codigoEstadoTituloCobranca);
        SLRetorno.Add('estadoTituloCobranca = ' + Retorno[I].DadosRet.TituloRet.estadoTituloCobranca);
        SLRetorno.Add('contrato = ' + Retorno[I].DadosRet.TituloRet.Contrato);
        SLRetorno.Add('dataMovimento = ' + DateToStr(Retorno[I].DadosRet.TituloRet.dataMovimento));
        SLRetorno.Add('dataCredito = ' + DateToStr(Retorno[I].DadosRet.TituloRet.dataCredito));
        SLRetorno.Add('valorAtual = ' + CurrToStr(Retorno[I].DadosRet.TituloRet.valorAtual));
        SLRetorno.Add('valorPago = ' + CurrToStr(Retorno[I].DadosRet.TituloRet.ValorPago));
        SLRetorno.Add('  ---  ');
      end;

      panEnviando.Visible := true;
      memoLog.Clear;
      memoLog.Lines.Add(SLRetorno.Text);
    finally
      SLRetorno.Free;
    end;
  end;
 

 

 

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

  • Consultores

Boa tarde @ralty
Qdo for assim, salve em um arquivo texto, e anexe o arquivo fica mais fácil.
Vamos la vou te passar como eu fiz:
Lembrando que eu testei com o Exemplo disponibilizado em \ACBr\Exemplos\ACBrBoleto\Delphi
Preenchi os dados do exemplo com os seus dados (como se fosse emitir) no nosso numero passei 10005 (sem dv)
Inclui este boleto na lista de titulos.
Informei o scopo igual vc fez acima.
Nos filtros deixei assim:
Screenshot_296.png
Data inicial nao deixei igual a sua. dei uma diferença de 5 dias.
e cliquei no botão consultar do exemplo.

Faça o teste com o exemplo e veja como ficou o arqBoletoWs.log

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á 277 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.

The popup will be closed in 10 segundos...