Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Boa tarde.

A seq. 16 do Sitef pede pra fazer uma venda com cartão de credito magnético e a vista. Quando faço usando credito a vista, ao voltar na aplicação ele não dá o resultado que o teste pede.

Já se faço utilizando cartão de débito, o teste é feito normalmente.

O que pode ser?

  • Membros Pro
Postado
16 horas atrás, jean_peixoto disse:

Boa tarde.

A seq. 16 do Sitef pede pra fazer uma venda com cartão de credito magnético e a vista. Quando faço usando credito a vista, ao voltar na aplicação ele não dá o resultado que o teste pede.

Já se faço utilizando cartão de débito, o teste é feito normalmente.

O que pode ser?

Em partes achei o que pode ser!

Debugando o código, verifiquei que quando é cartão de crédito não é gravado o arquivo de log '*001.tef' na pasta TEF.

Com cartão de débito é chamado o método para gravar, com cartão de crédito o método não é chamado! Não estou conseguindo achar onde esse método de gravação do arquivo é acionado para gravar o arquivo!

Alguém já passou pelo mesmo problema?

  • Membros Pro
Postado

Achei o proplema!

Não era tratado na função function TACBrTEFDCliSiTef.ContinuarRequisicao(ImprimirComprovantes: Boolean.

Somente débito era tratado, antes de retirar o cartão do pinpad.

Alterado também:   TACBrTEFDOperacaoMensagem = ( opmOK, opmYesNo,
                  --->        opmCNC,
                                opmExibirMsgOperador, opmRemoverMsgOperador,
                                opmExibirMsgCliente, opmRemoverMsgCliente,
                                opmDestaqueVia ) ;

Acrescentado opmCNC para tratar mensagem de cancelamento no evento OnExibeMensagem. No caso de quando a aplicação for iniciada por queda de energia e o componente faz o cancelamento automático!

Segue alteração nos arquivos!

ACBrTEFDClass.pas

ACBrTEFDCliSiTef.pas

  • 1 mês depois ...
Postado

Boa tarde!

Estou tendo o mesmo problema que você teve, mas estou tendo dificuldade por conta de ter utilizado o modelo do acbr como exemplo e, estar jogando algumas coisas pra dentro do nosso fonte.

Essa questão que você informou logo acima eu não consegui entender muito bem a rotina, estou tendo um pouco de dificuldade nessa questão de ser novo no delphi.

vou mostrar meu código pra ficar mais fácil de compreender

 

var
  Sts,caractere: integer;
  ProximoComando: integer;
  TipoCampo: integer;
  TamanhoMinimo: smallint;
  TamanhoMaximo: smallint;
  Buffer: array [0..20000] of Ansichar;
  Msg   : array [0..22000] of Ansichar;
  Aux   : Ansistring;
  Resultado: integer;
  outp:string;
  Arq,ArqCrt:TextFile;

  iFormaPgto: integer;

  cancelarope:string;
  Continua, ItemSelecionado, I,n: Integer;
//  ProximoComando,TamanhoMinimo, TamanhoMaximo : SmallInt;
//  TipoCampo: LongInt;
  Mensagem, MensagemOperador, MensagemCliente, CaptionMenu : String ;
  Resposta : AnsiString;
  SL,LOG,LOG_CRT: TStringList ;
   Digitado, GerencialAberto, FechaGerencialAberto, ImpressaoOk,
  Cartaoselecionado,   HouveImpressao, Voltar,CancelamentoCp,CrtCredito,CrtDebito : Boolean ;
  Est : AnsiChar;


  function ProcessaMensagemTela( AMensagem : String ) : String ;
  begin
    Result := StringReplace( AMensagem, '@', sLineBreak, [rfReplaceAll] );
    Result := StringReplace( Result, '/n', sLineBreak, [rfReplaceAll] );
  end;


begin
 PnlMensagem.Visible:=true;
 PnlMensagem.BringToFront;
 LOG := TStringList.Create;
 LOG_CRT := TStringList.Create;
 try
   AssignFile(Arq,'log.txt');
   ReWrite(Arq);

   AssignFile(ArqCrt,'LOG_CRT.txt');
   ReWrite(ArqCrt);

   CancelamentoCp:=false;
   cpTransmitido:=0;
   CrtCredito:=FALSE;
   CrtDigitado:=FALSE;
//   if EdtFormaPgto.Text='3' then CrtCredito

   iFormaPgto:=StrToInt(EdtFormaPgto.Text);

   i:=0;
   n:=0;

    repeat


    Application.ProcessMessages;
    Sts:= ContinuaFuncaoSiTefInterativo (ProximoComando, TipoCampo, TamanhoMinimo,
                                  TamanhoMaximo, Buffer, sizeof (Buffer), Resultado);
    Aux := 'ProximoComando = ' + inttostr(ProximoComando)  +
                                     ' Tipo = ' + inttostr(TipoCampo);

     LOG.Text:=('ContinuaFuncaoSiTefInterativo, Retornos: STS = '+IntToStr(Sts)+
          ' ProximoComando = '+IntToStr(ProximoComando)+
          ' TipoCampo = '+IntToStr(TipoCampo)+
          ' Buffer = '+Mensagem +
          ' Tam.Min = '+IntToStr(TamanhoMinimo) +
          ' Tam.Max = '+IntToStr(TamanhoMaximo)) ;

     Writeln(Arq,LOG.Text+#13+'-- '+FormatDateTime('dd/mm hh:nn:ss:zzz',now));
    Memo1.Lines.Add (Aux);
    Memo1.Lines.Add (Buffer);
             Resultado:=0;
//             Continua := 0;
            Mensagem := TrimRight( Buffer ) ;
            Resposta := '' ;
            Voltar   := False;
            Digitado := True ;
            cancelarope:='';

//            lblMensagem.Caption:='';
            if Sts = 10000 then
            begin
              if TipoCampo > 0 then
               begin
                 Resposta := IntToStr(TipoCampo);
                 LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                 Writeln(ArqCrt,LOG_CRT.Text);

               end;

              case ProximoComando of
                 0 :
                   begin
//                     TACBrTEFDRespCliSiTef(Self.resp).GravaInformacao( TipoCampo, Mensagem ) ;
                        {Grava arquivo quando tipo for cartão crédito, antes de tirar o cartão do pinpad.
                         Para fazer esse teste, o cartão tem que estar ainda no pinpad, logo após a digitação da senha
                         e a confirmação no pinpad. Sem esse tratamento o teste 16 do sitef para venda crédito não funciona}
                        LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                        Writeln(ArqCrt,LOG_CRT.Text);
//                        SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA);
//                        Inc(n);
                    case TipoCampo of
                    0:
                     begin
                      if CrtCredito then
                        LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                        Writeln(ArqCrt,LOG_CRT.Text);
// VERIFICAR

                        Resposta:=Salva_Le_Ini(ansiuppercase('CUPOMVIA1_TEF'),'',Memo2.Text,cLe);
//                        Impressao;
                      end;

//                     case TipoCampo of
                        15 :
                         begin
                            inttostr(TipoCampo) ;//Selecionou Debito;
                            SALVA_LE_INI('CUPOM_TEF','TIPO_CARTAO','DEBITO',cSalva);
                            CrtDebito := true;
                         end;
                        25 :
                          begin
                            inttostr(TipoCampo) ;//Selecionou Credito;
                            CrtCredito := true;
                            SALVA_LE_INI('CUPOM_TEF','TIPO_CARTAO',Mensagem,cSalva);
                          end;
                        29 : inttostr(TipoCampo) ;//Cartão Digitado;
                          {Indica que foi escolhido menu de reimpressão}
                        100:
                          begin
                            {Verifica se é cartão de crédito para gravar o arquivo}
//                            if copy(Mensagem,0,2) = '02' then
                            if iFormaPgto=3 then
                              begin
                               SL := TStringList.Create;
                               Memo2.Lines.Clear;
                               if Mensagem <> '' then
                                 begin
                                    SL.Text  := StringReplace( Mensagem, #10, sLineBreak, [rfReplaceAll] ) ;
                                    Memo2.Lines.Add(sl.Text);
//                                    IF i=0 then  Salva_Le_Ini(ansiuppercase('CUPOM_TEFCANCELADO'),'',Memo2.Text,cSalva);
                                    Impressao;
                                 end;


                              end;
                          end;
                         101,102:
                           begin
                             LOG_CRT.Text:='101,102:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                             Writeln(ArqCrt,LOG_CRT.Text);
                             SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA);
                           end;
                        56,57,58 :
                          BEGIN
                             LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                              Writeln(ArqCrt,LOG_CRT.Text);
 ;                        END;
                        110  : Cancelar_cupomtef:=true;
                        111,112:
                          begin
                          try

                             SL := TStringList.Create;
                             Memo2.Lines.Clear;
                             if Mensagem <> '' then
                               begin
                                  SL.Text  := StringReplace( Mensagem, #10, sLineBreak, [rfReplaceAll] ) ;
                                  Memo2.Lines.Add(sl.Text);
//                                  IF i=0 then  Salva_Le_Ini(ansiuppercase('CUPOM_TEFCANCELADO'),'',Memo2.Text,cSalva);
                                  Impressao;
                               end;
                           finally
                            SL.Free;
                           end;
                          end ;
                        121, 122 :
//                          if ImprimirComprovantes then
                          begin
                             { Impressão de Gerencial, deve ser Sob demanda }
                           try

                             SL := TStringList.Create;
                             Memo2.Lines.Clear;
                             if Mensagem <> '' then
                               begin
                                  SL.Text  := StringReplace( Mensagem, #10, sLineBreak, [rfReplaceAll] ) ;
                                  Memo2.Lines.Add(sl.Text);
                                  if CancelamentoCp=false then
                                    begin
                                      IF i=0 then  Salva_Le_Ini(ansiuppercase('CUPOMVIA1_TEF'),'',Memo2.Text,cSalva);
                                      IF i=1 then  Salva_Le_Ini(ansiuppercase('CUPOMVIA2_TEF'),'',Memo2.Text,cSalva);
                                    end
                                   else IF i=0 then  Salva_Le_Ini(ansiuppercase('CUPOM_TEFCANCELADO'),'',Memo2.Text,cSalva);
                                  Impressao;
                               end;
                               inc(i);
                           finally
                            SL.Free;
                           end;
                          end ;
                        133, 952:
                        begin
                          if TipoCampo=133 then  SALVA_LE_INI('CUPOM_TEF','DOC',Mensagem,cSalva);//documento

                           LOG_CRT.Text:='133,952:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                           Writeln(ArqCrt,LOG_CRT.Text);
                           SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA);
                           inc(n);
//                          fArqBackUp := CopiarResposta;
                        end;
                       2333:
                        begin
                           resposta:='0';
                           LOG_CRT.Text:='133,952:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                           Writeln(ArqCrt,LOG_CRT.Text);
                           SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA);


                        end;
                       5074:
                        begin
                           LOG_CRT.Text:='133,952:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem;
                           Writeln(ArqCrt,LOG_CRT.Text);
                           SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA);
                        end;
                     end;
                   end;

                 1 :
                   begin
//                     MensagemOperador := ProcessaMensagemTela( Mensagem );
                     LblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
                     Memo1.Lines.Add (Buffer);// DoExibeMsg( opmExibirMsgOperador, MensagemOperador, (TipoCampo=5005) ) ;
                   end ;

                 2 :
                   begin
//                     MensagemCliente := ProcessaMensagemTela( Mensagem );
                     LblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
                     Memo1.Lines.Add (Buffer);//  DoExibeMsg( opmExibirMsgCliente, MensagemCliente, (TipoCampo=5005) ) ;
                   end;

                 3 :
                   begin
//                     MensagemOperador := ProcessaMensagemTela( Mensagem );
                     LblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
                     MensagemCliente  := MensagemOperador;
                     LblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
                     Memo1.Lines.Add (Buffer);
                     //DoExibeMsg( opmExibirMsgOperador, MensagemOperador, (TipoCampo=5005) ) ;
//                     DoExibeMsg( opmExibirMsgCliente, MensagemCliente, (TipoCampo=5005) ) ;
                   end ;

                 4 : Memo1.Lines.Add (Buffer);

                 11 :
                   begin
                     MensagemOperador := '' ;
//                     DoExibeMsg( opmRemoverMsgOperador, '' ) ;
                     LblMensagem.Caption:='';//ProcessaMensagemTela( Mensagem );
                   end;

                 12 :
                   begin
                     MensagemCliente := '' ;
                     Memo1.Lines.Add (Buffer);
//                     DoExibeMsg( opmRemoverMsgCliente, '' ) ;
                     LblMensagem.Caption:='';//ProcessaMensagemTela( Mensagem );
                   end;

                 13 :
                   begin
                       Memo1.Lines.Add (Buffer);
                       LblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
//                     DoExibeMsg( opmRemoverMsgOperador, '' ) ;
//                     DoExibeMsg( opmRemoverMsgCliente, '' ) ;
                   end ;

                 14 :begin
                      CaptionMenu := '' ;
//                       continua:=0;
                     end;
                   {Deve limpar o texto utilizado como cabeçalho na apresentação do menu}

                 20 :
                   begin
//                     if Cancelar_cupomtef then resposta:='0'//confirmar reimpressão
//                     else
                      begin
                       if Mensagem = '' then
                         Mensagem := 'CONFIRMA ?';
                        lblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
//                      0 = confirma e 1 = cancela
                        if MessageDlg(Mensagem,mtConfirmation,[mbYes,mbNo],0) = mrYes then
                         begin
                           Resposta:='0';//confirmar cancelamento  // confirma reimpressão
                           cancelarope:= Resposta;
//                           Interromper:=true;
                         end
                        else
                          begin
                           Resposta:='1';//abortar o cancelamento  // cancela reimpressão
                           cancelarope:= Resposta;
                          end;

                       // se a resposta a mensagem for não, não deixar interromper
                       // voltar ao loop
                       if (TipoCampo = 5013) and (Resposta = '1') then
                           Interromper := False;
                        end;
                   end ;

                 21 :
                   begin
                     SL := TStringList.Create;
                     try
                        ItemSelecionado := -1 ;

                        if Reimpressao then // REIMPRESSÃO CUPOM then
                         begin

                          SL.Text := StringReplace( Mensagem, ';',
                                                  sLineBreak, [rfReplaceAll] ) ;
                          ACBrTEFD1CliSiTefExibeMenu( CaptionMenu, SL, ItemSelecionado, Voltar ) ;
                          if (not Voltar) then
                              begin
                                if (ItemSelecionado >= 0) and
                                     (ItemSelecionado < SL.Count) then
                                      Resposta := copy( SL[ItemSelecionado], 1,
                                         pos(':',SL[ItemSelecionado])-1 )
                                else
                                   Digitado := False ;
                                end;

                         end
                        else
                        case iFormaPgto of

                        2:begin //debito
                          if i=0 then resposta:='2' else
                          if CrtDigitado then//SELECIONAR CARTÃO DIGITADO
                           begin
                            resposta:='2';
                            CrtDigitado:=false;
                           end
                          else
                            if CrtDebito then //SELECIONAR A FORMA MAGNETICO/CHIP
                             begin
                               resposta:='1';//CARTÃO CRÉDITO
                               CrtDebito:=false;
                             end
                            else
                              begin
                                SL.Text := StringReplace( Mensagem, ';',
                                                           sLineBreak, [rfReplaceAll] ) ;
                                ACBrTEFD1CliSiTefExibeMenu( CaptionMenu, SL, ItemSelecionado, Voltar ) ;

                                if (not Voltar) then
                                   begin
                                     if (ItemSelecionado >= 0) and
                                         (ItemSelecionado < SL.Count) then
                                         Resposta := copy( SL[ItemSelecionado], 1,
                                                   pos(':',SL[ItemSelecionado])-1 )
                                      else
                                      Digitado := False ;
                                    end;
                               end;

                        end;


                        3:begin     //credito
                          if i=0 then resposta:='3' else
                          if CrtDigitado then//SELECIONAR CARTÃO DIGITADO
                           begin
                            resposta:='2';
                            CrtDigitado:=false;
                           end
                          else
                            if CrtCredito then //SELECIONAR A FORMA MAGNETICO/CHIP
                             begin
                               resposta:='1';//CARTÃO CRÉDITO
                               CrtCredito:=false;
                             end
                            else
                              begin
                                SL.Text := StringReplace( Mensagem, ';',
                                                           sLineBreak, [rfReplaceAll] ) ;
                                ACBrTEFD1CliSiTefExibeMenu( CaptionMenu, SL, ItemSelecionado, Voltar ) ;

                                if (not Voltar) then
                                   begin
                                     if (ItemSelecionado >= 0) and
                                         (ItemSelecionado < SL.Count) then
                                         Resposta := copy( SL[ItemSelecionado], 1,
                                                   pos(':',SL[ItemSelecionado])-1 )
                                      else
                                      Digitado := False ;
                                    end;
                               end;

                          end;

                        4:;

                       end;

                     finally
                      SL.Free ;
                      Inc(i);

                     end;
                   end;

                 22 :
                   begin
                     if Mensagem = '' then
                        Mensagem := CACBrTEFD_CliSiTef_PressioneEnter;
                        lblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
//                        DoExibeMsg( opmOK, Mensagem );
                   end ;

                 23 :
                   begin
                   //INTERROMPER O FLUXO DO CARTAO COM UM BOTAO NO MOMENTO DA EXECUÇÃO
//                     OnAguardaResp( '23', 0, Interromper ) ;
//                     if Interromper then resposta:='-2';
                     if (cancelarope='0') then lblMensagem.Caption:=ProcessaMensagemTela( Mensagem );

                   end;

                 30 :
                   begin
                     Resposta:='0';
                      SL := TStringList.Create;
                    if TipoCampo=500 then Resposta:='0' else
                       Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo,
                                                          TipoCampo, tcString, Resposta, Digitado, Voltar) ;
                     {Se o tipo campo for 505 é a quantidade de parcelas}
