Jump to content

logo_acbr_paygo.png

Chegou o TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


botao_saibamais.png

beneficios.png

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

marcelosantos

Usuários SAC
  • Content Count

    59
  • Joined

  • Last visited

Everything posted by marcelosantos

  1. EMBarbosa, problema resolvido tudo funcionando perfeitamente Componente agora está redondo
  2. Basta consultar novamente a transação e verificar se o status é 'paid'
  3. Isso exato, eu tentei colocar um "Result.free" no final da função mais não deu certo, o retorno da função ficou invalido e o qr-code não foi carregado
  4. Tem sim, só vou precisar que você me diga como é feito esse FullDebug mais detalhes do erro 29 - 36 bytes: TStringStream x 3 -> Esse 3 no final indica que foram 3 TStringsStream que estouraram erro, no debug aqui na hora que mandou enviar uma solicitação ele passa no método de gerar o qr-code por 3 vezes, então por isso o 3 fiz um teste de uso normal e solicitei 5 pagamentos, o leak no final era = 15
  5. Olá a todos os envolvidos Refiz todos os testes e tudo esta funcionando perfeitamente muito boa a ideia deste evento "procedure TDM.ACBrPicPay1WaitingTimeout(var Retry: Boolean);" -> Testei retornando true e false para a variável e funcionou como esperado neste evento "procedure TDM.ACBrPicPay1WaitingPayment(const Status: string; const TempoRestante: Integer);" o Retorno do TempoRestante esta funcionando perfeitamente, era justamente o que eu queria o único problema agora é um Memory Leak que é estourado ao finalizar a aplicação e ter usado o método Enviar --------------------------- Unexpected Memory Leak --------------------------- An unexpected memory leak has occurred. The unexpected small block leaks are: 29 - 36 bytes: TStringStream x 3 The sizes of unexpected leaked medium and large blocks are: 3116, 3116, 3116 --------------------------- OK --------------------------- eu acredito que seja esta function, (não tenho certeza) function TACBrPicPay.GetQRCode: TStringStream; {$IFDEF FPC} procedure DecodeQRCodeLazarusFPC; var vData: Ansistring; begin vData := DecodeStringBase64(fQRCode); Result := TStringStream.Create(vData); Result.Position := 0; end; {$ELSE} procedure DecodeQRCodeDelphi; var Input: TStringStream; begin Input := TStringStream.Create(fQRCode); try Result := TStringStream.Create(fQRCode); DecodeStream(Input, Result); Result.Position := 0; finally Input.Free; end; end; {$ENDIF} begin if fQRCode = '' then begin Result := nil; EACBrPicpayError.Create('QRCode está vazio ou inválido.'); end; fQRCode := StringReplace(fQRCode, 'data:image/png;base64,', '', [rfReplaceAll]); {$IFDEF FPC} DecodeQRCodeLazarusFPC; {$ELSE} DecodeQRCodeDelphi; {$ENDIF} end; Ultimo detalhe, fiz os testes também iniciando a aplicação, usando os métodos, consultar e cancelar e não há nenhum memory leak ao fechar a aplicação
  6. Eu pensei em mais uma propriedade teríamos tempo de Retorno que seria o tempo total, e teriamos tempoDecorrido (tempo que falta) que seria o valor retornando para a aplicação
  7. Bom dia "resolvi" o contador de tempo restante do demo adicionando o seguinte na unit ACBRPicPay.pas procedure TACBrPicPayThread.FazWaitingPayment; begin if Assigned(fACBrPicpay.fOnWaitingPayment) then begin fACBrPicpay.fOnWaitingPayment(fACBrPicpay.Status); fACBrPicpay.TempoRetorno := fACBrPicpay.TempoRetorno - 1; // adicionei esta linha end; end; sei que não estou usando as melhoras praticas, mais resolveu aqui pra mim, tudo funcionando agora. Se houver uma melhor forma de fazer, gostaria de "ouvi-los"
  8. EMBarbosa a principio tudo funcionado perfeitamente, ainda vou continuar com os testes aqui ainda não consegui pegar o TempoRetorno, entendi que ele mudou para fUltimoTempoAguardo e que preciso usar Thread.synchonize (se você me disse como fazer, posso alterar o exemplo e mandar para vocês)
  9. Olá a todos Pessoal, enquanto não sai a atualização do componente, consegui usar o "código fonte" sem erros. Como estou fazendo? Crio o Componente em tempo de execução Configuro todas suas propriedades Atribuo procedures previamente criadas a todos aos eventos (onwait, statuspayment, error) Uso o componente (objeto). Aqui tudo funcionando, Enviar, Consultar e Cancelar no final destro o objeto com Free e se for usar novamente, executo tudo novamente
  10. Isso EMBarbosa, acredito que se resolver a questão da destruição e criação das threads resolva o problema do componente. Quanto ao não uso de threads por conta do congestionamento vou resolver com esta variável, ACBrPicpay1.CancelarAguardoRetorno := true;, ou seja se for uma transação que não preciso do retorno no exato momento, eu deixo manual para o usuario consultar a transação no momento mais oportuno para ele se a negociação/transação for no checkout do PDV, então bloqueio tudo (igual ao TEF discado) e aguardo a resposta pelo tempo configurado (com a opção de cancelar o aguardo, caso o cliente não consiga realizar o pagamento)
  11. EMBarbosa fiz 2 testes, vou descrever abaixo usando o demo disponível no SVN Iniciei o programa e solicitei o 1º pagamento, após gerar o qr-code, fiz o pagamento usando o celular, o programa estava contado o tempo e assim que confirmou o pagamento no celular o status mudou para "PAGO" na COR verde. Após isto solicitei um novo pagamento (sem fechar o programa e com um novo id de referencia) o QR-code, foi gerado, recebi no celular a solicitação de pagamento, mais o tempo não estava decrementando (no modo debug ele não passa pelo evento OnWaitPayment). No 2º teste, iniciei o programa solicitei um novo pagamento (com um novo id é claro), gerou o qr-code, mais não finalizei este pagamento, cancelei a "espera" setando ACBrPicpay1.CancelarAguardoRetorno := true;. Após isso gerei uma nova solicitação e novamente o demo não passa pelo evento onwaitPayment, e logo o tempo não é decrementado
  12. Amigos há um pequeno problema (bug) no componente ACBrPicPay, acredito que seja a forma que o componente trata uma ação Ao inciar a primeira transação (cadastrar um pagamento) com o componente tudo funciona perfeitamente. Se tentar realizar a segunda operação (de cadastrar novamente) o componente não entra mais no evento ACBrPicPay1WaitingPayment, é como se a thread de aguardar o status não existisse mais O componente não tem um metodo "Clean", igual usamos na NFe, para reiniciar o componente, e talvez aqui esteja o problema. Ainda não tenho conhecimento suficiente para resolver este, se alguém puder ajudar ficarei agradecido
  13. Emanuel, vou escrever o que eu entendo ... O PicPay foi criado para transações e-commerce desta forma a integração com sua API, traz estas 2 variaveis que você sitou acima porque? e para que elas servem? ACBrPicpay1.Lojista.URLCallBack, esta URL é passada para o PicPay pois assim que o mesmo detectar uma mudança de status na transação ele avisa a sua aplicação através desta url (ele faz um post em seu servidor/aplicação) (ele não avisa o status atual avisa apenas que a transação sofreu uma alteração de status) ACBrPicpay1.Lojista.URLReturn, esta segunda é para onde o cliente será redirecionado quando ele realizar o pagamento da transação via web todas 2 urls são obrigatórias, mas podem ser urls "invalidas" (no formato correto, mesmo sem existir) caso o seu uso seja apenas desktop como assim? você pode criar pagamentos, enviar para o PicPay, esquecer estes lá (o picpay comunica ao cliente via push notification, e email) ai depois para você saber se foi pago ou não você consulta o status deste pagamento, e se estiver tudo ok, você libera a transação vai ficar de forma manual? vai é o melhor uso? não o PicPay foi criado para isso? não mas podemos usar e integrar nossas aplicações desta forma mais eu queria deixar de forma automática, não tem como? tem sim basta você seguir a ideia do Thulio e criar (ter) servidor web para ficar fazendo o meio de campo (escutado as respostas do PicPay, e enviado para sua aplicação desktop as repostas através do Redis) é uma gambiarra? é, mas funciona
  14. Pessoal atualizei meu repositório e vi as classes (fontes) do ACBr PicPay mais não encontrei o pacote para instalar o componente o instalador também ainda não foi atualizado Alguém pode me ajudar de como instalar este componente?
  15. Obrigado a todos pelas respostas, olhando todos os Set na unit TDFeSSL, ficou claro todo os procedimentos (comportamentos) dos componentes
  16. Juliomar sim vi o vídeo é justamente por conta dele que estou fazendo esta pergunta hoje só uso numero de serie + senha mais quero dar mais opções para o cliente, e sei que há uma ordem pois já vi aqui no forum, não lembro se foi um video ou em um post quero saber a ordem, para poder saber como o componente vai se comportar se o usuario tiver configurado mais de 1 opção
  17. Hoje podemos configurar o certificado digital nos componentes ACBr de varias formas (Arquivo PFX, Numero de Serie, URL para PFX e Dados PFX) eu gostaria de saber qual a ordem que os componentes utilizam para utilizar o certificado? ex.: 1º ArquivoPFX 2º Numero de Serie 3º URL PFX 4º Dados PFX Já vi esta ordem em algum lugar aqui no forum, mais infelizmente não achei novamente e na epoca não havia a opção URL PFX
  18. Olá a todos resolvi o Problema Não havia configurado a pasta backup do componente do TEF, logo o arquivo ficou em \%minhaAplicacao%\TEF\ACBr_TEF_DIAL_001_- .tef Apaguei e resolveu Obrigado a todos
  19. Daniel, ná configuração do componente eu deixo esta pasta em branco então teoricamente este "backup" esta no path da minha aplicação certo ou seja basta apagar o arquivo?
  20. Olá Pessoal Estou com um problema em um cliente, onde houve uma falha em uma transação de TEF e agora toda vez que se inicializa o TEF ele quer cancelar a operação, mais não conseguimos cancelar pois pede o cartão do cliente que não esta mais na loja, o suporte da Pay GO diz que o problema eu meu sistema e no PDV deles o TEF esta funcionando segue LOG, (detalhe - -- 17/09 12:40:00:428 - TEF_DIAL FinalizarRequisicao: CNC, Renomeando: C:\TEF_DIAL\req\intpos.tmp para: C:\TEF_DIAL\req\intpos.001 Este arquivo não existe na pasta) Alguém com alguma Idea de como resolver este problema? logTEF.txt
  21. Já Ítalo Não Resolveu Consegui agora mudando a properties SSLType para LT_TLSv1_2, antes estava LT_all
  22. Olá Pessoal Uso as seguintes configurações, do certificado SSLCruptLib := cryWinCrypt SSLHttpLib := httpWinHttp SSLLib := libCustom SSLXMLSignLib := XsMsXml Estou Recebendo o seguinte erro ao tentar enviar para a SEFAZ/PE Erro ao enviar nota. Erro Interno: 12175 Erro HTTP: 0 URL: https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4?wsdl Falha no Envio da Requisição. Erro: 12175 - Um ou mais erros foram encontrados no certificado Secure Sockets Layer (SSL) enviado pelo servidor Se tento ambiente de contingencia homologação da tudo certo, já tentei outras configs mais também não tive sucesso. Seria este um problema na SEFAZ/PE? ou algum problema na maquina dos meus clientes, os minhas configurações?
  23. Olá Daniel Com os seus comentários, descobri o problema, e encontrei a solução Na tela de pedidos, apesar de o tamanho do campo "valor do PIS" ter apenas 2 casas decimais, a query estava recebendo apenas o calculo (630,00 * 1,65) = 10,395 então na hora de gerar o xml o componente do ACBr estava recebendo este valor R$ 10,395 ( e o ACBr truncava) Quando fechava a query, e abria novamente o banco por ter apenas 2 casas decimais, já estava com o Valor R$ 10,40, então quando eu mandava gerar novamente o ACBr recebia o valor R$ 10,40 e assim a NFCe era autorizada Obrigado Daniel e Amarildo
  24. Daniel, o ACBr em quem gera o XML o mais curioso é que todos os 2 XML que anexei foram gerados pelo mesmo bloco de código, a diferença é que o primeiro foi gerado na minha tela de pedidos/venda (onde recebo a rejeição) , após fechar tudo e tentar o reenvio (na tela de consulta) o mesmo é gerado corretamente é e autorizado
  25. Olá estou recebendo a rejeição -> Total do PIS difere do somatório dos itens sujeitos ao ICMS O problema está em: Valor da Base de Calculo = R$ 630,00 % PIS = 1,65 Valor do PIS: 10,395 Recebo o erro na minha tela de fechamento da NFCe, e não consigo enviar recebendo a reijeição. -> Neste caso o Componente escreveu o valor do PIS como sendo 10,39 O interessante é se eu fecho a tela de pedido e inicio a tela de consulta e tento reenviar a NFCe, utilizando a mesma função para re-gerar o XML nesta ocasião o Componente escreve o valor do PIS como sendo 10,40 e a NFCe é aceita Estou anexando os 2 XML, e gostaria da ajuda de vocês para saber porque 1 hora ele arrendonda para cima e outra hora ele arrendonda para baixo. 26180704947656000177650010000000151000005040-nfe.xml erro 26180704947656000177650010000000151000005040-nfe.xml
×
×
  • Create New...