Ir para conteúdo
  • Cadastre-se

Valdir Dill

Membros Pro
  • Total de ítens

    924
  • Registro em

  • Última visita

  • Days Won

    4

Valdir Dill last won the day on 9 Abril 2022

Valdir Dill had the most liked content!

4 Seguidores

Sobre Valdir Dill

Contact Methods

  • Website URL
    sistemagfil.com.br

Últimos Visitantes

3.582 visualizações

Valdir Dill's Achievements

  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.
×
×
  • 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.