Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 134 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia!
Estamos realizando os testes do roteiro de homologação e estamos precisando de uma ajuda quanto ao recebimento de PIX (Carteira Digital).
São enviados os parametros: 


=> PW_iAddParam (37 - TOTAMNT): 1000
=> PW_iAddParam (7969 - PAYMNTTYPE): 8
=> PW_iAddParam (32513 - USINGPINPAD): 1
=> PW_iAddParam (53 - AUTHSYST): PIX C6 BANK
=> PW_iExecTransac: NOTHING(-2493)

Nada é gerado no pin pad e transação não é realizada, mas retorna conforme abaixo:

============== PARAMETROS ==============
OPERATION<0X2> = 33
POSID<0X11> = 88872
DESTTCPIP<0X1b> = esba-hom01.tpgweb.io:17500
UNKNOWN<0X1d> = GERTEC PPC-930;192MB C1400.12503.VR1115 @2.12002.14 200921 7200032401011632
UNKNOWN<0X23> = ul
REQNUM<0X32> = 0000131499
AUTHSYST<0X35> = PIX C6 BANK
VIRTMERCH<0X36> = 4607
CNFREQ<0X43> = 1
AUTLOCREF<0X44> = 92
LANGUAGE<0X6c> = 0
PROCESSMSG<0X6f> =  REALIZE A LEITURA DO QR CODE 01
CNCDSPMSG<0X74> =  OPERACAO CANCELADA
CNCPPMSG<0X75> =  OPERACAO CANCELADA
UNKNOWN<0X7e> = 002.14 200921 GERTEC PPC-930;192MB PPC-930 2.121400.12503.VR1115 @002.14 200921 002.14 200921 12000000001.19 1.0.3-20170613 3.0.3-20170613 1.0.2-20171120 1.0.1-20170601 0816 03200240 11 1.0.0-20150224 1.0.1-20180614 7200032401011632
PAYMNTTYPE<0X1f21> = 8
UNKNOWN<0X1f77> = 00020101021226990014br.gov.bcb.pix2577qrcode-h.c6pix.com/qrs1/v2/01jxJ3ryeGCHqHn7jg63Y7cDd7mqfbwWvuiCeAH7AmebtbLc1A520400005303986540510.005802BR5916Regressivo Teste6009SAO PAULO62070503***63040479
UNKNOWN<0X1f81> = 1
USINGPINPAD<0X7f01> = 1
PPCOMMPORT<0X7f02> = 05
IDLEPROCTIME<0X7f04> = 240708105924
SERVERPND<0X7f0b> = 1
PPINFO<0X7f15> = GERTEC PPC-930;192MB C1400.12503.VR1115 @2.12002.14 200921 7200032401011632
UNKNOWN<0X7f16> = 9
UNKNOWN<0X7f21> = 0004.0001.0027.0001
UNKNOWN<0X7f4e> = SO:Win 10 , 64bits
UNKNOWN<0X7f51> = 0
UNKNOWN<0X7f52> = 0
UNKNOWN<0X7f53> = 00000000000000000000000000000000
========================================

Os testes referentes à crédito e débito já estão ok.

  • Fundadores
Postado

Por favor experimente fazer uma transação, informando apenas "TOTAMNT", para verificar se na relação de adquirentes, aparece o "PIX C6 BANK"

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

 

21 minutos atrás, Daniel Simoes disse:

Por favor experimente fazer uma transação, informando apenas "TOTAMNT", para verificar se na relação de adquirentes, aparece o "PIX C6 BANK"

Obrigado pelo retorno,

Sim, aparece:

CapturadeTela2024-07-08s12_51_02.png.840faa0bf6613bcb477d4fb584ab1a0a.png

O retorno é o mesmo de antes.

  • Fundadores
Postado

ahh.. agora que compreendi a msg...

Isso é esperado.. o "NOTHING", é uma chamado do Loop, que dá  a chance de você como aplicação, encerrar o Loop, mas não é necessário ação do seu lado..

veja o que diz a documentação, sobre o PWRET_NOTHING