//                     TACBrTEFDRespCliSiTef( Self.Resp ).GravaInformacao( TipoCampo, Resposta ) ;
//                     BloquearMouseTeclado(True);
                   end;

                 31 :
                   begin
                     Resposta:='0';
//                     BloquearMouseTeclado(False);
                     Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo,
                                   TipoCampo, tcCMC7, Resposta, Digitado, Voltar ) ;
//                     BloquearMouseTeclado(True);
                   end;

                 34 :
                   begin
                     SL := TStringList.Create;
                    Resposta:='0';
                    if TipoCampo=504 then Resposta:='0' else
                     begin
                       Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo,
                                   TipoCampo, tcDouble, Resposta, Digitado, Voltar ) ;
//                      if Voltar then Continua := 1     { Volta para o menu anterior }
                     // Garantindo que a Resposta é Float //
//                     Resposta := FormatFloat( StringToFloatDef(Resposta, 0));

                      end;

                   end;
                 35 :
                   begin
                     Resposta:='0';
//                    input:= InputBox(Mensagem,'','');
//                     BloquearMouseTeclado(False);
//                     OnObtemCampo
                        Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo,
                                   TipoCampo, tcBarCode, Resposta, Digitado, Voltar ) ;
//                     BloquearMouseTeclado(True);
                   end;

