Ir para conteúdo
  • Cadastre-se

Valdir Dill

Membros Pro
  • Total de ítens

    924
  • Registro em

  • Última visita

  • Days Won

    4

Tudo que Valdir Dill postou

  1. Não, no código Acbr não mexi. Apenas pesquisei para ver se tinha alguma rotina para transformar a octet-stream que retorna, em um arquivo .pdf. Essa mexida no código Acbr foi o @DevSolucaoSistemasque fez, lá no início do ano passado quando ele abriu esse post. Mas depois não teve mais continuidade. O arquivo .txt com a stream que retorna da Sicredi eu anexei na minha postagem anterior (há pouco). O que eu precisaria é de uma rotina (em Delphi) para salvar essa stream em arquivo .pdf, entende? Obrigado
  2. Boa tarde, Sim @Juliomar Marchetti, eu havia notado que o post é bastante antigo. Mas como não encontramos nada a respeito do assunto (e já pesquisamos um bocado nos últimos dias), resolvemos arriscar perguntando aqui no post do amigo. Vai que...rs. No componente não tem opção para tratar retorno pdf da Sicred. Já virei os fontes de ponta cabeça e não encontrei. Talvez a questão seja até simples de resolver, e seja eu que não esteja achando o fio da meada. Veja se podes me ajudar com alguma dica, por gentileza. É assim: o que ocorre é que a Sicredi, no caso da requisição do .pdf, ela retorna uma octet-stream, conforme arquivo que estou anexando a este post. O meu problema é que não estou sabendo como fazer para gerar o arquivo .pdf com essa stream, entende? Qualquer sugestão ajuda, rs. Obrigado! retPdf.txt
  3. Bom dia, @DevSolucaoSistemas Conseguistes algum progresso em relação a gerar o arquivo .pdf com a octet-stream retornada pela API Sicredi? Se sim, por gentileza, compartilha conosco, pois nós, e com certeza outros, estão com o mesma dificuldade. Obrigado!
  4. Bom dia, Resolvido. Baixado o arquivo (sem frase de segurança) e funcionou perfeito! Obrigado
  5. Ah, perfeito. Vamos tentar isso e retornaremos com os resultados. Obrigado!
  6. Boa tarde Boa tarde, Sim, como eu havia dito, eu fiz um teste com o outro arquivo .key que gerei pelo demo Acbr, e esse arquivo tem na primeira linha o "-----BEGIN RSA PRIVATE KEY-----". Esse arquivo não dá erro ao carregá-lo no Demo. Mas o arquivo .key que vem do banco é esse que anexei e, ao carregá-lo, dá o erro. Por favor, faça um teste configurando no componente o arquivo Key (Sem frase de segurança)... Não entendi muito bem. Pode, por gentileza, detalhar mais como eu faria esse teste? Obrigado!
  7. Bom dia, Estamos tendo erro "bad decrypt" ao carregar (no demo Acbr) o arquivo de chave privada (.key. Arquivo .key e print do erro, em anexo. Esse arquivo foi gerado no portal do Sicredi, assim como o .cer. Fiz um teste gerando um arquivo de chave privada pelo demo do Acbr. Este é carregado sem erros. Alguma sugestão do que pode ser esse problema? Obrigado api-pix-pix_max.key
  8. Sim, eu concordo que ao varrer uma lista, deve ser verificado antes o seu count. A boa prática de código seria essa. Mas note que o código (na rotina completa que coloquei) só pega o index 0 se ACBrPixCD1.PSP.epCob.CobCompleta.status = stcCONCLUIDA. E veja também (no .txt que anexei) que, no momento em que ocorre a exceção, em ACBrPixCD1.PSP.epCob.CobCompleta.AsJSON tem sim um PIX. Então, se status = stcCONCLUIDA e ACBrPixCD1.PSP.epCob.CobCompleta.AsJSON contém retorno de um PIX pago, o ACBrPixCD1.PSP.epCob.CobCompleta.pix.count não deveria estar necessariamente > 0? Obrigado!
  9. Bom dia, Estamos tendo um erro na hora de confirmar se um PIX dinâmico, banco Inter, foi pago. Gostaria de ajuda para ver se há alguma coisa errada em nosso código ou se pode ser algum problema no componente. O que ocorre é que são gerados e confirmados 6, 7, ...PIX ou mais, tudo normal, ou seja, é gerado o qrCode e depois a confirmação. Porém, aleatoriamente acontece um erro. Como eu disse, vários PIX processam normalmente e, de repente, um deles dá problema, sem que nada diferente seja feito em relação aos PIX anteriores que processaram corretamente. A consulta é feita por um timer com interval de 5 segundos. O erro é: "Argument out of range". Acreditamos (não temos certeza porque não há como debbugar) que ocorra nessas linhas de nosso código: begin VRetorno.FValorPago := ACBrPixCD1.PSP.epCob.CobCompleta.pix[0].valor; VRetorno.FEndToEnd := ACBrPixCD1.PSP.epCob.CobCompleta.pix[0].endToEndId; end; O código todo de tratamento da confirmação é este: try if not ACBrPixCD1.PSP.epCob.ConsultarCobrancaImediata(VID_PIXGerado) then //se não conseguiu fazer a consulta. begin TimerConsultarPIX.Enabled := false; VRetorno.FStatus := stcNENHUM; VRetorno.FErro := 'Não foi possível efetuar a consulta.'; end else begin VRetorno.FStatus := ACBrPixCD1.PSP.epCob.CobCompleta.status; if VRetorno.FStatus <> stcATIVA then //se estivar ativa, ou seja, se não foi paga nem baixada, não sai. begin TimerConsultarPIX.Enabled := false; if VRetorno.FStatus = stcCONCLUIDA then begin VRetorno.FValorPago := ACBrPixCD1.PSP.epCob.CobCompleta.pix[0].valor; VRetorno.FEndToEnd := ACBrPixCD1.PSP.epCob.CobCompleta.pix[0].endToEndId; end else ChamaErro('O PIX mudou status, mas não foi pago. Seu status está: ' + PIXStatusCobrancaToString(VRetorno.FStatus)); end; end; except on e:exception do begin TimerConsultarPIX.Enabled := false; VMsg := 'Ocorreu um erro ao tentar buscar o status de pagamento do PIX.'; VMsg := VMsg + '- exception: ' + e.message + sLineBreak + '- Status do PIX: ' + PIXStatusCobrancaToString(VRetorno.FStatus); if NaoEstaVazio(ACBrPixCD1.PSP.epCob.CobCompleta.AsJSON) then VMsg := VMsg + sLineBreak + '- Json retornado: ' + ACBrPixCD1.PSP.epCob.CobCompleta.AsJSON; WriteToTXT(VG.FDirTemp + 'logPIX.txt', VMsg, false); ChamaErro(VMsg); end; end; Ou tem alguma coisa que estamos fazendo errado (o tempo do timer talvez?), ou, em algum momento o componente se perde e não alimenta a lista do ACBrPixCD1.PSP.epCob.CobCompleta.pix[0], pois a consulta retorna tudo certo no, conforme dá para ver no arquivo logPIX.txt que é gravado e estou anexando aqui. Obrigado logPIX.txt
  10. Deixe-me se entendi a sugestão e me ajudem colocar isso em um código, por favor. no evento ACBrTEFAPI1QuandoPerguntarMenu eu faria: - if szPrompt = "DATA 1 PARCELA:" then VIDentificadorGuardadoDataPrimeiraParcela := wIdentificador - if szPrompt = "VALOR 1 PARCELA:" then VIDentificadorGuardadoValorPrimeiraParcela := wIdentificador aí, no final da operação faço: DataPrimeiraParcela := ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(VIDentificadorGuardadoDataPrimeiraParcela) ValorPrimeiraParcela := ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(VIDentificadorGuardadoValorPrimeiraParcela) Seria isso? Obrigado!
  11. Boa noite, Obrigado @EMBarbosa as acho que você não entendeu bem nossa dúvida/dificuldade. Vou tentar explicar melhor. Bem, em primeiro lugar, é preciso registrar que, na verdade os eventos que você sugere seriam os QuandoPerguntarCampo e QuandoPerguntarMenu. Obs.: estamos falando do TEF PayGo, ok? Mas a questão não é onde (quando) pegar esses dados e sim, COMO pegar. Qual a rotina/método usar? Por exemplo, se eu quiser saber a quantidade de parcelas, vou ler: ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(PWINFO_INSTALLMENTS), certo? Mas COMO ler, por exemplo, o valor e vencimento da parcela 02 dessa transação que eu mencionei na abertura deste post? Os parâmetros PWINFO_INSTALLMDATE e PWINFO_INSTALLM1AMT trazem o vencimento e valor, mas é apenas da entrada (acredito que seja a primeira parcela). Mas e as parcelas 2, 3, ...? Como faço para obter seus dados? Obs.: eu já havia relatado essa situação no Discord e o @Daniel Simoes me orientou a abrir um post aqui no fórum para uma melhor análise. Obrigado
  12. Bom dia, Estamos tentando implementar a opção de recebimento no TEF com cartão de débito com mais de 1 parcela. Em anexo enviamos os arquivos de log para análise, se necessário. A operação realizada e que consta no log foi: - Cartão débito - 3 parcelas - Valor total: R$ 10,00 Ao iniciar o processamento, o TEF faz as perguntas: 1) Se a primeira parcela será à vista: foi respondido que não; 2) Se as parcelas serão iguais: respondido que não; Por conta dessa resposta, o TEF pergunta o valor e vencimento de cada parcela. Foi informado assim: - Parcela 01: R$ 2,00; vencimento: 05/01/24 - Parcela 02: R$ 3,00; vencimento: 10/01/24 - Parcela 03: R$ 5,00; vencimento: 15/01/24 A questão que não estamos conseguindo fazer é capturar os dados dessas parcelas. Como é uma informação que o operador vai digitar na tela do TEF, precisamos capturar essa lista de parcelas após a operação ser autorizada, para podermos gravar no banco de dados da nossa aplicação. Como fazer essa captura? Em anexo arquivos de log e também comprovante impresso da transação. Obrigado! comms_231221.log Log21122023.txt ppsers_231221.log
  13. Sim, exatamente essa foi a intenção do post, informar para que a questão seja analisada e, se for o caso, aplicada a correção. Obrigado!
  14. Sim sim, exatamente por causa das dll estarem na pasta é que o Acbr está carregando elas e, quando as carrega, ocorre o problema. Entendo perfeitamente essa questão das .dll openSSL e que o Acbr buscará na pasta do .exe. Já usamos isso há vários anos, rs. A questão é simples: com dlls versão 1.1, tudo certo. Com dlls versão 3.0, vai dar esse erro. Acredito que você fizer esse teste aí, vai acontecer o erro também, pois aconteceu com vários usuários nossos. Assim que colocamos as novas dlls na pasta, o problema ocorreu. Voltamos as dlls 1.1, o problema foi sanado. Lembrando que só ocorre se usar assim: FAcbrNota.SSL.DadosPFX := ... Se alimentar o número de série, ou buscando o .pfx do arquivo, o problema não acontece. Obrigado!
  15. Bom dia, Assim como sempre fizemos, estamos alimentando os dados do certificado no componente com uma stream gravada no BD de nossa aplicação. Desta forma: TBlobField(FDSFiscais.FieldByName('CERT_DADOSPFX')).SaveToStream(VStream); FAcbrNota.SSL.DadosPFX := VStream.DataString; Sempre funcionou e continua funcionando. Porém, com as openSSL versão 3 não funciona. Após alimentar os dados no componente e se tenta verificar o CNPJ AcbrNFe1.SSL.CertCNPJ ocorre o erro em anexo. Repito: a mesma rotina, mas utilizando as openSSL 1.1, não ocorre nenhum erro.
  16. Boa tarde, No programa de exemplo não ocorre. Vamos investigar melhor o que pode ser. Obrigado
  17. Bom dia, Não sei se pode ser algo na nossa aplicação, mas já fuçamos em tudo e não conseguimos detectar qual é a causa. Ao imprimir uma DANFSe na tela (ACBrNFSeXDANFSeRL1.MostraPreview= true) , ocorre o access violation ao destruir o RLReportPreview. Na linha indicada no print anexo Alguma sugestão? Obrigado!
  18. Sim Italo eu li seu post. Na verdade li, reli e reli de novo, rs. Justamente para não postar algo errado aqui, rs. Mas acho que você não viu meu post direito (ou então estou ficando doido, rs). Veja aí no primeiro parágrafo que eu falo da consulta do evento usando apenas a chave. Essa consulta, naquele seu post, diz que está funcionando tudo ok, mas aqui não está. Essa última linha que coloquei dizendo que dá esse erro é uma outra consulta que só relatei pois nessa o componente gera o xml, mas dá o erro. Só incluí esse relato para demonstrar que estou fazendo pelo demo do acbr e que setei corretamente a pasta de salvamento. Mas vamos esquecer essa consulta que dá erro então. Vamos nos ater apenas a primeira parte desta minha resposta anterior, ou seja, da consulta de evento apenas com a chave (sem código de evento e sem a sequência). Nessa consulta, o sistema salva apenas esses 2 arquivos .json que mencionei. Nenhum XML é salvo, entende?
  19. No demo. O 31056082203424804000106000000000000623099306124149-eve.xml anexo é o que é gerado na pasta quando se consulta pela chave + código do evento. Também ocorre o erro do arquivo ErroChaveCodEvento.png anexo. Também gera o 31056082203424804000106000000000000623099306124149-con-eve.json (anexo). 31056082203424804000106000000000000623099306124149-con-eve.json 31056082203424804000106000000000000623099306124149-eve.xml
  20. Boa tarde, Não sei se estou fazendo algo errado, mas aqui não está salvando os XML dos eventos na pasta que indico para salvamento. Salva esses 2 arquivos abaixo, mas .json. Isso na consulta de evento usando apenas a chave. - 31056082203424804000106000000000000623099306124149-eve.json - 31056082203424804000106000000000000623099306124149-con-eve.json Já na consulta de eventos usando a chave e o código de evento (e101101), dá erro -> Expected "{" but found invalid symbol (1,2)
  21. Sim, está habilitado. (Configuracoes.Arquivos.Salvar := True) É justamente por isso que o demo gera esse temp2.xml. Veja no print o que o demo mostra na aba "XML de REtorno".
  22. Bom dia, Entendi. Mas, na verdade, nenhuma das 3 consultas está funcionando aqui. Se consulto com chave + código de evento + sequencial, dá esse erro ("data error") que reportei inicialmente. Se consulto somente com a chave + código do evento (sem o sequencial), ocorre o erro do print que estou anexando agora. Se consulto somente com a chave, aí não da erro de processamento, ou seja "Sucesso" vem true, mas o XML (temp2.xml) traz apenas isto { "message": "The requested resource does not support http method 'GET'."}. no seu conteúdo.
  23. Desculpem, anexei duas vezes o XML e não anexei o erro, rs. Agora vai o print do erro.
  24. Boa tarde, Estamos tendo o erro "data error", print em anexo. Também anexo o XML retornado. Ocorre ao executar o método ACBrNFSeX1.ConsultarEvento(. Debugando verifiquei que a consulta é processada normalmente e retorna um XML, mas no TACBrNFSeProviderPadraoNacional.TratarRetornoConsultarEvento(, linha 869 da PadraoNacional.Provider.pas, ou seja, ao executar ArquivoXml := DeCompress(DecodeBase64(ArquivoXml)), acontece o erro. Aí não sei se pode ser alguma falha no componente ou se o XML está retornando com dados corrompidos. Obrigado! temp2.xml temp2.xml
×
×
  • 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.