Ir para conteúdo
  • Cadastre-se

luciano_f

Membros
  • Total de ítens

    291
  • Registro em

  • Última visita

Tudo que luciano_f postou

  1. 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
  2. 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;
  3. Boa tarde aos Administradores Alguma posição ?
  4. Estou migrando para o "TACBrTEFAPI" porem não quero usar a Classe "uVendaClass" do demo e mesmo estudando essa classe eu não consegui entender como ela capturar esse dados: Em "TACBrTEFResp" eu não encontrei TipoPagamento SaldoAPagar SaldoRestante TotalPago
  5. Aos Administradores algum feedback do que fiz ???
  6. 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
  7. 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;
  8. Pessoal voltando nessa questão alguma ajuda ? Grato a todos
  9. 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 ?
  10. 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.
  11. @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/
  12. @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.
  13. 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"
  14. 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
  15. é 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;
  16. 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 :=
  17. 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;
  18. 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';
  19. Dá forma como fiz está errado ? WebService.DadosPFX := FieldByName('ARQUIVO_PFX').AsAnsiString; WebService.Certificado := FieldByName('ARQUIVO_KEY').AsAnsiString; WebService.ChavePrivada := FieldByName('ARQUIVO_CRT').AsAnsiString;
  20. 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;
  21. Sim fiz isso pela sua resposta acredito que a forma como passei os arquivos estão certos ?
  22. 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&#58;&#47;&#47;trust&#45;open&#46;api&#46;santander&#46;com&#46;br&#47;auth&#47;oauth&#47;v2&#47;token" on this server.<P> Reference&#32;&#35;18&#46;c542db17&#46;1774294677&#46;670231bb <P>https&#58;&#47;&#47;errors&#46;edgesuite&#46;net&#47;18&#46;c542db17&#46;1774294677&#46;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&#58;&#47;&#47;trust&#45;open&#46;api&#46;santander&#46;com&#46;br&#47;auth&#47;oauth&#47;v2&#47;token" on this server.<P> Reference&#32;&#35;18&#46;c542db17&#46;1774294677&#46;670231bb <P>https&#58;&#47;&#47;errors&#46;edgesuite&#46;net&#47;18&#46;c542db17&#46;1774294677&#46;670231bb</P> </BODY> </HTML>
  23. 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.
×
×
  • 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.