https://paygodev.readme.io/docs/52-captura-de-dados#interface-com-o-pinpad

Em qual linguagem você está desenvolvendo ?

Há vários Demos no repositório da PayGo

https://github.com/adminti2?tab=repositories

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado (editado)
5 minutos atrás, Daniel Simoes disse:

ahh.. agora que compreendi a msg...

Isso é esperado.. o "NOTHING", é uma chamado do Loop, que dá  a chance de você como aplicação, encerrar o Loop, mas não é necessário ação do seu lado..

veja o que diz a documentação, sobre o PWRET_NOTHING

https://paygodev.readme.io/docs/52-captura-de-dados#interface-com-o-pinpad

Em qual linguagem você está desenvolvendo ?

Há vários Demos no repositório da PayGo

https://github.com/adminti2?tab=repositories

Nossa aplicação é em Java. Negócio é que não consigo gerar o QrCode no PinPad.
Em todos os exemplos que vi e vídeos que assisti os parâmetros estão sendo enviados iguais.

Editado por Milton Ferreira
  • Fundadores
Postado

é o padrão da DLL... ela mesmo, cuida de enviar o QRCode ao Pinpad... mas se você interrompe o fluxo, quando recebe o PWRET_NOTHING, pode ser esse o problema

Acho que em Java o Demo é esse aqui: https://github.com/adminti2/pdvWindowsPayGoLibC_Java

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado (editado)

Estou meio perdido no que fazer aqui. O que tenho que fazer quando receber o retorno NOTHING? Não interrompi o fluxo. Não acontece mais nada ao lado da lib.
O retorno completo é: 


[ OPERACAO CANCELADA, 1, 002.14 200921 GERTEC PPC-930;192MB PPC-930 2.121400.12503.VR1115 @002.14 200921 002.14 200921 12000000001.19 1.0.3-20170613 3.0.3-20170613 1.0.2-20171120 1.0.1-20170601 0816 03200240 11 1.0.0-20150224 1.0.1-20180614 7200032401011632,  REALIZE A LEITURA DO QR CODE 01, 00000000000000000000000000000000, 0004.0001.0027.0001, 88872, 0000131561, 0, ul, 1, SO:Win 10 , 64bits, PIX C6 BANK, 8,  OPERACAO CANCELADA, 1, 05, GERTEC PPC-930;192MB C1400.12503.VR1115 @2.12002.14 200921 7200032401011632, 33, 240708153710, 144, GERTEC PPC-930;192MB C1400.12503.VR1115 @2.12002.14 200921 7200032401011632, 9, 4607, 1, 0, esba-hom01.tpgweb.io:17500, 0, 00020101021226990014br.gov.bcb.pix2577qrcode-h.c6pix.com/qrs2/v2/02VpklHFRH4yDFIwdiavzBs5fsHEpHvtVGQZsmFMnhSVwHNR6u52040000530398654041.005802BR5916Regressivo Teste6009SAO PAULO62070503***630402B2]

Falta somente recebimento de carteira digital para solicitar agendamento da homologação.
Rodei o código de exemplo baixado GitHub e acontece o mesmo, não gera o QRCode no PinPad.

Editado por Milton Ferreira
  • Fundadores
Postado

Veja o Fluxo-grama, na imagem do link: https://paygodev.readme.io/docs/52-captura-de-dados#interface-com-o-pinpad

Você deve chamar o PW_iPPEventLoop

image.png

Talvez ajude, ver os fontes do ACBr:

http://svn.code.sf.net/p/acbr/code/trunk2/Fontes/ACBrTEFD/ACBrTEFPayGoWebComum.pas

veja o método:

function TACBrTEFPGWebAPI.ExecutarTransacao: Boolean;
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

