Ir para conteúdo
  • Cadastre-se

marcelosantos

Membros Pro
  • Total de ítens

    89
  • Registro em

  • Última visita

Tudo que marcelosantos postou

  1. Daniel se uso gpPaygo ou gpTefDial o recurso funciona (tanto no DEMO, quanto na minha aplicação) inclusive no mesmo computador, com o mesmo pin pad se com "carga" você quiser dizer ao ligar o PinPad, não aparece nada com relação a ABECS, se for outra coisa favor dizer que verifico
  2. Daniel, copiei o TEFDDEMONF.exe e TEFDDEMONF.INI para dentro da pasta da minha aplicação onde o TEFPAygoWeb esta instalado (C:\manager\) Inicio o TefDDemonf.exe e clico em operações e solicitar CPF (Aqui já recebo o erro) O PinPad é um ingenico ipp320 Obs.: Apagei todos os logs e fiz apenas 3 operações Solicitar CPF Venda Credito a vista de R$ 10,00 Solicitar CPF PGWeb.rar
  3. Olá O componente ACBrTEFD está devolvendo o erro Chamada invalida ao solicitar o CPF Teste foi feito no Demo Não Fiscal configurado como PaygoTEFWeb Chamada: ACBrTEFD1.CDP('F', Saida); // F=CPF LOG ***************EACBrTEFPayGoWeb*************** CHAMADA INVALIDA PW_iPPGetUserData( PWDPIN_DIGITE_O_CPF, 11, 11, 30 ) PWRET_31 PW_iGetResult( PWINFO_RESULTMSG ) [CR] CHAMADA INVALIDA EACBrTEFPayGoWeb: CHAMADA INVALIDA ***************EACBrTEFPayGoWeb*************** CHAMADA INVALIDA Obs.: Configurado como TefDial ou TefPaygo o Recurso funciona normalmente
  4. Obrigado Daniel, então vou deixar '02' mesmo
  5. Posso uma aplicação (Frente de Caixa com emissão de NFCe) homologada na Pay Go usando o GP "gppaygo" agora estamos pensando em implementar o GP "gppaygoweb" (via dll) e percebi que em nossa aplicação toda vez que vamos iniciar uma transação de venda fazemos: StatusTransacao := DM.ACBrTEFD.CRT( StrToCurrDef(vValorPago, 0), '02', NumDocVinculado) só que no demo de TEF não fiscal é utilizado o comando OK = ACBrTEFD1.CRT(AValor, '01'); ou seja o IndiceFPG_ECF é '01' e na minha aplicação '02' A dúvida é, este valor interfere em algo? ou só era usado para o PAC_ECF (que não utilizamos mais aqui em PE - na nossa software house)
  6. EMBarbosa, problema resolvido tudo funcionando perfeitamente Componente agora está redondo
  7. Basta consultar novamente a transação e verificar se o status é 'paid'
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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"
  13. 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)
  14. 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
  15. 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)
  16. 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
  17. marcelosantos

    ACBr PicPay - bug

    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
  18. 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
  19. marcelosantos

    ACBr PicPay

    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?
  20. Obrigado a todos pelas respostas, olhando todos os Set na unit TDFeSSL, ficou claro todo os procedimentos (comportamentos) dos componentes
  21. 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
  22. 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
  23. 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
  24. 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?
  25. 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
×
×
  • 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.

The popup will be closed in 10 segundos...