Luciano Rodrigues Pereira Postado 30 Março Compartilhar Postado 30 Março (editado) 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 Editado 30 Março por Luciano Rodrigues Pereira Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 2 Abril Moderadores Compartilhar Postado 2 Abril tente entrar com F7 mas ao que parece não te objeto pra retornar no objeto json e dai o access violation Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Luciano Rodrigues Pereira Postado 2 Abril Autor Compartilhar Postado 2 Abril 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. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 2 Abril Moderadores Compartilhar Postado 2 Abril sim depurar com F7 e F8 para chegar onde está disparando o erro Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Luciano Rodrigues Pereira Postado 2 Abril Autor Compartilhar Postado 2 Abril 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. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 2 Abril Moderadores Compartilhar Postado 2 Abril Em 29/03/2024 at 21:25, Luciano Rodrigues Pereira disse: tem que ver antes de entrar nessa funçao o que tá retornando no json Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Luciano Rodrigues Pereira Postado 5 Abril Autor Compartilhar Postado 5 Abril 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? Link para o comentário Compartilhar em outros sites More sharing options...
Luciano Rodrigues Pereira Postado 5 Abril Autor Compartilhar Postado 5 Abril 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. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 5 Abril Moderadores Compartilhar Postado 5 Abril Tu está com algo nos fontes ou em seu delphi gerando o problema pois temos rodando aqui e não está ocorrendo o AV Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Renato Rubinho Postado 6 Abril Consultores Compartilhar Postado 6 Abril 19 horas atrás, Luciano Rodrigues Pereira disse: E deu o erro de Acess Violation Debuga o processo para ver onde ocorre o AV, se alguma chave do json que não existe, o próprio que pode não ter sido retornado ou algum ponto que esteja tentando acessar algo inexistente ou já removido da memória. Caso tenha alguma sugestão de correção, anexe os fontes alterados para análise. Link para o comentário Compartilhar em outros sites More sharing options...
Luciano Rodrigues Pereira Postado 10 Abril Autor Compartilhar Postado 10 Abril 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 Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 10 Abril Moderadores Compartilhar Postado 10 Abril Estranho pois uso o mesmo para emissão, alteração ,baixa etc e não tenho o erro relatado. mas vou tentar simular jogando informações incompletas ou erradas. eu uso só o V2 do sicredi Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Renato Rubinho Postado 10 Abril Consultores Compartilhar Postado 10 Abril Obrigado pela análise. 1 hora atrás, Luciano Rodrigues Pereira disse: 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. Não deve ser problema então, deve ser alguma exceção levantada e que foi tratada por um try..except. Ao clicar em continuar ou ignore... ele deve seguir sem problemas em ambiente de desenvolvimento. 1 hora atrás, Luciano Rodrigues Pereira disse: 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. Se tiver alguma sugestão de correção do erro, anexe os fontes para análise, pois o tratamento com try..except deve ter previsto exceções para não interromper o processo em produção. Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora