Ir para conteúdo
  • Cadastre-se

marcelosantos

Membros Pro
  • Total de ítens

    102
  • Registro em

  • Última visita

Tudo que marcelosantos postou

  1. Sim eles são apagos se eu realizar uma operação de pagamento. O detalhe é que na impressão ele vai imprimir cada operação que estiver no Backup, neste caso não há problema, porque na impressão não há nenhum caracter (apenas quebra de linha) e posso tratar isso antes de imprimir, mas achei que o meu problema de system exception estava justamente nesta função (de apagar o arquivo) Ou seja, você está me confirmando que o comportamento normal hoje é se eu realizar varios testes os arquivos vão ficando 1 por 1?
  2. Não, Delphi 10.2
  3. Ok Pedro, é exatamente este os passos, a unica diferença no seu teste foi a versão do Delphi Vou criar um novo ambiente de desenvolvimento, com um computador diferente, e dou retorno aqui, muito obrigado Deixo aqui apenas 1 pergunta, se você realizar varias vezes os arquivos de backup são apagados? (conforme citei no ponto 5 da primeira mensagem deste tópico) - vou anexar a imagem novamente, para explicar este ponto
  4. Fontes atualizados, sem nenhuma alteração Paygo na Versão 5.1.30.0 PGWebLib na versão 4.1.30.0 apenas essas 2 linhas adicionadas no DEMO no evento onClose do Form Principal, mas o erro aqui acontece com ou sem elas 2 if ACBrTEFAPI1.Inicializado then ACBrTEFAPI1.DesInicializar;
  5. Exato, são estes mesmos simplesmente execultar o DEMO em DEBUG por dentro da IDE, executar um teste de TEF (Botão TESTAR TEF), e quando este finalizar, clicar no botão de fechar o DEMO Fontes Atualizados, sem nenhuma alteração No DEMO apenas incluí no onClose do Form, mais pode realizar o teste com/sem essas 2 linhas que o erro acontece aqui if ACBrTEFAPI1.Inicializado then ACBrTEFAPI1.DesInicializar;
  6. Mais informações, mais um teste realmente eu estava fechando o DEMO do ACBr como ACBrTEFAPI inicializado, então adicionei no onClose do FrPrincipal if ACBrTEFAPI1.Inicializado then ACBrTEFAPI1.DesInicializar; Ele entrou nesta condição quando eu cliquei no botão de fechar, executou o desinicializar, e voltou para o delphi com o mesmo erro de system exception e os arquivos de Backup ainda não foram apagados... PS.: na aplicação da empresa já existe o código acima relatado
  7. 1 - No Demo do ACBr, rodando na IDE, observe no Log, se ele realmente carregou a DLL da pasta Debug... Sim olhei aqui e ele está carregando a DLL debug (vou anexar o log do teste que acabei de realizar, e o erro que relatei acima aconteceu novamente) 05/08/24 07:38:07:672 - Inicializar 05/08/24 07:38:07:681 - TACBrTEFPGWebAPI.SetDiretorioTrabalho( c:\manager\tef\PGWeb ) 05/08/24 07:38:07:689 - TACBrTEFPGWebAPI.Inicializar 05/08/24 07:38:07:701 - LibFullName: Usando Path da Váriável de Ambiente "PathPGWebLib": C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll 05/08/24 07:38:07:707 - TACBrTEFPGWebAPI.LoadDLLFunctions - C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll 2- Em sua aplicação de Produção, certifique-se de que o Componente é inicializado no Início da Aplicação e Desinicializado apenas quando a aplicacao fecha O sintoma da pasta Presa, e a Proteção da DLL ainda ativa, o que indica que o componente não for Desinicializado Ok Daniel vou me certificar se estou inicializando e desinicializando o componente corretamente Daniel ou outra pessoa da comunidade, seria possível realizar vocÊs realizarem o teste que descrevi no DEMO do ACBr, para verificar se realmente o Componente está causando o erro de instrução na CPU? LogTEFAPIDemo.txt
  8. Olá a todos, existe algum problema de System Exception no ACBrTEFAPI, neste post vou descrever como simular, e postar algumas imagens Estou com os Fontes do ACBRTEF Atualizados, usando a DLL da Paygo 5.1.30.0 (Em Debug) 1 - Abrir o Demo do TEFAPI para Delphi, e compilar em DEBUG (Erro passa despecebido se compilado em RELEASE) 2 - Configurar o TEFAPI e Realizar uma Operação de Testes (Botão TESTAR TEF) Aqui tudo vai ocorrer bem, a DLL de Debug será carregada, os testes irão acontecer, a aplicação vai imprimir os comprovantes (sem nenhuma informação) 3 - Ao fechar a Aplicação começam a aparecer os erros, na sequencia abaixo dos arquivos anexados: 1º a imagem 3.1 -> Debug Exception Notification 2º a imagem 3.2 -> system excpetion (code 0xc0000008) at 0xc7cd14ba 3º a imagem 3.3 -> tela do Delphi mostrando o erro de instrução na CPU 4 - Já tentei adicionar ao DEMO a instrução -> initialization ReportMemoryLeaksOnShutdown := true; na tentativa de achar algum erro, mais não consegui nada 5 - Eu acredito que o problema está na escrita em disco (ou delete) do arquivo de backup (ACBr_00x.Tef) , porque? se realizar os passos 1 e 2 varias vezes são criados varios arquivos de backup e os mesmos não estão sendo apagados (imagem 5.1) Considerações finais Como descrito acima o erro não é visível quando a aplicação está em RELEASE, mas usando o projeto ACBrTEFAPI em nossa aplicação, começamos a detectar travamentos, lentidões (quando iniciava transação TEF), e erros de acesso ao PINPAD todos esses na re-homologação do TEF para a nova DLL da Paygo, e procurando o problema encontramos o exe de nossa aplicação "preso" no gerenciador de tarefas do Windows, executando em Debug nos deparamos com o erro relatado no ponto 3, daí quando partimos para o DEMO, encontramos o mesmo erro. Em algum determinando momento procurando pelo erro, ao iniciarmos a trasanção TEF, recebemos o erro de acesso ao diretorio c:\manager\tef (nosso diretorio TEF de trabalho), e foi aí que percebi que os arquivos de backup também são salvos neste diretorio, então comecei a acreditar que pode ser o WARSAM que está bloqueando este diretorio em algum momento, e o Projeto ACBrTEFAPI não está conseguindo escrever dados no mesmo diretorio e com isto ocasionando o erro. Procuramos a opção de alterar o diretorio do arquivo de backup (assim como existe a opção de alterar o arquivo de log), na tentativa de resolver o problema, mais esta opção não existe no ACBrTEFAPI, então resolvi compatilhar com a comunidade na tentativa de alguem testar em suas maquinas de desenvolvimento e se realmente o erro existir, tentamos alterar o projeto ACBrTEFAPI para escrever seus arquivos backups em uma pasta dirente da usada pela Paygo para salvar seus logs, certificados, arquivos, etc. fico no aguardo de pelo menos alguém realizando os passos 1 e 2 e verificando se o problema realmente existe Obrigado desde já
  9. Pessoal Corrigindo... Não é StrToTipoAutor o correto é TipoAutorToStr Acabei fazendo confusão na hora de escrever
  10. Conforme relatado no Discord: Bom dia pessoal, gostaria de conversar sobre uma alteração na unit ACBrNFe.EnvEvento, sobre o Evento Ator Interessado na NF-e mais precisamente na Linha 401, que hoje está assim: Result.AppendChild(AddNode(tcStr, 'HP21', 'tpAutor', 1, 1, 1, '1')); e acredito que o correto seria assim: Result.AppendChild(AddNode(tcStr, 'HP21', 'tpAutor', 1, 1, 1, StrToTipoAutor(Evento[Idx].FInfEvento.detEvento.tpAutor)); Pelo que li na NT, este evento pode ser enviado tanto pelo Emitente, Destinatario e Transportada , e com o Valor 1 este evento so estava funcionando para o Emitente da NFe e o Diego Folieni — Respondeu Bom dia @Marcelo Santos . Sua consideração me parece correta. Criada a #TK-5714 para análise e correção por parte da equipe de consultores. Ainda assim, como as mensagens aqui no Discord se perdem com maior facilidade por ser mais dinâmico, por favor, é muito importante que você crie um tópico no fórum do Projeto ACBr relatando a questão, para que fique devidamente documentado e também para que possa centralizar a comunicação ficando mais simples lhe fornecer um retorno.
  11. Em minha maquina de desenvolvimento há alguma incompatiiblidade (silenciosa) na instalação que a pasta e DLL não são criados, há alguns relatos no discord e inclusive a SETIS já respondeu informando que isso ocorre quando há "vestigios" da DLL antiga Não tenho certeza mais: Em testes peguei o instalador e coloquei em uma máquina com instalação do Windows nova, a instalação foi ok, no momento que setei a ferramenta da paygo para DEMO a pasta foi criada junto com a DLL, ou seja, cheguei na conclusão que esta pasta só é criada se ativamos o DEMO na ferramenta da Paygo
  12. Apenas para ficar registrado 1 - com os fontes atualizados e 2 - se a aplicação for compilada em DEBUG e 3 - se estiver usando a DLL com proteção Warsaw e 4 - a DLL de debug não estiver presente em "C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll" a aplicação vai estourar um erro, e tudo com relação ao TEF para de funcionar começam a acontecer varios Access Violation PS.: Não adianta pegar a DLL de um outro computador e tentar copiar para o local, o Warsaw bloqueia esta operação
  13. quando escrevi estava sim, mais estou a mais de 15 sem pegar no projeto houve outras prioridades da empresa aqui e o foco foi mudado
  14. Pessoal vou deixar aqui o que eu tinha feito Alterados neste o Retono da Inclusão e da Consulta (com algumas melhorais/mapeamentos) Escritos neste os metodos para Alterar Vencimento, Protestar, Baixar, Alterar Descontos , Atribuir Descontos, Alterar Valor da Multa, Alterar Valor de Juros, Alterar Abatimento, Alterar Especie e Sustar Protesto* (precisou da inclusão do Metodo HTTP DELETE em ACBrBoletoConversao), detalhe para todos estes inscritos é, a conta da empresa aqui não tem estes serviços liberados pelo banco e todos eles estão retornando: (tenho a mesma resposta utilizando o POSTMAN) { "httpCode": "401", "httpMessage": "Unauthorized", "moreInformation": "Cannot pass the security checks that are required by the target API or operation, Enable debug headers for more details." } Ou seja, ainda é preciso escrever o mapeamento/retorno destes no componente Obs.: eu não usei a implementação do Pedro, mas acredito que possamos juntar as 2 e ter um ganho no que falta ser feito ACBrBoleto.rar
  15. Pessoal o projeto está funcionando, mas não está pronto se vocês forem PRO basta baixar, substituir as unit e ir usando/corrigindo erros se não forem, pensem em ajudar a comunidade a equipe do ACBr só vai subir para o repositorio oficial quando muitos estiverem precisando, ou quando o projeto estiver 100%
  16. Vou Ressucitar este tópico Meu Problema é: Cobranças PIX Registradas no Banco do Brasil vem com a propriedade TACBrPIXCobGerada.calendario.criacão com a Data e Hora correta (local) e a propriedade TACBrPIXCobGerada.calendario.criacao_Bias com 0 Cobranças PIX Registradas no Siccob vem com a propriedade TACBrPIXCobGerada.calendario.criacão com a Data e Hora de Greenwich (3 Horas a mais do horario local) e a propriedade TACBrPIXCobGerada.calendario.criacao_Bias com 180 ou seja está correto, só que ao meu ver deveria ser -180 (negativo) e não 180 (positivo) minha observação está correta? Daí me deparei com change-log 14/02/2023 -- ACBrPIXSchemasCobV, ACBrPIXSchemasDevolucao, ACBrPIXSchemasLocation, ACBrPIXSchemasLoteCobV -- [*] Criadas propriedades "Bias" para armazenar informação do TimeZone em propriedades TDateTime. Por: Elias César mas não encontrei este Bias com formato TDateTime Onde estou errando?
  17. Pessoal bom carnaval para todos, segue abaixo a continuação da implementação para o Banco SICOOB Alterados neste o Retono da Inclusão e da Consulta (com algumas melhorais/mapeamentos) Escritos neste os metodos para Alterar Vencimento, Protestar, Baixar, Alterar Descontos , Atribuir Descontos, Alterar Valor da Multa, Alterar Valor de Juros, Alterar Abatimento, Alterar Especie e Sustar Protesto* (precisou da inclusão do Metodo HTTP DELETE em ACBrBoletoConversao), detalhe para todos estes inscritos é, a conta da empresa aqui não tem estes serviços liberados pelo banco e todos eles estão retornando: (tenho a mesma resposta utilizando o POSTMAN) { "httpCode": "401", "httpMessage": "Unauthorized", "moreInformation": "Cannot pass the security checks that are required by the target API or operation, Enable debug headers for more details." } Ou seja, ainda é preciso escrever o mapeamento/retorno destes no componente Na Próxima quinta-feira, vamos falar com o gerente para solicitar esta liberação de serviços para poder testar estes eventos/endpoints Segue os arquivos para analise e melhorias ACBrBoleto.rar
  18. Isso compartilhei aqui o que já tinha feito, pois havia uns 2 usuarios que gostariam de contribuir, não sei se eles fizeram alguma coisa Estou finalizado umas outras demandas da empresa, e pretendo sim continuar, caso ninguém já tenha feito
  19. Segue o que já foi feito Alterado os metodos RequisicaoJson Gerar Pagador Gerar Juros Gerar Multa Adicionado GerarInstrucao Inclusão do Boleto já funciona, precisa mapear o retorno da inclusão; Consulta ao Boleto já funciona, precisa mapear o retorno ao objeto ACBr ACBrBoleto.rar
  20. Foi necessario parar o desenvolvimento nesta, por necessidade da empresa aqui está em Standy by, assim que finalizar as outras coisas, vou voltar a trabalhar nesta
  21. Toda documentação está disponével em https://developers.sicoob.com.br/ Não há PDFs para Download mas é tudo bem feito estilo "swagger"
  22. Pessoal bom dia, segue uma outra questão Os outros bancos que já trabalham com API, devolvem na resposta da inclusão do boleto o PDF em Base64? (Igual o Sicoob) caso positivo, não seria o caso de termos esta propriedade no componente de Boleto? Sou ciente que já temos no projeto ACBr, a geração dos boletos, e que nestas temos mais de 5 modelos disponíveis em 2 componentes diferentes A questão aqui é simplismente dar ao usuario a opção de escolher (gerar o seu próprio ou imprimir o que o banco gerou automaticamente)
  23. Victor/Panda, atualzei tudo fiz algumas alterações na escrita e leitura dos objetos JSON, mais ainda há muita coisa para fazer detectei um pequeno problema que não consegui resolver sem alterar a ACbrBoletoWS.REST.pas segue para sua analise a procedure que tive que alterar procedure TBoletoWSREST.DefinirCertificado; begin // Adicionando o Certificado if NaoEstaVazio(Boleto.Configuracoes.WebService.ArquivoCRT) then HTTPSend.Sock.SSL.CertificateFile := Boleto.Configuracoes.WebService.ArquivoCRT; if NaoEstaVazio(Boleto.Configuracoes.WebService.ArquivoKEY) then HTTPSend.Sock.SSL.PrivateKeyFile := Boleto.Configuracoes.WebService.ArquivoKEY; end; Toquei BoletoWS.ArquivoCRT por Boleto.Configuracoes.WebService.ArquivoCRT, e a mesma coisa para o ArquivoKEY, o problema é que o objeto BoletoWS.ArquivoCRT estava chegando neste ponto vazio e eu não entendi o porque (apesar do objeto ACBRboleto está configurado corretamente) A inclusão na API funciona, preciso finalizar a escrita do retorno do banco (QRCode e o PDF que está chegando via BASE64) A Consulta que você alterou também funciona, só que alguns dados do retorno não estão devidamente mapeados Todos os outros Endpoints ainda precisa ser avaliados e implementados
  24. Olá Pessoal, vou compartilhar aqui o que consegui fazer, não está muito orientado a objeto mas já consegui emitir boletos, as outras funcionalidades (consultas, alteração de campos do boleto, etc) aindam precisam ser implementadas/testadas Há 4 "Problemas" que é preciso resolver, são eles: 1 - A Autenticação no Banco 2 - O Header das requisições que precisam da KEY x-sicoob-clientid: {{CLIENT_ID}} 3 - Os [ ] no objeto json 4 - O nome das das Units (Bancoop ou Sicoob) (rs) 1 - Autenticação no Banco usar a autenticação como esta abaixo não funciona, pois o OAtuth requer obrigatoriamente o Client_secret e no Sicoob ele não usa este function TBoletoW_Sicoob_API.GerarTokenAutenticacao: string; begin FPContentType := 'application/x-www-form-urlencoded'; OAuth.Payload := True; Result := inherited GerarTokenAutenticacao; end; para contornar eu usei uma solução nada OO, criei o objeto httpsend no metodo configurei ele localmente, disparei a conexão e no fim devolvi para o result o Token recebido (sei que este precisa ser melhorado) outro detalhe da autenticação é que quando ele é chamado passa pelo metodo GerarHeader procedure TBoletoW_Sicoob_API.GerarHeader; begin DefinirContentType; DefinirKeyUser; if NaoEstaVazio(Boleto.Cedente.CedenteWS.ClientID) then HTTPSend.Headers.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID); end; ou seja, ele escreve x-sicoob-clientid, e este só deve ser usado após a autenticação, aqui pensei em colocar a condição "se autenticado" só não sei como pegar esta "variável" 2 - O Header das requisições que precisam da KEY x-sicoob-clientid: {{CLIENT_ID}} Apesar de está sendo configurado/escrito em GerarHeader if NaoEstaVazio(Boleto.Cedente.CedenteWS.ClientID) then HTTPSend.Headers.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID); ele não está chegando em ACbrBoletoWS.Rest, e para contornar isto estou forçado sua escrita com LHeaders.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID) nesta unit, ou seja inviabilizei com isso a utilização desta unit para todos os outros bancos 3 - Os [ ] no objeto json No Sicoob a requisição de inclusão pode conter até 10 boletos, ou seja o Json enviando é um Array de Json que pode conter até 10 elementos (em outras palavras em vez do Json iniciar e terminar com "{ }" ele inicia e termina com "[ ]"). Não consegui resolver este detalhe em AcbrBoletoW_Sicoob_API.pas, então adicionei os colchetes em ACBrBoletoWS.Rest, mais precisamente no metodo Executar (inviabilizando novamente esta unit para os outros bancos) WriteStrToStream(HTTPSend.Document, AnsiString('[' + FPDadosMsg + ']')); 4 - O nome das Units (Bancoob ou Sicoob) (rs) Pessoal, em minha região (Nordeste, Pernambuco), todas as agencias do Banco 756 São SICOOB, e não Bancoop, não sei se Bancoop é a realidade de vocês (região do Sul / Sudeste), procurando aqui achei esta informação (que diz que: O Banco Cooperativo do Brasil (Bancoob) agora se chama Banco Sicoob) -> https://web.facebook.com/sicooboficial/posts/4554063361276071/?locale=ar_AR E Consultando a Relação de Instituiçoes do Banco Central do Brasil -> https://www.bcb.gov.br/pom/spb/estatistica/port/ASTR003.pdf, Também encontro Banco SICOOB S.A. para o numero 756 Não seria o caso de usar ACBrBoletoW_Sicoob_API.pas (como fiz) ao invez de ACBrBoletoW_Bancoop.pas? ACBrBoleto.rar
×
×
  • 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.