marcelosantos
Membros Pro-
Total de ítens
89 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que marcelosantos postou
-
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
-
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
-
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
-
Obrigado Daniel, então vou deixar '02' mesmo
-
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)
-
EMBarbosa, problema resolvido tudo funcionando perfeitamente Componente agora está redondo
-
Basta consultar novamente a transação e verificar se o status é 'paid'
-
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
-
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
-
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
-
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
-
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"
-
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)
-
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
-
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)
-
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
-
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
-
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
-
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?
-
Ordem de Precedência Certificado Digital
marcelosantos replied to marcelosantos's tópico in NFe/NFCe - Nota Fiscal Eletrônica
Obrigado a todos pelas respostas, olhando todos os Set na unit TDFeSSL, ficou claro todo os procedimentos (comportamentos) dos componentes -
Ordem de Precedência Certificado Digital
marcelosantos replied to marcelosantos's tópico in NFe/NFCe - Nota Fiscal Eletrônica
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 -
Ordem de Precedência Certificado Digital
um tópico no fórum postou marcelosantos NFe/NFCe - Nota Fiscal Eletrônica
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 -
tef TEF Travado e voltando Estorno/Cancelamento
marcelosantos replied to marcelosantos's tópico in TEF
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 -
tef TEF Travado e voltando Estorno/Cancelamento
marcelosantos replied to marcelosantos's tópico in TEF
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? -
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