
Luciano Rodrigues Pereira
Membros-
Total de ítens
219 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Luciano Rodrigues Pereira postou
-
API Cobrança Banco do Brasil - Alterar data limite de desconto
um tópico no fórum postou Luciano Rodrigues Pereira ACBrBoleto
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. -
API BB - Modalidade = Variação da carteira?
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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ê? -
API BB - Modalidade = Variação da carteira?
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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? -
API BB - Modalidade = Variação da carteira?
um tópico no fórum postou Luciano Rodrigues Pereira ACBrBoleto
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... -
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?
-
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';
-
API Cobrança Sicoob - Como anexar o certificado digital?
um tópico no fórum postou Luciano Rodrigues Pereira ACBrBoleto
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? -
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.
-
API Cobrança - Enviar Lista de Boletos ou um a um?
um tópico no fórum postou Luciano Rodrigues Pereira ACBrBoleto
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? -
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
- 14 replies
-
- 1
-
-
- webservice
- acbrboleto
- (e 3 mais)
-
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 replies
-
- webservice
- acbrboleto
- (e 3 mais)
-
Webservice - alterar valor de desconto - Sicredi
um tópico no fórum postou Luciano Rodrigues Pereira ACBrBoleto
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 é? -
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
- 14 replies
-
- 1
-
-
- webservice
- acbrboleto
- (e 3 mais)
-
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.
- 14 replies
-
- webservice
- acbrboleto
- (e 3 mais)
-
Webservice - Acess violation em enviar
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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 -
Webservice - Acess violation em enviar
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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. -
Webservice - Acess violation em enviar
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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? -
Webservice - Acess violation em enviar
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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. -
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.
- 14 replies
-
- webservice
- acbrboleto
- (e 3 mais)
-
Webservice - Acess violation em enviar
Luciano Rodrigues Pereira replied to Luciano Rodrigues Pereira's tópico in ACBrBoleto
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. -
Webservice - Acess violation em enviar
um tópico no fórum postou Luciano Rodrigues Pereira ACBrBoleto
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 -
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.
- 14 replies
-
- webservice
- acbrboleto
- (e 3 mais)