Infelizmente ainda não consegui solução, segui o fluxograma, implementei como no exemplo:
for (;;) {
            iRet = LibFunctions.eventLoop(displayMessage);
            if (iRet != PWRet.NOTHING)
                break;
            try {                                          
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

Não sai nunca do loop, pois mesmo chamando o eventLoop o retorno nunca muda, sempre retorna NOTHING e aplicação fica para aguardando mudar o status, o que não acontece! ☹️

  • Membros Pro
Postado
20 horas atrás, Daniel Simoes disse:

Por favor anexe o seu Log após esse teste

Bom dia,

Segue anexo logs conforme solicitado, mais uma vez, agradeço a ajuda desde já!
Para a aplicação continuar, coloquei um contador que sai do loop após 5 iterações e tenta confirmar a transação (AUTO), mas o QRCode não é gerado de modo algum no PinPad.

comms_240710.logppsers_240710.log

  • Fundadores
  • Solution
Postado

Você parece que saiu do Loop, quando recebeu o PWRET_NOTHING

10:24:19:963 [PGWebLib.c] PW_iExecTransac <-2493>   <--- PWRET_NOTHING
10:24:20:366 [PGWebLib] PP_Treatment Selecionado: [0x41]
10:24:21:782 [PGWebLib.c] Confirmacao auto (0x41131, 268612, 269, , PIX C6 BANK) IGNORADA 2
10:24:21:962 [PGWebLib.c] PW_iConfirmation(0x3221, 0000268612, 269, , 4607, PIX C6 BANK) <0>

O correto seria aparecer uma nova chamada a PW_iExecTransac no Log

Veja o Loop do ACBr ele permanece no Loop enquanto o Retorno for (PWRET_OK, PWRET_NOTHING, PWRET_MOREDATA)

      iRet := PWRET_OK;
      while (iRet = PWRET_OK) or (iRet = PWRET_NOTHING) or (iRet = PWRET_MOREDATA) do
      begin
        {$IfDef FPC}
        Initialize(ArrParams);
        {$EndIf}
        NumParams := Length(ArrParams)-1;
        GravarLog('PW_iExecTransac()');
        iRet := xPW_iExecTransac(ArrParams, NumParams);
        GravarLog('  '+PWRETToString(iRet)+', NumParams: '+IntToStr(NumParams));

        case iRet of
          PWRET_OK:
            Break;
          PWRET_NOTHING:
            Sleep(CSleepNothing);
          PWRET_MOREDATA:
            iRet := ObterDados(ArrParams, NumParams);
        end;
      end;   

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado
19 horas atrás, Daniel Simoes disse:

Você parece que saiu do Loop, quando recebeu o PWRET_NOTHING

10:24:19:963 [PGWebLib.c] PW_iExecTransac <-2493>   <--- PWRET_NOTHING
10:24:20:366 [PGWebLib] PP_Treatment Selecionado: [0x41]
10:24:21:782 [PGWebLib.c] Confirmacao auto (0x41131, 268612, 269, , PIX C6 BANK) IGNORADA 2
10:24:21:962 [PGWebLib.c] PW_iConfirmation(0x3221, 0000268612, 269, , 4607, PIX C6 BANK) <0>

O correto seria aparecer uma nova chamada a PW_iExecTransac no Log

Veja o Loop do ACBr ele permanece no Loop enquanto o Retorno for (PWRET_OK, PWRET_NOTHING, PWRET_MOREDATA)

      iRet := PWRET_OK;
      while (iRet = PWRET_OK) or (iRet = PWRET_NOTHING) or (iRet = PWRET_MOREDATA) do
      begin
        {$IfDef FPC}
        Initialize(ArrParams);
        {$EndIf}
        NumParams := Length(ArrParams)-1;
        GravarLog('PW_iExecTransac()');
        iRet := xPW_iExecTransac(ArrParams, NumParams);
        GravarLog('  '+PWRETToString(iRet)+', NumParams: '+IntToStr(NumParams));

        case iRet of
          PWRET_OK:
            Break;
          PWRET_NOTHING:
            Sleep(CSleepNothing);
          PWRET_MOREDATA:
            iRet := ObterDados(ArrParams, NumParams);
        end;
      end;   

 

Deu certo Daniel, muito obrigado pela atenção!
Abraço!

  • Curtir 1
  • Este tópico foi criado há 134 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.