{                 514 :
                  begin
                    TamanhoMaximo:=TamanhoMaximo;
                  end;  }

              end;
//               GravaLog( '*** ContinuaFuncaoSiTefInterativo, Finalizando: STS = '+IntToStr(Result) ) ;
            end;
//            else

              if Voltar then
                 Resultado := 1     { Volta para o menu anterior }
              else if (not Digitado) or Interromper then
                Resultado := -1 ;  { Cancela operacao }

              if (Voltar and (sts = 10000)) or (not Digitado) then
               begin
                lblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
//              DoExibeMsg( opmRemoverMsgOperador, '' ) ;
//              DoExibeMsg( opmRemoverMsgCliente, '' ) ;
               end ;

              StrPCopy(Buffer, Resposta);

    until sts <> 10000;
    CloseFile(ARQ);
    CloseFile(ArqCrt);
   if(sts <> 10000) and (sts >0) then
    case STS of
    -1: ShowMessage('Módulo não inicializado. O PDV tentou chamar alguma rotina sem antes executar a função configura.');
    -2: ShowMessage('Operação cancelada pelo operador.');
    -3: ShowMessage('O parâmetro função / modalidade é inválido.');
    -4: ShowMessage('Falta de memória no PDV. -5 Sem comunicação com o SiTef.');
    -6: ShowMessage('Operação cancelada pelo usuário (no pinpad).');
    -7: ShowMessage('Reservado');
    -8: ShowMessage('A CliSiTef não possui a implementação da função necessária, provavelmente está desatualizada (a CliSiTefI é mais recente).');
    -9: ShowMessage('A automação chamou a rotina ContinuaFuncaoSiTefInterativo sem antes iniciar uma função iterativa.');
    -10: ShowMessage('Algum parâmetro obrigatório não foi passado pela automação comercial.');
    -12: ShowMessage('Erro na execução da rotina iterativa. Provavelmente o processo iterativo anterior não foi finalizado até o final (enquanto o retorno for igual a 10000).');
    -15: ShowMessage('Operação cancelada pela automação comercial.');
    -20: ShowMessage('Parâmetro inválido passado para a função.');
    -21: ShowMessage('Utilizada uma palavra proibida, por exemplo SENHA, para coletar dados em aberto no pinpad. Por exemplo na função ObtemDadoPinpadDiretoEx.');
    -25: ShowMessage('Erro no Correspondente bancário: Deve realizar sangria.');
    -30: ShowMessage('Erro de acesso ao arquivo. Certifique-se que o usuário que roda a aplicação tem direitos de leitura/escrita.');
    -40: ShowMessage('Transação negada pelo SiTef.');
    -41: ShowMessage('Dados inválidos.');
    -42: ShowMessage('Reservado');
    -43: ShowMessage('Problema na execução de alguma das rotinas no pinpad.');
    -50: ShowMessage('Transação não segura.');
    -100: ShowMessage('Erro interno do módulo.');

    end;

 finally
   lblMensagem.Caption:=ProcessaMensagemTela( Mensagem );
    if sts= -5 then MessageDlg('Erro de comunicação sitef!',mtError,[mbOK],0);
//    if sts= -2 then MessageDlg('Cancelamento executado!',mtWarning,[mbOK],0);

 end;
  PnlMensagem.Visible:=false;
 end;

 

Eu percebi que quando o cartão não é visa ele consegue me dar o retorno da função pra poder imprimir antes do que quando é visa, que somente após retirar o cartão do pinpad que ele me da um retorno entrando no tipocampo 121.

Se alguém puder me dar um help, agradeço!!

 

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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