Ir para conteúdo
  • Cadastre-se

Luciano Rodrigues Pereira

Membros
  • Total de ítens

    219
  • Registro em

  • Última visita

Tudo que Luciano Rodrigues Pereira postou

  1. Estou testando a API de cobrança (já em produção) do Banco do Brasil e estou com o seguinte problema: Tenho um boleto já registrado com vencimento em 18/06/2024 e com um valor de desconto para pagamento até o vencimento. Preciso alterar o vencimento e consequentemente a data limite do desconto para a nova data de vencimento. Envio 2 comandos, o primeiro para alterar o vencimento: TUDO CERTO. O segundo para alterar a data limite do desconto. AQUI O PROBLEMA. O fonte ACBrBoletoW_BancoBrasil_API.pas mostra que eu devo setar Titulo.OcorrenciaOriginal.Tipo para RemessaAlterarDataDesconto e não existe um ToRemessaAlterarDataDesconto, existe apenas ToRemessaAlterarDesconto que não funciona neste caso. Ainda de acordo com o fonte do BB, para alterar a data limite do desconto o número de Titulo.OcorrenciaOriginal.Tipo seria 53 (conforme print em anexo), mas 53 corresponde à ToRemessaNaoConcederDesconto. Meu ACBr está atualizado.
  2. Eu sei, acho que você não entendeu o que estou tentando dizer. Eu só quis falar que a nomenclatura das propriedades no ACBr é confusa, porque eu informo a variação da carteira em Boleto.Cedente.Modalidade, ou seja a variação da carteira eu informo na propriedade MODALIDADE. E a Modalidade eu informo em Boleto.Cedente.CaracTitulo. Ou seja, para o ACBr a modalidade não é a modalidade, é a variação da carteira e a modalidade é a CaracTitulo. Entendeu? Isso não é confuso para você?
  3. Estou ligando e deu tudo certo, eu me referi à confusão com os nomes: No ACBr eu tenho de informar a variação da carteira como a modalidade e a modalidade como Caract_Titulo. Entendeu?
  4. Apanhei mas consegui homologar o BB. Para homologar eu precisava informar a variação da carteira 35 e a modalidade 1. E nos fontes do ACBr a variação da carteira é a Modalidade e a Modalidade é a Caract_Título. Que confusão...
  5. Criei o app no portal developers do BB e estou no modo de testes e estou com as seguintes dúvidas: O erro que estou tendo agora é: "O cliente informado não é o titular do convênio de cobrança.", mas estou no modo de testes, então não entendi Para o modo de testes preciso informar a Agência, Conta, Código de cedente, Convênio, Modalidade e Carteira? eu informei. Na criação do app em Developers, quais as APIs devo selecionar? estou selecionando apenas a API Cobranças. Preciso da API Login BB (OAuth)? Eu usei o developer_application_key como token, fez al consulta OK (apesar do erro). Quando eu mandar o app para produção, será gerado um outro Acess Token? Vi na página do ACBr que existem 2 scopes: cobrancas.boletos-info e cobrancas.boletos-requisicao. Quando uso uma e quando uso outra? O código de cedente tem um dígito verificador, devo informar no formato xxxxx-D ? Vou precisar de um certificado digital tipo A1 para eu fazer as requisições junto à API do BB? Ou o certificado digital é apenas se eu for usar o serviço webhook? O WebHook não é quando o banco faz a requisição junto à minha API? neste caso me informando por exemplo as liquidações e baixas? Ou seja, ao contrário do que eu quero, que é eu fazendo as requisições junto à API do BB?
  6. Juliomar, 2 dúvidas: 1. A senha do certificado informo onde? 2. O escopo é tudo isso abaixo ou só uma dessas linhas, conforme a operação? pergunto porque tem um sinal de "+" em cada linha como se fosse tudo isso o escopo. 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';
  7. Vi na documentação do Sicoob que é necessário o certificado digital do tipo A1 para o uso da API de cobrança. Como eu anexo esse certificado no componente do ACBr? Tem alguma propriedade no componente ACBrBoleto para informar a localização do certificado, é isso? em ambiente de rede eu teria então de compartilhar uma pasta onde está o certificado. E a senha do certificado, onde informo? tem outra propriedade no componente?
  8. Mas a questão para enviar com acentuação mesmo, já foi resolvida?
  9. Não entendi. 1. Então existe um loop de envio para a lista de boletos dentro do comando "enviar", óbvio. E esse envio de cada um da lista é feito via Thread, em segundo plano? 2. Se o ACBr faz via Thread, não vai fazer diferença eu enviar um a um ou enviar a lista inteira de uma só vez, pois vai ser tudo via thread. O que muda é só que se eu mandar a lista toda de uma só vez eu vou estar usando o loop do ACBr e se eu mandar um a um vou usar meu próprio loop, mas vai tudo para segundo plano, não? 3. Quando eu uso o ProgressBar eu trago tudo para primeiro plano. Você diz para eu trocar meu ProgressBar por uma mensagem na tela para continuar usando as threads? Mas para uma interface com o usuário tem o problema da thread liberar de imediato a interface enquanto faz o processo em segundo plano e o usuário poder fechar a janela ou o app e matar o processo sem saber, não? Me explica melhor essa sua estratégia, por favor.
  10. Com exceção de tpConsulta, todos os demais comandos como tpInclui, tpAltera, tpBaixa e tpConsultaDetalhe usam a lista de boletos. Digamos que eu tenha que registrar 1.000 boletos. Eu adiciono os 1.000 boletos na lista e depois faço o ACBrBoleto1.enviar Ou envio um a um? Hoje eu faço um a um, ou seja, limpo a lista toda vez que faço a requisição de cada boleto. Isso porque eu não sei quanto tempo leva para fazer a requisição desta lista de uma vez só, porque se demorar o usuário terá a impressão que a aplicação está travada. Por isso faço um a um e uso uma Progressbar para acompanhar. Então eu pergunto: 1. Dentro do comando ACBrBoleto1.enviar ele faz um loop fazendo a requisição à API boleto à boleto que está na ListaDeBoletos? 2. O processo de enviar é feito em primeiro plano ou em segundo plano (via Threads)? Porque em segundo plano é bom que libera de imediato a interface da aplicação para o usuário. Em contrapartida, se o usuário que não sabe se o processo que está em segundo plano fechar a janela ou fechar o app ele mata o processo. Por isso não gosto de usar Threads, só quando crio um serviço que vai rodar em um servidor dedicado, mas para interface com o usuário não. 3. Vai fazer muita diferença em termos de tempo fazer um ACBrBoleto.enviar com uma lista de boletos populada com 1.000 boletos (usando o Loop interno do ACBr) ou fazer como estou fazendo, limpando a lista a cada boleto que vou fazer a requisição e enviando um a um (usando meu próprio loop) e acompanhando com a Progressbar? 4. O banco fala que cada requisição leva centésimo de segundo, mas nos testes com o ACBr demora bem mais que isso cada requisição. É por conta dos processos internos do ACBr? 5. Pela experiência de seus clientes, o tempo para uma requisição de uma lista de 1.000 boletos demora quanto tempo? Porque se levar uns 10 segundos vale a pena enviar a lista sem a ProgressBar, caso contrário é melhor enviar um a um e usar a ProgessBar para acompanhar o envio. Qual a melhor estratégia?
  11. Também estou aguardando a solução. Em tempo, existe uma função no ACBr que troca os caracteres acentuados por sem acento?
  12. Fiz a alteração no ACBrBoletoW_Sicredi_APIV2, rodei o ACBrInstall_Trunk2, fui no Delphi no meu app, recompilei e fiz um Build e agora FUNCIONOU. Estou anexando o ACBrBoletoW_Sicredi_APIV2.pas com a alteração. ACBrBoletoW_Sicredi_APIV2.pas
  13. Eu já faço assim. Vem dando aquele erro de AV nas alterações e baixa (outro tópico) mas rodando diretamente do EXE funciona (por conta dos try/catch). O problema agora é só em alterar a data limite do desconto. Alterar data limite do desconto - Não dá pau, mas retorna com um código de erro 422 que eu explico abaixo: HTTP_UNPROCESSABLE_ENTITY (422) - Operação não permitida: Necessário informar pelo menos um dos descontos. Isso ocorre porque o ACBr está tentando montar a URL de requisição com os campos dataDesconto1, dataDesconto2 e dataDesconto3 e no manual do Sicredi página 78 diz que são data1, data2 e data3.
  14. Muitas vezes o cliente emite boletos com valor de desconto quando pagos até o vencimento. Quando a gente quer alterar o vencimento e manter o desconto, neste caso é preciso enviar uma alteração de vencimento (já estou conseguindo enviar), uma alteração da data limite do desconto (que será o novo vencimento) este está com erro (outro tópico criado por mim, já anexei o manual do Sicredi) e por último posso opcionalmente mudar o valor do desconto também. No caso do valor do desconto, posso apenas mudar o valor sem mudar as datas, são coisas independentes. No Manual do Sicredi mostra em sua página 69 como alterar o valor do desconto, não sei como funcionaria nos outros bancos. Tentei fazer isso da forma abaixo mas deu pau, conforme imagem em anexo. Boleto1.ListadeBoletos.Clear; titulo:= AddTituloNaLista(); /// aqui vai fazer Titulo:= Boleto1.CriarTituloNaLista; e setar todos os campos. titulo.DataDesconto := edVencimento.Date; titulo.ValorDesconto:= edVl_MsgDesconto.Value; Boleto1.Configuracoes.WebService.Operacao := tpAltera; titulo.OcorrenciaOriginal.Tipo:= toRemessaAlterarOutrosDados; Boleto1.enviar; Eu já fazia isso através da troca de arquivos (Remessa/Retorno), mas na API não estou sabendo como fazer. Se não é da maneira acima, como é?
  15. Esse pastebin é só texto, não tem como anexar um PDF. Então estou compartilhando através de meu Onedrive. Você tem o print aí também. Manual da API da Cobrança - 3.3.pdf
  16. Eu até mudei, reinstalei o ACBr novamente mas deu pane. Talvez a mudança não seja só nestas linhas, não sei dizer. Eu não consigo anexar o manual atualizado do Sicredi (versão 3.3 de 20/03/2024) por aqui por conta do tamanho do arquivo, mas você tem o print da página do manual aí no chamado. Vejam se corrigem isso aí, porque quando se tem um valor de desconto no boleto até o vencimento e você muda o vencimento, tenho de mudar também a data do desconto para a nova data de vencimento.
  17. 1. Instalei o Delphi e o ACBr (atualizado) do zero em outro computador e o erro persiste, então não é meu Delphi. E nem poderia ser, porque Registro e Consulta de boletos funcionam. 2. Em relação aos meus fontes, deixei para lá e fiz os testes no exemplo do ACBr (ACBrBoletoDemo), mas lá só tem Registro e Consulta de boletos e essas funções estão funcionando sem problema. Então mudei a Consulta para Baixa (é só usar a operação tpBaixa e ocorrencia original toRemessaBaixar), só para testar a baixa e o erro de AV também acontece no ACBrBoletoDemo, então não são meus fontes. 3. O erro só acontece quando rodando dentro do Delphi (após compilar), fora do Delphi não tem erro, acredito que por conta de algum try/excep. Mesmo dentro do Delphi, ele dá o erro, mas faz a baixa do boleto no banco corretamente. Então acredito que o problema seja na hora dele ler montar o Json de retorno do banco. 4. Para depurar eu mudei o pas onde acontece o erro (ACBrJSon.pas) para salvar em um txt cada chamada da função onde está o erro, e descobri que o erro é quando a função recebe como parâmetro "nome". Aí ele dá pane quando ele vai fazer LIndex := FJSON.IndexOf(AName); Nos demais campos mesmo com um índice negativo ele não dá erro. Mas no "nome" não tem índice nenhum. Esse "nome" é o primeiro campo dentro de "Pagador", mas Baixa, alteração de vencimento, alteração de data de desconto, alteração do valor de desconto, etc., não tem o campo Pagador como retorno da API. Tenho certeza que se houvesse em ACBrBoletoDemo a função de baixar boleto ou alterar vencimento, vocês veriam o problema. Se puderem testar aí vão ver o problema. Segue o txt que gerei em anexo. ACBrJason.pas function TACBrJSONObject.GetAsValue(const AName: string): TACBrJSONValue; AName: access_token - indice: 0 expires_in - indice: 1 error - indice: 1 status - indice: -1 error - indice: 1 message - indice: 3 erros - indice: -1 codigoBarras - indice: -1 linhaDigitavel - indice: -1 carteira - indice: -1 seuNumero - indice: -1 nossoNumero - indice: -1 pagador - indice: -1 nome <------ AQUI DÁ O ERRO
  18. Para ter certeza que não era meu software eu usei o ACBrBoletoDemo. Só troquei a operacao de tpRegistrar para tpBaixar na procedure do botão "Registra Boleto onLine". E deu o erro de Acess Violation.
  19. Lembrando o processo que faço: Configuro todas as informações do WebService e cedente. Depois eu apenas adiciono o título na lista de boletos com Boleto1.ListadeBoletos.Clear; titulo:= Boleto1.CriarTituloNaLista; titulo.OcorrenciaOriginal.Tipo:= toRemessaBaixar; titulo.NossoNumero := nosso número que estou tentando baixar por exemplo Boleto1.ListadeBoletos.Add(titulo); faço: Boleto1.Configuracoes.WebService.Operacao := tpBaixa; E envio o comando: Boleto1.enviar; A partir daí ele vai baixar com sucesso mas vai dar Acess Violation nesta linha do ACBrJson aí e não tem como depurar a partir do Acess Violation. Portanto, não tem como eu ver o que ele está retornando, Eu acredito que o problema seja quando ele vai montar esse JSon. Mas não tem como eu ver onde está o problema, pois eu só dou o comando enviar e ele não retorna para linha seguinte do meu app, ele dá erro dentro do processo enviar. E o retorno do Json é após (ou na rotina) de enviar. Só lembrando que os comandos de tpRegistrar e tpConsultaDetalhe funcionam de boa, mas tpBaixar e tpAlterarVencimento está com esse problema. O ACBr realmente baixa e altera o vencimento com sucesso, mas logo depois dá o erro de Acess Violation e não retorna. Entendeu?
  20. Eu fiz isso, são a segunda e terceira imagens em anexo. O problema está dentro do meu comando .enviar, dentro desta rotina do ABRr, em ACBrJson, dá uma olhada nos prints, por favor.
  21. V2. Caso tenha que mudar o componente, como e quando se dá essa mudança? Eu mudo aqui e subo a alteração como anexo? ou vocês mudam por aí? É só trocar em ACBrBoletoW_Sicredi_APIV2.pas na procedure RequisicaoAlteraDataDesconto os campos de datas de desconto de datadesconto1, datadesconto2 e datadesconto3 para data1, data2 e data3.
  22. Não entendi, entrar com F7 onde? Outra coisa, na hora de registrar ou consultar não dá erro. Só dá erro na hora de baixar e alterar o vencimento. Mas ele baixa e altera o vencimento com sucesso (como pode ver nos anexos) e só depois dá o acess violation nesta linha aí do ACBr, dentro da rotina de "enviar". Não dá para entender. Acredito que esse acess violation tem a mesma razão em todos os casos, mas não sei que razão é essa. Só lembrando que esses problemas não tinham antes de eu atualizar o ACBr e eu não mudei uma linha sequer na aplicação antes da atualização do ACBr e vinha funcionando perfeitamente. Então só pode ser alguma coisa no componente.
  23. Estou fazendo os testes da API de registro de boletos começando pelo Sicredi. Estava fazendo já o registro, baixa, consulta e alteração de vencimento com sucesso, dando problema apenas na alteração da data limite do desconto (outro tópico). Mas após atualizar o ACBr (rodei o ACBrInstall_Trunk2) para ver se resolvia, só apareceram outros problemas que não existiam como relatado abaixo: 1. Registro - Problema em dados com acentuação, testei retirando os acentos e funcionou, mas são inúmeros clientes. Já existe outro tópico em aberto com o problema. 2. Baixa - Baixa com sucesso, mas dá erro de Acess Violation. Já depurei e é dentro da rotina do enviar. Como pode ver nos prints em anexo 3. Alterar Vencimento - Altera com sucesso, mas dá erro de Acess Violation. Já depurei e é dentro da rotina do enviar. 4. Alterar data limite do desconto. Dá erro de Acess Violation - Outro tópico. Todos esses erros de Acess Violation não tinham antes no ACBr, o debuger por exemplo mostrava o erro do pas do ACBr eemplo: Agora tudo dá erro de Acess Violation, mesmo quando o comando é executado com sucesso. RetornoBaixa.txt RetornoAlteraDataLimiteDesconto.txt RetornoAlteraVencimento.txt
  24. Detectei um problema na alteração da data limite do desconto no nome dos parâmetros que pede o manual e o nome que o ACBr está enviando. O manual do Sicredi pede data1, data2 e data3 e o ACBr está enviando datadesconto1, datadesconto2 e datadesconto3, como pode ver nas imagens em anexo. Por isso dá o erro: 29/03/24 19:13:54:462 - Retorno Envio: TBoletoW_Sicredi_APIV2 29/03/24 19:13:54:462 - C digo do Envio: 422 1.1 Unprocessable Entity 29/03/24 19:13:54:462 - Retorno Envio: Result={"timestamp":"2024-03-29T22:13:54.430+0000","error":"UNPROCESSABLE_ENTITY","code":"422","message":"Opera o n o permitida: Necess rio informar pelo menos um dos descontos."} Só imagino que seja o problema. Já tentei de tudo.
  25. Estou com o mesmo problema. Retirei os acentos e registrou com sucesso, mas só para teste, porque são muitos clientes. Alguma previsão de correção do componente?
×
×
  • 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...