luciano_f
Membros-
Total de ítens
291 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que luciano_f postou
-
o retorno que eu tenho é esse: JSON Retorno = {"_pageable":{"_limit":1000,"_offset":0,"_pageNumber":null,"_pageElements":0,"_totalPages":null,"_totalElements":0},"_content":[]} ------------------------------------------------------------------------------------------------------------ 13/05/26 19:47:31:477 -03:00 - Autenticando Token... 13/05/26 19:47:31:479 -03:00 - Comando Enviar: TOAuth 13/05/26 19:47:31:481 -03:00 - URL: [POST] https://trust-open.api.santander.com.br/auth/oauth/v2/token 13/05/26 19:47:31:854 -03:00 - Validade: 13/05/2026 20:02:31 13/05/26 19:47:31:858 -03:00 - Comando Enviar: TBoletoW_Santander_API 13/05/26 19:47:31:862 -03:00 - Comando Enviar: 13/05/26 19:47:31:863 -03:00 - URL: [GET] https://trust-open.api.santander.com.br/collection_bill_management/v2/workspaces/e12ccaac-86ea-42c5-9ee9-513184f925b3/bank_slips?_limit=1000&paymentDateInitial=2026-04-20&paymentDateFinal=2026-05-13&status=LIQUIDADO 13/05/26 19:47:32:104 -03:00 - Retorno Envio: TBoletoW_Santander_API 13/05/26 19:47:32:108 -03:00 - Código do Envio: 200 1.1 OK Fazendo a consulta de Apenas um Boleto alimentando do Titulo eu consigo um retorno valido Index = 1 Numero Boleto (NSU) = 19598 Seu Numero = 19598 Valor Original = R$ 1,00 Valor Pago = R$ 1,00 Data Vencimento = 05/07/2026 Data Movimento = 11/05/2026 Data Credito = 12/05/2026 Codigo Estado Titulo Cobrança = 06 Estado Titulo Cobranca = Liquidado
-
Para fazer a Consulta de Boletos Banco para Santander é necessário preencher os titulos ?
um tópico no fórum postou luciano_f ACBrBoleto
Olá boa noite. Pessoal eu consigo fazer o envio e registro do Boleto 100% Porém estou perdido em como fazer a consulta. todas pesquisas que fiz aqui no forum se resume a esse tipo de codigo: FiltrosAPI := ACBrBoleto.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbBaixado; FiltrosAPI.dataMovimento.DataInicio := IncDay(date,-30); FiltrosAPI.dataMovimento.DataFinal := Date; FiltrosAPI.indiceContinuidade := 0; ACBrBoleto.Configuracoes.WebService.Operacao := tpConsulta; ACBrBoleto.Enviar; Porém usando "TpConsulta" dá erro dizendo que não é implementado para o Banco "Santander" Usando "tpConsultaDetalhe" funciona porém não traz registro algum Apôs o codigo de cima eu faço um for da seguinte forma: Retorno := ACBrBoleto.ListaConsultaRetornoWeb; if Retorno.Count > 0 then begin for I := 0 to Pred(Retorno.Count) do begin // Comandos internos do meu ERP end; end else if ACBrBoleto.TotalListaRetornoWeb > 0 then begin for I := 0 to Pred(AcbrCobranca.ListadeBoletos.Count) do begin // Comandos internos do meu ERP end; end; Porém se eu fizer uma consulta de Apenas um Boleto alimentando o Titulo do Boleto antes de "Enviar" eu consigo obter todos os resultados do mesmo se foi pago ou não então minha duvida ? Eu de fato preciso alimentar os Titulos para conseguir fazer uma consulta ? Eu Também já tentei o seguinte codigo que vi aqui no forum porém não funciona Titulo := ACBrBoleto.CriarTituloNaLista; With Titulo do begin FiltrosAPI := ACBrBoleto.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbBaixado; FiltrosAPI.dataMovimento.DataInicio := IncDay(date,-30); FiltrosAPI.dataMovimento.DataFinal := Date; FiltrosAPI.indiceContinuidade := 0; ACBrBoleto.Configuracoes.WebService.Operacao := tpConsultaDetalhe; ACBrBoleto.Enviar; End; -
Pessoal uma outra forma de resolver isso sem precisar mexer no Evento citado acima seria cria uma nova property em "TACBrArquivos" property ListaArquivoLog : TStrings read FListaArquivoLog write FListaArquivoLog; Eu fiz algumas alterações apenas acrescentando a funcionalidade sem precisar alterar as já existentes Em anexo as 3 Units que Modifiquei Baixei a ultima versão do ACBR hoje e modifiei coloquei o comentario // Luciano na frente do codigo para o Administradores conseguir localizar e analisar o fiz se é possivel subir no Trunk dessa forma que eu fiz fica mais simples de administrar os retornos simples sem precisar ficar salvando no Disco. ACBrBoleto.pas ACBrBoletoWS.pas ACBrBoletoWS.Rest.OAuth.pas
-
Pelo que entendi existe um problema com o Evento: TACBrGravarLog = procedure(const ALogLine: String; var Tratado: Boolean) of object ; Pois por esse evento eu não consigo saber o nivel de log Seria bom se tivesse outra opção nesse evento que ficaria assim: TACBrGravarLog = procedure(const ALogLine: String; var Tratado: Boolean; const ANivelSeveridadeLog : TNivelLog) of object ; Desse forma eu conseguiria obter um Log simples com esse evento pois em: procedure TOAuth.DoLog(const AString: String; const ANivelSeveridadeLog : TNivelLog); var Tratado: Boolean; LLog : string; begin Tratado := False; if ANivelSeveridadeLog = logNenhum then Exit; LLog := NativeStringToAnsi(AString); if Assigned(FACBrBoleto.Configuracoes.Arquivos.OnGravarLog) then FACBrBoleto.Configuracoes.Arquivos.OnGravarLog(LLog, Tratado, ANivelSeveridadeLog); // Alterado para passar o tipo de log para ser tratato no evento if Tratado or (FACBrBoleto.Configuracoes.Arquivos.LogNivel >= ANivelSeveridadeLog) then GravaLog(LLog); end;
-
Fazendo homologação para o Santander eles me pediram para informar a URL de envio da produção Sei a que a URL tem o Token junto tem uma propriedade do Componente que eu consigo capturar essa URL quando vou fazer o envio sem precisar depurar ?
-
Na Classe "TBoletoWSClass" tem "ATitulo" que é acessada em todas as unit API dos bancos Porém não sei como acessar o retorno desse "ATitulo" quando faço uma consulta para não ter que fazer um Loop e usar esse tipo de código: for I := 0 to Pred(Retorno.Count) do begin Titulo := AcbrCobranca.CriarTituloNaLista; Titulo.NossoNumero := Retorno[I].DadosRet.TituloRet.NossoNumero; Etc..... End; Se alguém puder postar um exemplo que como Carrego a lista de títulos de uma consulta WS fico muito grato.
-
@Juliomar Marchetti Ainda não sei como alimentar os titulos de forma automática. Até encontrei esse outro tópico porém não sei ao certo como fazer poderia me explicar melhor. https://www.projetoacbr.com.br/forum/topic/88636-acbr-8655implementação-de-lista-de-boletos-liquido-com-qr-code-bradesco-via-api-do-site-bradesco-developers/
-
@Juliomar Marchetti Acredito que o amigo não entendeu, Eu resolvi e se algum colega precisar Carregar a Lista Web para os titulos: FiltrosAPI := AcbrCobranca.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbBaixado; FiltrosAPI.dataMovimento.DataInicio := Ed_DataBWS1.Date; FiltrosAPI.dataMovimento.DataFinal := Ed_DataBWS2.Date; FiltrosAPI.indiceContinuidade := 0; AcbrCobranca.Configuracoes.WebService.Operacao := tpConsulta; AcbrCobranca.Enviar; Retorno := AcbrCobranca.ListaConsultaRetornoWeb; if Retorno.Count > 0 then begin for I := 0 to Pred(Retorno.Count) do begin Titulo := AcbrCobranca.CriarTituloNaLista; AcbrCobranca.NumeroArquivo := I; AcbrCobranca.DataArquivo := Now; Titulo.NossoNumero := Retorno[I].DadosRet.TituloRet.NossoNumero; Titulo.SeuNumero := Retorno[I].DadosRet.TituloRet.SeuNumero; Titulo.NumeroDocumento := Retorno[I].DadosRet.TituloRet.NumeroDocumento; Titulo.DataDocumento := Retorno[I].DadosRet.TituloRet.DataDocumento; Titulo.DataProcessamento := Retorno[I].DadosRet.TituloRet.DataProcessamento; Titulo.Vencimento := Retorno[I].DadosRet.TituloRet.Vencimento; Titulo.DataCredito := Retorno[I].DadosRet.TituloRet.DataCredito; Titulo.DataBaixa := Retorno[I].DadosRet.TituloRet.DataBaixa; Titulo.DataProtesto := Retorno[I].DadosRet.TituloRet.DataProtesto; Titulo.DataBaixa := Retorno[I].DadosRet.TituloRet.DataBaixa; Titulo.DataCredito := Retorno[I].DadosRet.TituloRet.DataCredito; Titulo.ValorDocumento := Retorno[I].DadosRet.TituloRet.ValorDocumento; Titulo.ValorDespesaCobranca := Retorno[I].DadosRet.TituloRet.ValorDespesaCobranca; Titulo.ValorAbatimento := Retorno[I].DadosRet.TituloRet.ValorAbatimento; Titulo.ValorDesconto := Retorno[I].DadosRet.TituloRet.ValorDesconto; Titulo.ValorMoraJuros := Retorno[I].DadosRet.TituloRet.ValorMoraJuros; Titulo.ValorOutrosCreditos := Retorno[I].DadosRet.TituloRet.ValorOutrosCreditos; Titulo.ValorOutrasDespesas := Retorno[I].DadosRet.TituloRet.ValorOutrasDespesas; Titulo.ValorRecebido := Retorno[I].DadosRet.TituloRet.ValorRecebido; Titulo.ValorIOF := Retorno[I].DadosRet.TituloRet.ValorIOF; Titulo.Carteira := Retorno[I].DadosRet.TituloRet.Carteira; Titulo.DataOcorrencia := Retorno[I].DadosRet.TituloRet.DataProcessamento; Titulo.OcorrenciaOriginal.Tipo := toRetornoBaixado; Titulo.DescricaoMotivoRejeicaoComando.Text := Retorno[I].DadosRet.TituloRet.estadoTituloCobranca; Titulo.Sacado.NomeSacado := Retorno[I].DadosRet.TituloRet.Sacado.NomeSacado; Titulo.Sacado.CNPJCPF := Retorno[I].DadosRet.TituloRet.Sacado.CNPJCPF; Titulo.Instrucao1 := Retorno[I].DadosRet.TituloRet.Instrucao1; Titulo.Instrucao2 := Retorno[I].DadosRet.TituloRet.Instrucao2; end; end; Porque eu preciso do alimentar os titulos ? Quando faço leitura do arquivo remessa a Classe "TACBrTitulo" é alimentada automaticamente pelo componente e Eu faço uso dos Titulos para varias analises do meu EPR para baixa em meu banco de dados dos documentos.
-
Como capturar o TACBrTipoOcorrencia pelo Retorno Web ?
um tópico no fórum postou luciano_f ACBrBoleto
Quando executo o comando: FiltrosAPI := AcbrCobranca.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbBaixado; FiltrosAPI.dataMovimento.DataInicio := Ed_DataBWS1.Date; FiltrosAPI.dataMovimento.DataFinal := Ed_DataBWS2.Date; FiltrosAPI.indiceContinuidade := 0; AcbrCobranca.Configuracoes.WebService.Operacao := tpConsulta; AcbrCobranca.Enviar; Retorno := AcbrCobranca.ListaConsultaRetornoWeb; if Retorno.Count > 0 then begin for I := 0 to Pred(Retorno.Count) do begin SLRetorno.Add('Codigo Estado Titulo Cobranca = ' + Retorno[I].DadosRet.TituloRet.codigoEstadoTituloCobranca); SLRetorno.Add('Estado Titulo Cobranca = ' + Retorno[I].DadosRet.TituloRet.estadoTituloCobranca); End; Eu não sei como saber: OcorrenciaOriginal.Tipo // da classe "TACBrTipoOcorrencia" Quando a leitura é por arquivo Remessa o componente faz algo assim: procedure TACBrBancoSantander.LerRetorno400(ARetorno: TStringList); Begin OcorrenciaOriginal.Tipo := CodOcorrenciaToTipo(StrToIntDef(copy(Linha,109,2),0)); No aquivo retorno WS tem o codigo: function TRetornoEnvio_Santander_API.RetornaCodigoOcorrencia(pSituacaoGeralBoleto: string) : String; var LSituacao : string; begin LSituacao := AnsiUpperCase(pSituacaoGeralBoleto); if (LSituacao = 'ATIVO') then Result := '02' else if (LSituacao = 'LIQUIDADO') then Result := '06' else if (LSituacao = 'BAIXADO') then Result := '09' else Result := '99'; end; porém esse codigo assima não refrete todos os tipos de ocorrencias da classe "TACBrTipoOcorrencia" -
Solução para quem precisar é alimentar da seguinte forma: eu estava errando as propriedades WebService.DadosPFX := FieldByName('ARQUIVO_PFX').AsAnsiString; WebService.ChavePrivada := FieldByName('ARQUIVO_KEY').AsAnsiString; WebService.Certificado := FieldByName('ARQUIVO_CRT').AsAnsiString; para para banco santander não é necessario o Arquivo PFX
-
é que usando a captura por arquivo remessa quando eu uso: AcbrCobranca.LerRetorno(vMemoryStream); for i := 0 to AcbrCobranca.ListadeBoletos.Count - 1 do begin Titulo := AcbrCobranca.ListadeBoletos[i]; // Consigo trabalhar com os dados do Titulo End; Porém usando : FiltrosAPI := AcbrCobranca.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbBaixado; FiltrosAPI.dataMovimento.DataInicio := Ed_DataBWS1.Date; FiltrosAPI.dataMovimento.DataFinal := Ed_DataBWS2.Date; FiltrosAPI.indiceContinuidade := 0; AcbrCobranca.Configuracoes.WebService.Operacao := tpConsulta; Retorno := AcbrCobranca.ListaConsultaRetornoWeb; if Retorno.Count > 0 then begin for I := 0 to Pred(Retorno.Count) do begin // preciso mudar o codigo para esse Retorno[I].DadosRet.TituloRet.NossoNumero; Retorno[I].DadosRet.TituloRet.SeuNumero; end; Não consigo acessar os dados do titulo eu preciso mudar o codigo então minha questão é se tem algum metodo ou forma de pegar o dados da lista TListaACBrBoletoRetornoWS e mandar para o TACBrTitulo Ou o jeito e passar o dados manual uma a um ficando algo assim: Retorno := AcbrCobranca.ListaConsultaRetornoWeb; if Retorno.Count > 0 then begin for I := 0 to Pred(Retorno.Count) do begin Titulo := AcbrCobranca.CriarTituloNaLista; Titulo.NossoNumero := Retorno[I].DadosRet.TituloRet.NossoNumero; etc... End;
-
Carregar lista de Titulos com retorno WS como ? TListaACBrBoletoRetornoWS -> TACBrTitulo
um tópico no fórum postou luciano_f ACBrBoleto
Quando uso: AcbrBoleto.LerRetorno(stream); É carregado o componente com todos os dados dos titulos porém quando uso: FiltrosAPI := AcbrCobranca.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbBaixado; FiltrosAPI.dataMovimento.DataInicio := Ed_DataBWS1.Date; FiltrosAPI.dataMovimento.DataFinal := Ed_DataBWS2.Date; FiltrosAPI.indiceContinuidade := 0; AcbrCobranca.Configuracoes.WebService.Operacao := tpConsulta; Retorno := AcbrCobranca.ListaConsultaRetornoWeb; if Retorno.Count > 0 then begin for I := 0 to Pred(Retorno.Count) do begin ...... end; Com eu poderia alimentar de forma automatica dados como: Titulo.NossoNumero := Titulo.OcorrenciaOriginal.Descricao := Titulo.OcorrenciaOriginal.Tipo := Titulo.DataBaixa := Titulo.DataCredito := Titulo.ValorDocumento := Titulo.ValorDespesaCobranca := Titulo.ValorAbatimento := Titulo.ValorDesconto := Titulo.ValorMoraJuros := Titulo.ValorOutrosCreditos := Titulo.ValorOutrasDespesas := Titulo.OcorrenciaOriginal.Tipo := -
Os dados estão certo testei pelo Postman Consegui autenticar porém de fato tem algum problema na forma como estou passando os dados por isso desse topico Sem passar o PFX passando apenas esses dois arquivos funciona WebService.ArquivoCRT := 'E:\CertificadoBoleto.crt'; WebService.ArquivoKEY := 'E:\CertificadoBoleto.key'; Então minha questão ainda fica em aberto como passar os dados direto salvos no banco de dados Alguem que tenha feito salvo no banco para santander como fez ? WebService.DadosPFX := FieldByName('ARQUIVO_PFX').AsAnsiString; WebService.Certificado := FieldByName('ARQUIVO_KEY').AsAnsiString; WebService.ChavePrivada := FieldByName('ARQUIVO_CRT').AsAnsiString;
-
Eu também tentei passando o arquivo porém dá o mesmo erro 403 o que eu poderia fazer para entender onde está meu erro ? O cliente até conseguiu emitir um boleto teste pelo Postman WebService.DadosPFX := EmptyStr; WebService.Certificado := EmptyStr; WebService.ChavePrivada := EmptyStr; WebService.ArquivoCRT := 'E:\CertificadoBoleto.crt'; WebService.ArquivoKEY := 'E:\CertificadoBoleto.key'; WebService.ArquivoPFX := 'E:\Certificado.pfx';
-
Dá forma como fiz está errado ? WebService.DadosPFX := FieldByName('ARQUIVO_PFX').AsAnsiString; WebService.Certificado := FieldByName('ARQUIVO_KEY').AsAnsiString; WebService.ChavePrivada := FieldByName('ARQUIVO_CRT').AsAnsiString;
-
Então se for o caminho isso muda tudo, por isso do topico, e de minha questão. pois já viu em outro topico que pode ser o conteudo também para passar o caminho, são outras propriedades diferentes dessa que informei. repare que a forma que você passa o caminho dos arquivos são outras propriedades diferente dessa que eu usei WebService.DadosPFX := FieldByName('ARQUIVO_PFX').AsAnsiString; WebService.Certificado := FieldByName('ARQUIVO_KEY').AsAnsiString; WebService.ChavePrivada := FieldByName('ARQUIVO_CRT').AsAnsiString;
-
Sim fiz isso pela sua resposta acredito que a forma como passei os arquivos estão certos ?
-
Eu salvei os arquivos no banco de dados e estou usando da seguinte forma: If Trim(FieldByName('ARQUIVO_PFX').AsAnsiString) <> EmptyStr Then WebService.DadosPFX := FieldByName('ARQUIVO_PFX').AsAnsiString; If Trim(FieldByName('ARQUIVO_KEY').AsAnsiString) <> EmptyStr Then WebService.Certificado := FieldByName('ARQUIVO_KEY').AsAnsiString; If Trim(FieldByName('ARQUIVO_CRT').AsAnsiString) <> EmptyStr Then WebService.ChavePrivada := FieldByName('ARQUIVO_CRT').AsAnsiString; porém ao autenticar com Santander recebo o erro: 23/03/26 16:36:50:937 -03:00 - Autenticando Token... 23/03/26 16:36:50:946 -03:00 - Comando Enviar: TOAuth 23/03/26 16:36:50:946 -03:00 - URL: [POST] https://trust-open.api.santander.com.br/auth/oauth/v2/token 23/03/26 16:36:51:080 -03:00 - Erro: HTTP_Code=403 Erro=<HTML><HEAD> <TITLE>Access Denied</TITLE> </HEAD><BODY> <H1>Access Denied</H1> You don't have permission to access "http://trust-open.api.santander.com.br/auth/oauth/v2/token" on this server.<P> Reference #18.c542db17.1774294677.670231bb <P>https://errors.edgesuite.net/18.c542db17.1774294677.670231bb</P> </BODY> </HTML> 23/03/26 16:36:51:084 -03:00 - Retorno Envio: TBoletoW_Santander_API 23/03/26 16:36:51:085 -03:00 - Código do Envio: 0 1.1 Forbidden 23/03/26 16:36:51:086 -03:00 - Falha Envio: Falha na Autenticação: HTTP_Code=403 Erro=<HTML><HEAD> <TITLE>Access Denied</TITLE> </HEAD><BODY> <H1>Access Denied</H1> You don't have permission to access "http://trust-open.api.santander.com.br/auth/oauth/v2/token" on this server.<P> Reference #18.c542db17.1774294677.670231bb <P>https://errors.edgesuite.net/18.c542db17.1774294677.670231bb</P> </BODY> </HTML>
-
Agradeço aos colegas pelos esclarecimentos e agora sei como proceder... Dessa forma Eu falei para empresa resolver gerar isso e me passar por se tratar em dados sensíveis eu não vou gerar alias eu deleguei toda a configuração para a empresa Eu só vou alimentar meu sistema para poder gerar os boletos, pois não quero dar o que falar e ficar mexendo com dados de conta, senha + certificado da empresa isso é um baita problema para nós desenvolvedores fazer.... Mandei um email para o banco que está dando assistência para eles resolver e fazer ou ensinar a empresa a fazer eu de fato, Não posso, Não quero e Não vou fazer isso e arrumar possível dor de cabeça por acessar esses dados da empresa.
