Suggest Edits

Realizando a autenticação

 

Não há necessidade de criar um objeto capptaGpPlus, toda vez que for fazer uma operação, por favor utilize a IteracaoTef.

Antes de realizar seus pagamentos será necessário autenticar o seu PDV, para isso a classe ClienteCappta disponibiliza o método AutenticarPdv

Parâmetro
Tipo
Descrição

cnpj

string

É o CNPJ da loja que está utilizando o TEF da Cappta, precisa ser equivalente ao que está configurado no CapptaGpPlus

pdv

int

Número de pdv do CNPJ que está utilizando o TEF da Cappta, precisa ser equivalente ao que está configurado no CapptaGpPlus

chaveAutenticacao

string

Chave de autenticação do integrador disponibilizada pela turma de homologação

Quer mais detalhes?

Para detalhamento dos códigos de retorno consulte a tabela Possíveis códigos de retorno.

Para recuperar o CNPJ e PDV do TEF basta clicar com o botão direito do mouse no ícone do CapptaGpPlus no taskbar do windows e selecionar a opção Sobre o Cappta Cartões a tela que será exibida contém as informações necessárias.

A chave de autenticação será fornecida pelo time de homologação assim que o processo de integração for solicitado. Ela deverá ser sempre utilizada para identificar o seu software.

Atenção!

Caso a chave utilizada seja inválida, o CapptaGpPlus não irá autenticar a integração.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            ClienteCappta cappta = new ClienteCappta();

            string cnpj = "00000000000000";
            int pdv = 8;
            string chaveAutenticacao = "2C1CE88C6A0C4FA6BF2D519B1DB31DF4";

            int resultadoAutenticacao = cappta.AutenticarPdv(cnpj, pdv, chaveAutenticacao);
            if (resultadoAutenticacao != 0)
            {
                Console.WriteLine("Não foi possível autenticar com o CapptaGpPlus");
                return;
            }
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB;

var
  cappta : IClienteCappta;
  cnpj : string = '00000000000000';
  pdv : integer = 8;
  chaveAutenticacao : string = '2C1CE88C6A0C4FA6BF2D519B1DB31DF4';
  resultadoAutenticacao : integer;

begin
  cappta := CoClienteCappta.Create;

  resultadoAutenticacao := cappta.AutenticarPdv(cnpj, pdv, chaveAutenticacao);
  if resultadoAutenticacao <> 0 then
  begin
       WriteLn('Não foi possível autenticar com o CapptaGpPlus');
       exit;
  end
Imports Cappta.Gp.Api.Com.Model
Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim cnpj As String = "00000000000000"
        Dim pdv As Integer = 8
        Dim chaveAutenticacao As String = "2C1CE88C6A0C4FA6BF2D519B1DB31DF4"

        Dim resultadoAutenticacao = cappta.AutenticarPdv(cnpj, pdv, chaveAutenticacao)

        If resultadoAutenticacao <> 0 Then

            Console.WriteLine("Não foi possível autenticar com o CapptaGpPlus")

        End If

    End Sub
End Module
private void AutenticarPDV() {
        int resultadoAltenticacao;
        resultadoAltenticacao = cappta.autenticarPdv(cnpj, pdv, chaveAutenticacao);

        switch (resultadoAltenticacao) {
            case 1:
                CriarMensagemErroJanela("Não autorizado. Por favor, realize a autenticação para utilizar o CapptaGpPlus");
                break;
            case 2:
                CriarMensagemErroJanela("O CapptaGpPlus esta sendo inicializado, tente novamente em alguns instantes.");
                break;
            case 3:
                CriarMensagemErroJanela("O formato da requisição recebida pelo CapptaGpPlus é inválido.");
                break;
            case 4:
                CriarMensagemErroJanela("Operação cancelada pelo operador.");
                break;
            case 7:
                CriarMensagemErroJanela("Ocorreu um erro interno no CapptaGpPlus.");
                break;
            case 8:
                CriarMensagemErroJanela("Ocorreu um erro na comunicação entre a CappAPI e o CapptaGpPlus.");
                break;
            case 0:
                TextBoxResultado.setText("Autenticado com sucesso");
                break;
        }
    }
Public Sub AutenticarPDV()
    
  Dim resultadoAutenticacao As Long
    
    resultadoAutenticacao = cappta.AutenticarPDV(CNPJ, NumeroPDV, ChavePDV)
   
    If resultadoAutenticacao = 0 Then
            
        Exit Sub
    End If
    
    MsgBox (MensagensPainel.mensagem(resultadoAutenticacao))
   
End Sub
Suggest Edits

Pagamento

Abaixo serão descritas todas as formas de pagamento disponibilizadas pela CapptAPI

 

Voucher

Para pagamento com voucher deve ser enviado uma requisição de débito.

Suggest Edits

Pagamento Débito / Voucher

 

Para realizar um pagamento débito ou voucher é bem simples, basta informar o valor a ser debitado.

Parâmetros
Tipo
Descrição

valor

double

Valor do pagamento

Quer mais detalhes desse procedimento?

Para detalhamento dos códigos de retorno consulte a tabela possíveis códigos de retorno.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            int resultado = cappta.PagamentoDebito(100);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação");
                return;
            }

            //Agora basta continuar o fluxo de iteração do pagamento
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB;

var
  cappta : IClienteCappta;
  resultado : integer;

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  resultado := cappta.PagamentoDebito(10);
  if resultado <> 0 then
  begin
       WriteLn('Não foi possível iniciar a operação');
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração do pagamento --
end.
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
					
        Dim resultado = cappta.PagamentoDebito(100)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")                
            Return
        End If

    End Sub
End Module
Private Sub ExecutarDebito_Click()
    
    If DeveIniciarMultiCartoes() Then
        IniciarMultiCartoes
    End If
     
    Dim valor As Double
    valor = CDbl(TxtValorPagamentoDebito.Text)
    
     If DeveIniciarMultiCartoes() Then
        IniciarMultiCartoes
    End If
        
    Dim resultado As Long
    resultado = cappta.PagamentoDebito(valor)
    
    If resultado <> 0 Then
        CriarMensagem (MensagensPainel.mensagem(resultado))
        Exit Sub
    End If
    
    processandoPagamento = True
    Call IterarOperacaoTef(cappta)
    
End Sub
private void PagamentoDebitoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonPagamentoDebitoActionPerformed
        if (this.DeveIniciarMultiCartoes()) {
            this.IniciarMulticartoes();
        }

        double valor = Double.parseDouble(jTextFieldValorDebito.getText());
        if(valor <= 0  ){
            CriarMensagemErroJanela("Por favor preencha com o valor");
            return;
        }
        if (this.DeveIniciarMultiCartoes()) {
            this.IniciarMulticartoes();
        }

        cappta.pagamentoDebito(valor);

        processandoPagamento = true;
        IterarOperacaoTef();
    }
Suggest Edits

Tipos de Parcelamento

 
Código
Descrição

1

Parcelamento Administradora - Configuração de parcelamento em que os juros são arcados pelo banco ou administradora, o limite de parcelas e valor mínimo são pré-estabelecidos e a venda não é tratada como parcelada para o lojista sendo assim o valor será depoistado integralmente em sua conta bancária. O cliente irá pagar as prestações com juros que serão revertidos para o banco/administradora do cartão

2

Parcelamento Lojista - É o parcelamento em que a quantidade de parcelas é definida no ato da compra. O limite de quantidade de parcelas e valor mínimo para cada uma pode ser determinado nas configurações do CapptaGpPlus. O lojista irá receber os créditos mensalmente em sua conta e o custo pelo financiamento é definido e arcado pelo próprio estabelecimento

Suggest Edits

Pagamento Crédito

 

O pagamento crédito também é bem simples, porém precisamos de alguns dados a mais para configura-lo, como quantidade de parcelas e a configuração de parcelamento (confira logo abaixo para mais detalhes).

Propriedades
Tipo
Descrição

valor

double

Valor do pagamento

detalhes

IDetalhesCredito

Objeto contendo o detalhamento do pagamento à crédito

Detalhes de pagamento crédito

Propriedade
Obrigatório?
Tipo
Descrição

TransacaoParcelada

Sim. Por padrão sempre é false

bool

Determina se o pagamento será parcelado

TipoParcelamento

Somente se TransacaoParcelada for true

int

Determina a configuração do parcelamento, verifique a tabela Tipos de Parcelamento para consultar os valores possíveis

QuantidadeParcelas

Somente se TransacaoParcelada for true

int

Quantidade de parcelas do pagamento

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            IDetalhesCredito detalhes = new DetalhesCredito
            {
                TransacaoParcelada = true,
                QuantidadeParcelas = 3,
                TipoParcelamento = 1 //Parcelamento Administradora
            };

            int resultado = cappta.PagamentoCredito(10D, detalhes);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação. Código de erro {0}", resultado);
                return;
            }

            //Agora basta continuar o fluxo de iteração do pagamento
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  resultado : integer;
  detalhes : IDetalhesCredito;

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  detalhes := CoDetalhesCredito.Create;  
  detalhes.Set_TransacaoParcelada(true);
  detalhes.Set_QuantidadeParcelas(3);
  detalhes.Set_TipoParcelamento(1); // -- Parcelamento administradora --

  resultado := cappta.PagamentoCredito(10, detalhes);
  if resultado <> 0 then
  begin
       WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração do pagamento --
end.  
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
		
		Dim details As IDetalhesCredito = New DetalhesCredito
        details.QuantidadeParcelas = 3
        details.TipoParcelamento = 1
        details.TransacaoParcelada = true	
		
        Dim resultado =  cliente.PagamentoCredito(100, details)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")
            Return
        End If

    End Sub
End Module
Dim valor As Double
    valor = CDbl(TxtValorPagamentoCredito.Text)
    
    Dim detalhes As New DetalhesCredito
    
    detalhes.TransacaoParcelada = OptionTransacaoParceladaCreditoSim.Value
    detalhes.QuantidadeParcelas = UpDownNumeroParcelasCredito.Value
    detalhes.TipoParcelamento = TipoParcelamentoSelecionado()
    
    Dim resultado As Long
    resultado = cappta.PagamentoCredito(valor, detalhes)
    
    If resultado <> 0 Then
        CriarMensagem (MensagensPainel.mensagem(resultado))
        Exit Sub
    End If
    
    processandoPagamento = True
    Call IterarOperacaoTef(cappta)
    
End Sub
private void ExecutarCreditoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExecutarCreditoActionPerformed
        if (this.DeveIniciarMultiCartoes()) {
            this.IniciarMulticartoes();
        }
        double valor = Double.parseDouble(jTextFieldValorCredito.getText());

        IDetalhesCredito idetalhesCredito = ClassFactory.createDetalhesCredito();
        idetalhesCredito.quantidadeParcelas((int) NumericUpDownQuantidadeParcelasPagamentoCredito.getValue());
        idetalhesCredito.tipoParcelamento(Administrador.getSelectedIndex());
        idetalhesCredito.transacaoParcelada(RadioButtonPagamentoCreditoComParcelas.isSelected());

        if (this.DeveIniciarMultiCartoes()) {
            this.IniciarMulticartoes();
        }

        int resultado = this.cappta.pagamentoCredito(valor, idetalhesCredito);

        if (resultado != 0) {
            this.CriarMensagemErroPainel(resultado);
            return;
        }

        this.processandoPagamento = true;
        this.IterarOperacaoTef();
    }
Suggest Edits

Pagamento Crediário

 

Assim como o pagamento crédito o crediário também necessita de alguns dados a mais para facilitar o seu processamento

Parâmetros
Descrição

valor

Valor do pagamento

detalhes

Objeto contendo o detalhamento do pagamento crediário

Detalhes de pagamento crediário

Propriedade
Obrigatório?
Tipo
Descrição

QuantidadeParcelas

Sim

int

Quantidade de parcelas do pagamento

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            IDetalhesCrediario detalhes = new DetalhesCrediario
            {
                QuantidadeParcelas = 3
            };

            int resultado = cappta.PagamentoCrediario(10D, detalhes);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação. Código de erro {0}", resultado);
                return;
            }

            //Agora basta continuar o fluxo de iteração do pagamento
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  resultado : integer;
  detalhes : IDetalhesCrediario;

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  detalhes := CoDetalhesCrediario.Create;
  detalhes.Set_QuantidadeParcelas(3);

  resultado := cappta.PagamentoCrediario(10, detalhes);
  if resultado <> 0 then
  begin
       WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração do pagamento --
end.      
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
		
		Dim details As IDetalhesCrediario = New DetalhesCrediario
        details.QuantidadeParcelas = 3
       		
        Dim resultado =  cliente.PagamentoCrediario(100, details)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")
            Return
        End If

    End Sub
End Module
private void OnExecutaPagamentoCrediarioClick(object sender, EventArgs e)
{
	double valor = (double)NumericUpDownValorPagamentoCrediario.Value;
	IDetalhesCrediario detalhes = new DetalhesCrediario
	{
		QuantidadeParcelas = (int)NumericUpDownQuantidadeParcelasPagamentoCrediario.Value,
	};

	if (this.DeveIniciarMultiCartoes()) { this.IniciarMultiCartoes(); }

	int resultado = this.cliente.PagamentoCrediario(valor, detalhes);
	if (resultado != 0) { this.CriarMensagemErroPainel(resultado); return; }

	this.processandoPagamento = true;
	this.IterarOperacaoTef();
}
 private void ExecutaPagamentoCrediarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExecutaPagamentoCrediarioActionPerformed
        double valor = (int) NumericUpDownValorPagamentoCrediario.getValue();
        IDetalhesCrediario detalhes = ClassFactory.createDetalhesCrediario();
        detalhes.quantidadeParcelas((int) NumericUpDownQuantidadeParcelasPagamentoCrediario.getValue());

        if (DeveIniciarMultiCartoes()) {
            IniciarMulticartoes();
        }

        int resultado = cappta.pagamentoCrediario(valor, detalhes);
        if (resultado != 0) {
            CriarMensagemErroPainel(resultado);
            return;
        }

        processandoPagamento = true;
        IterarOperacaoTef();
    }//GEN-LAST:event_ExecutaPagamentoCrediarioActionPerformed
Suggest Edits

Configurando sua integração

 

Após realizar a autenticação, é possível configurar sua integração com a CapptAPI e definir algumas regras específicas (confira detalhes nas tabelas abaixo), para isso a classe ClienteCappta disponibiliza o método Configurar.

Parâmetro
Tipo
Descrição

configs

IConfiguracoes

Objeto contendo as opções disponiveis para configurar o CapptaGpPlus

Quer mais detalhes desse procedimento?

Para detalhamento dos códigos de retorno consulte a tabela Possíveis códigos de retorno

Esta é a interface da Cappta no modo integração Visível

Propriedade
Obrigatório?
Tipo
Descrição

ExibirInterface

Não. Por padrão sempre é false

bool

Determina a maneira de integração com a CappAPI, caso seja enviado true, cuidamos de toda a interação com o usuário para você (integração Foreground). Caso seja enviado false, a integração será completamente transparente (Background), ou seja, o CapptaGpPlus irá devolver todos os passos que devem ser executados, entre eles a exibição de mensagens ou a solicitação de alguns dados básicos para dar continuidade aos pagamentos.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/
            IConfiguracoes configs = new Configuracoes
            {
                ExibirInterface = true
            };

            int resultado = cappta.Configurar(configs);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível realizar a configuração");
                return;
            }
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB;

var
  cappta : IClienteCappta;
  resultado : integer;
  configs : IConfiguracoes;

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  configs := CoConfiguracoes.Create;  
  configs.Set_ExibirInterface(true);

  resultado := cappta.Configurar(configs);
  if resultado <> 0 then
  begin
       WriteLn('Não foi possível realizar a configuração');
       exit;
  end;
end.

Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim configs As IConfiguracoes = New Configuracoes
        configs.ExibirInterface = True

        Dim resultado = cappta.Configurar(configs)

        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a configuração")
            Return
        End If

    End Sub
End Module
private void ConfigurarModoIntegracao(boolean exibir) {
        IConfiguracoes configs = ClassFactory.createConfiguracoes();
        configs.exibirInterface(exibir);
        cappta.configurar(configs);
    }
Private Sub ConfigurarModoIntegracao(exibirGp As Boolean)
    
    Dim configs As New Configuracoes
    configs.ExibirInterface = exibirGp
    
    Dim result As Long
    result = cappta.Configurar(configs)
    
    If result <> 0 Then
        CriarMensagem (MensagensPainel.mensagem(result))
    End If
    
End Sub
Suggest Edits

Iterando sobre uma operação de pagamento ou administrativa

 

Após a execução de qualquer uma das operações de pagamento ou administrativa será necessário iniciar o fluxo iteração tef para recuperar os estados do CapptaGpPlus.

É necessário atentar-se ao seguinte detalhe:

Ao receber uma resposta de Operação Aprovada caso seja um pagamento não será possível executar nenhuma outra operação até que se tenha confirmado ou desfeito a atual.

Para mais detalhes sobre as implementações da interface IIteracaoTef que é retornada, consulte a sessão Implementações da interface IIteracaoTef .

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação e iniciar uma operação tef aqui \o/

            do
            {
                if (iteracaoTef is IMensagem)
                {
                    IMensagem mensagem = iteracaoTef as IMensagem;
                    Console.WriteLine(mensagem.Descricao);
                }

                else if(iteracaoTef is IRespostaTransacaoPendente)
                {
                    IRespostaTransacaoPendente transacoesPendentes = iteracaoTef as IRespostaTransacaoPendente;
                    Console.WriteLine(transacoesPendentes.Mensagem);

                    foreach (var transacao in transacoesPendentes.ListaTransacoesPendentes)
                    {
                        Console.WriteLine(transacoesPendentes.NumeroControle);
                        Console.WriteLine(transacoesPendentes.NomeBandeiraCartao);
                        Console.WriteLine(transacoesPendentes.NomeAdquirente);
                        Console.WriteLine(transacoesPendentes.Valor);
                        Console.WriteLine(transacoesPendentes.DataHoraAutorizacao);
                    }

                    // Enviamos o parametro com valor de "1" para confirmar a transação pendente e o parametro acao como 1 para avançar a operação.
                    cappta.EnviarParametro(parametro: "1", acao: 1);
                }

                else if(iteracaoTef is IRequisicaoParametro)
                {
                    IRequisicaoParametro reqParametro = iteracaoTef as IRequisicaoParametro;
                    Console.WriteLine(reqParametro.Mensagem);
                    string parametro = Console.ReadLine();

                    //Continue lendo que daqui a pouco já explicamos esta função ;)
                    cappta.EnviarParametro(parametro, String.IsNullOrWhiteSpace(parametro) ? 1 : 2);
                }

                iteracaoTef = cappta.IterarOperacaoTef();

            } while (PagamentoFinalizado(iteracaoTef) == false);

            //Agora basta tratar o resultado da iteração =D

            //Eiii o/, caso a operação seja um pagamento não esqueça de confirma-lo ou desfaze-lo aqui
        }

        public static bool PagamentoFinalizado(IIteracaoTef iteracaoTef)
        {
            return iteracaoTef is IRespostaOperacaoAprovada
                || iteracaoTef is IRespostaOperacaoRecusada;
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  iteracaoTef : IIteracaoTef;
  tipoIteracao : integer;
  mensagem : IMensagem;
  reqParametro : IRequisicaoParametro;
  transacoesPendentes : IRespostaTransacaoPendente;
  parametro: string;
  acaoRequisicao: integer;
  transacoesPendentesSafeArray: PSafeArray;
  lBound, uBound, contadorTransacoesPendentes: LongInt;
  transacaoPendente: ITransacaoPendente;

begin
  // -- Não esqueça de realizar a autenticação e iniciar uma operação tef aqui \o/ --

  Repeat

    iteracaoTef := cappta.IterarOperacaoTef();
    tipoIteracao := iteracaoTef.Get_TipoIteracao;

    if tipoIteracao is IMensagem then
    begin
       mensagem := (iteracaoTef as IMensagem);
       WriteLn(mensagem.Get_Descricao);
    end;


    if tipoIteracao is IRespostaTransacaoPendente then
    begin
       transacoesPendentes := (iteracaoTef as IRespostaTransacaoPendente);
       WriteLn(transacoesPendentes.Get_Mensagem);

       transacoesPendentesSafeArray := transacoesPendentes.Get_ListaTransacoesPendentes;

       SafeArrayGetLBound(transacoesPendentesSafeArray, 1, lBound);
       SafeArrayGetUBound(transacoesPendentesSafeArray, 1, uBound);

       for Contador := lBound to uBound do
         begin
              SafeArrayGetElement(transacoesPendentesSafeArray, @contador, transacaoPendente);

              WriteLn(transacaoPendente.Get_numeroControle);
              WriteLn(transacaoPendente.Get_NomeBandeiraCartao);
              WriteLn(transacaoPendente.Get_NomeAdquirente);
              WriteLn(transacaoPendente.Get_valor);
              WriteLn(transacaoPendente.Get_DataHoraAutorizacao);
          end;

       // Enviamos o primeiro parametro com valor de "1" para confirmar a transação pendente e o segundo parametro com valor de 1 para avançar a operação.
       cappta.EnviarParametro('1', 1);
    end;



    if tipoIteracao is IRequisicaoParametro then
    begin
       reqParametro := (iteracaoTef as IRequisicaoParametro);
       WriteLn(reqParametro.Get_Mensagem);
       ReadLn(Input, parametro);

       if Length(parametro) = 0 then
       begin
         acaoRequisicao := 2;
         parametro := ' ';
       end
       else begin acaoRequisicao := 1; end;

       // -- Continue lendo que daqui a pouco já explicamos esta função ;) --

       cappta.EnviarParametro(parametro, acaoRequisicao);
    end;

  Until (iteracaoTef.Get_TipoIteracao <> 1) and (iteracaoTef.Get_TipoIteracao <> 2);

  // -- Agora basta tratar o resultado da iteração =D --

  // -- Eiii o/, caso a operação seja um pagamento não esqueça de confirma-lo ou desfaze-lo aqui --
end.
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim iteracaoTef As IIteracaoTef

        Do
            iteracaoTef = cappta.IterarOperacaoTef()

            If TypeOf iteracaoTef Is IMensagem Then
                Dim mensagem As IMensagem = iteracaoTef
                Console.WriteLine(mensagem.Descricao)
            End If

            If TypeOf iteracaoTef Is IRequisicaoParametro Then

                Dim reqParametro As IRequisicaoParametro = iteracaoTef
                Console.WriteLine(reqParametro.Mensagem)

                Dim input = Console.ReadLine()
                Dim parametro As Integer

                If (String.IsNullOrWhiteSpace(input)) Then
                    parametro = 2
                Else
                    parametro = 1
                End If
                cappta.EnviarParametro(input, parametro)
            End If

            If TypeOf iteracaoTef Is IRespostaTransacaoPendente Then

                Dim transacoesPendentes As IRespostaTransacaoPendente = iteracaoTef

                For Each transacao In transacoesPendentes.ListaTransacoesPendentes
                    Console.WriteLine(transacao.NumeroControle)
                    Console.WriteLine(transacao.NomeBandeiraCartao)
                    Console.WriteLine(transacao.NomeAdquirente)
                    Console.WriteLine(transacao.Valor)
                    Console.WriteLine(transacao.DataHoraAutorizacao)

                Next
                'Enviamos o parametro com valor de "1" para confirmar a transação pendente e o parametro acao como 1 para avançar a operação.
                cappta.EnviarParametro("1", 1)

            End If

        Loop While PagamentoFinalizado(iteracaoTef) = False
    End Sub

    Function PagamentoFinalizado(iteracaoTef As IIteracaoTef)

        Return TypeOf iteracaoTef Is IRespostaOperacaoAprovada Or TypeOf iteracaoTef Is IRespostaOperacaoRecusada

    End Function


End Module
Public Sub IterarOperacaoTef(objCappta As ClienteCappta)
 
 If OptionUsarMultiTef.Value Then
    DesabilitarControlesMultiTef
 End If
 DesabilitarBotoes

 Dim iteracaoTef As Cappta_Gp_Api_Com.IIteracaoTef

 Do
 
    Set iteracaoTef = objCappta.IterarOperacaoTef()

    If TypeOf iteracaoTef Is IMensagem Then
        Call ExibirMensagem(iteracaoTef)
        Sleep INTERVALO_MILISEGUNDOS
    End If

    If TypeOf iteracaoTef Is IRequisicaoParametro Then
        Call RequisitarParametros(iteracaoTef, objCappta)
    End If

    If TypeOf iteracaoTef Is IRespostaTransacaoPendente Then
        Call ResolverTransacaoPendente(iteracaoTef, objCappta)
    End If

    If TypeOf iteracaoTef Is IRespostaOperacaoRecusada Then
        Call ExibirDadosOperacaoRecusada(iteracaoTef)
    End If

    If TypeOf iteracaoTef Is IRespostaOperacaoAprovada Then
        Call ExibirDadosOperacaoAprovada(iteracaoTef)
        Call FinalizarPagamento(objCappta)
    End If

  Loop While OperacaoNaoFinalizada(iteracaoTef)
  
  If sessaoMultiTefEmAndamento = False Then
    HabilitarControlesMultiTef
  End If
  HabilitarBotoes
  

End Sub
 private void IterarOperacaoTef() {
        if (this.RadioButtonUsarMultiTef.isSelected()) {
            this.DesabilitarControlesMultiTef();
        }
        this.DesabilitarBotoes();
        IIteracaoTef iteracaoTef = null;

        do {
            iteracaoTef = cappta.iterarOperacaoTef();
            if (iteracaoTef.is(IMensagem.class)) {
                IMensagem iMensagem = iteracaoTef.queryInterface(IMensagem.class);
                ExibirMensagem(iMensagem);
            }

            if (iteracaoTef.is(IRequisicaoParametro.class)) {
                IRequisicaoParametro iRequisicaoParametro = iteracaoTef.queryInterface(IRequisicaoParametro.class);
                RequisitarParametros(iRequisicaoParametro);
            }

            if (iteracaoTef.is(IRespostaTransacaoPendente.class)) {
                IRespostaTransacaoPendente resposta = iteracaoTef.queryInterface(IRespostaTransacaoPendente.class);
                ResolverTransacaoPendente(resposta);
            }
            if (iteracaoTef.is(IRespostaOperacaoRecusada.class)) {
                IRespostaOperacaoRecusada resposta = iteracaoTef.queryInterface(IRespostaOperacaoRecusada.class);
                ExibirDadosOperacaoRecusada(resposta);
            }
            if (iteracaoTef.is(IRespostaOperacaoAprovada.class)) {
                IRespostaOperacaoAprovada resposta = iteracaoTef.queryInterface(IRespostaOperacaoAprovada.class);
                ExibirDadosOperacaoAprovada(resposta);
                FinalizarPagamento();
            }

        } while (OperacaoNaoFinalizada(iteracaoTef));

        if (this.sessaoMultiTefEmAndamento == false) {
            this.HabilitarControlesMultiTef();
        }//true
        HabilitarBotoes();
    }
Suggest Edits

Implementações da interface IIteracaoTef

 

Uma implementação da interface IIteracaoTef será retornada pelo método IterarOperacaoTef, as possibilidades de objetos retornados são:

  • IRespostaOperacaoAprovada
  • IRespostaOperacaoRecusada
  • IRespostaTransacaoPendente
  • IMensagem
  • IRequisicaoParametro
public interface IIteracaoTef
{
    int TipoIteracao { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IIteracaoTef = interface(IDispatch)
    function Get_TipoIteracao : Integer; safecall;
    function Clone:IIteracaoTef;safecall;
    property TipoIteracao:Integer read Get_TipoIteracao;
end;  

    Public Interface IIteracaoTef
        ReadOnly Property TipoIteracao
    End Interface
Suggest Edits

Operação aprovada

 

Atenção

A Adquirente Cielo não retorna nas respostas de transação aprovada o Nsu, sendo assim criamos o NsuTef que tem a mesma função do NSU.

Obs: Apenas para a Cielo, nas demais por favor utilizar o NsuAdquirente

Possui dados da operação aprovada como cupons, controle, adquirente responsável pela autorização, bandeira do cartão, data de autorização, etc.

Propriedade
Tipo
Descrição

TipoIteracao

int

Representa o tipo de iteração de mensagem e possui o valor fixo 1

NsuTef

ulong

Número sequencial único do canal de pagamento

NsuAdquirente

string

Número sequencial único da adquirente

CodigoAutorizacaoAdquirente

string

Código de autorização retornado pela adquirente

CupomCliente

string

Comprovante de pagamento ou estorno do cliente

CupomLojista

string

Comprovante de pagamento ou estorno do estabelecimento

CupomReduzido

string

Comprovante de pagamento ou estorno com tamanho reduzido

NomeAdquirente

string

Nome da adquirente responsável pela aprovação do pagamento ou cancelamento

NomeBandeiraCartao

string

Nome da bandeira do cartão do cliente

NumeroControle

string

Identificador único para pagamentos, é devolvido quando a transação é autorizada mas também pode ser consultado no portal de transações Cappta

DataHoraAutorizacao

DateTime

Contém a data + hora completa da autorização do pagamento ou cancelamento

CodigoBandeiraCartao

int

Código da bandeira do cartão, consulte aqui a Tabela de bandeira de cartões

NumeroCartaoCliente

string

Número do cartão (PAN) utilizado no pagamento, cifrado no seguinte formato: 999999**9999

NumeroAfiliacao

string

Número de afiliação do estabelecimento na rede adquirente. Obs.: Também conhecido como “Número Lógico” ou “Código do Estabelecimento”

QuantidadeParcelas

int

Quantidade de parcelas do pagamento. Para pagamentos na modalidade Débito ou Crédito à vista, terá como valor padrão 1

public interface IRespostaOperacaoAprovada : IIteracaoTef
{
    ulong NsuTef { get; }

    string CodigoAutorizacaoAdquirente { get; }

    string CupomCliente { get; }

    string CupomLojista { get; }

    string CupomReduzido { get; }

    string NomeAdquirente { get; }

    string NomeBandeiraCartao { get; }

    string NsuAdquirente { get; }

    string NumeroControle { get; }

    DateTime DataHoraAutorizacao { get; }

    int CodigoBandeiraCartao { get; }

    string NumeroCartaoCliente { get; }

    string NumeroAfiliacao { get; }

    int QuantidadeParcelas { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IRespostaOperacaoAprovada = interface(IDispatch)
    function Get_CodigoAutorizacaoAdquirente : WideString; safecall;
    function Get_CupomCliente : WideString; safecall;
    function Get_CupomLojista : WideString; safecall;
    function Get_CupomReduzido : WideString; safecall;
    function Get_DataHoraAutorizacao : TDateTime; safecall;
    function Get_NomeAdquirente : WideString; safecall;
    function Get_NomeBandeiraCartao : WideString; safecall;
    function Get_NsuAdquirente : WideString; safecall;
    function Get_NsuTef : QWord; safecall;
    function Get_numeroControle : WideString; safecall;
    function Get_CodigoBandeiraCartao : Integer; safecall;
    function Get_NumeroCartaoCliente : WideString; safecall;
    function Get_NumeroAfiliacao : WideString; safecall;
    function Get_QuantidadeParcelas : Integer; safecall;
    property CodigoAutorizacaoAdquirente:WideString read Get_CodigoAutorizacaoAdquirente;
    property CupomCliente:WideString read Get_CupomCliente;
    property CupomLojista:WideString read Get_CupomLojista;
    property CupomReduzido:WideString read Get_CupomReduzido;
    property DataHoraAutorizacao:TDateTime read Get_DataHoraAutorizacao;
    property NomeAdquirente:WideString read Get_NomeAdquirente;
    property NomeBandeiraCartao:WideString read Get_NomeBandeiraCartao;
    property NsuAdquirente:WideString read Get_NsuAdquirente;
    property NsuTef:QWord read Get_NsuTef;
    property numeroControle:WideString read Get_numeroControle;
    property CodigoBandeiraCartao:Integer read Get_CodigoBandeiraCartao;
    property NumeroCartaoCliente:WideString read Get_NumeroCartaoCliente;
    property NumeroAfiliacao:WideString read Get_NumeroAfiliacao;
    property QuantidadeParcelas:Integer read Get_QuantidadeParcelas;
end;
Private ReadOnly Property NsuTef() As ULong
        Get
            Return NsuTef
        End Get
End Property
  
Private ReadOnly Property CodigoAutorizacaoAdquirente() As String
        Get
            Return CodigoAutorizacaoAdquirente
        End Get
End Property
  
Private ReadOnly Property CupomCliente() As String
        Get
            Return CupomCliente
        End Get
End Property
  
 Private ReadOnly Property CupomLojista() As String
        Get
            Return CupomLojista
        End Get
 End Property
 
 Private ReadOnly Property CupomReduzido() As String
        Get
            Return CupomReduzid
        End Get
 End Property
  
Private ReadOnly Property NomeAdquirente() As String
        Get
            Return NomeAdquirente
        End Get
 End Property  
 
   Private ReadOnly Property NomeBandeiraCartao() As String
        Get
            Return NomeBandeiraCartao
        End Get
   End Property
  
  Private ReadOnly Property NsuAdquirente() As String
        Get
            Return NsuAdquirente
        End Get
    End Property
  
  Private ReadOnly Property NsuAdquirente() As String
        Get
            Return NsuAdquirente
        End Get
    End Property
  
Private ReadOnly Property DataHoraAutorizacao() As  DateTime
        Get
            Return DataHoraAutorizacao
        End Get
    End Property
  
Private ReadOnly Property CodigoBandeiraCartao() As Integer
        Get
            Return CodigoBandeiraCartao
        End Get
    End Property

  Private ReadOnly Property NumeroCartaoCliente() As String
        Get
            Return NumeroCartaoCliente
        End Get
    End Property
  
   Private ReadOnly Property NumeroAfiliacao() As String
        Get
            Return NumeroAfiliacao
        End Get
    End Property
  
  Private ReadOnly Property QuantidadeParcelas() As String
        Get
            Return QuantidadeParcelas
        End Get
    End Property
		
//Apenas ilustrativo

public String getNsuTef() {
        return NsuTef;
    }

    public void setNsuTef(String NsuTef) {
        this.NsuTef = NsuTef;
    }

    public String getCodigoAutorizacaoAdquirente() {
        return CodigoAutorizacaoAdquirente;
    }

    public void setCodigoAutorizacaoAdquirente(String CodigoAutorizacaoAdquirente) {
        this.CodigoAutorizacaoAdquirente = CodigoAutorizacaoAdquirente;
    }

    public String getCupomCliente() {
        return CupomCliente;
    }

    public void setCupomCliente(String CupomCliente) {
        this.CupomCliente = CupomCliente;
    }

    public String getCupomLojista() {
        return CupomLojista;
    }

    public void setCupomLojista(String CupomLojista) {
        this.CupomLojista = CupomLojista;
    }

    public String getCupomReduzido() {
        return CupomReduzido;
    }

    public void setCupomReduzido(String CupomReduzido) {
        this.CupomReduzido = CupomReduzido;
    }

    public String getNomeAdquirente() {
        return NomeAdquirente;
    }

    public void setNomeAdquirente(String NomeAdquirente) {
        this.NomeAdquirente = NomeAdquirente;
    }

    public String getNomeBandeiraCartao() {
        return NomeBandeiraCartao;
    }

    public void setNomeBandeiraCartao(String NomeBandeiraCartao) {
        this.NomeBandeiraCartao = NomeBandeiraCartao;
    }

    public String getNsuAdquirente() {
        return NsuAdquirente;
    }

    public void setNsuAdquirente(String NsuAdquirente) {
        this.NsuAdquirente = NsuAdquirente;
    }

    public String getNumeroControle() {
        return NumeroControle;
    }

    public void setNumeroControle(String NumeroControle) {
        this.NumeroControle = NumeroControle;
    }

    public Date getDataHoraAutorizacao() {
        return DataHoraAutorizacao;
    }

    public void setDataHoraAutorizacao(Date DataHoraAutorizacao) {
        this.DataHoraAutorizacao = DataHoraAutorizacao;
    }

    public int getCodigoBandeiraCartao() {
        return CodigoBandeiraCartao;
    }

    public void setCodigoBandeiraCartao(int CodigoBandeiraCartao) {
        this.CodigoBandeiraCartao = CodigoBandeiraCartao;
    }

    public String getNumeroCartaoCliente() {
        return NumeroCartaoCliente;
    }

    public void setNumeroCartaoCliente(String NumeroCartaoCliente) {
        this.NumeroCartaoCliente = NumeroCartaoCliente;
    }

    public String getNumeroAfiliacao() {
        return NumeroAfiliacao;
    }

    public void setNumeroAfiliacao(String NumeroAfiliacao) {
        this.NumeroAfiliacao = NumeroAfiliacao;
    }

    public int getQuantidadeParcelas() {
        return QuantidadeParcelas;
    }

    public void setQuantidadeParcelas(int QuantidadeParcelas) {
        this.QuantidadeParcelas = QuantidadeParcelas;
    }
     
Suggest Edits

Operação negada

 

Possui o motivo pelo qual a operação foi negada e um código respectivo (para mais detalhes consultar a tabela Códigos de motivo para operações negadas).

Propriedade
Tipo
Descrição

CodigoMotivo

int

Código que representa o motivo pelo qual a operação foi negada, as possibilidades deste código podem ser consultadas na tabela [Códigos de motivo para operações negadas]

TipoIteracao

int

Representa o tipo de iteração de mensagem e possui o valor fixo 2

Motivo

int

Descreve o motivo pelo qual a operação foi negada

public interface IRespostaOperacaoRecusada : IIteracaoTef
{
  int CodigoMotivo { get; }

  string Motivo { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IRespostaOperacaoRecusada = interface(IDispatch)
    function Get_CodigoMotivo : Integer; safecall;
    function Get_Motivo : WideString; safecall;
    property CodigoMotivo:Integer read Get_CodigoMotivo;
    property Motivo:WideString read Get_Motivo;
end;
'Esse código é apenas ilustrativo: Para mais exemplos consulte nosso exemplo de código (Sample). Entre em contato com a equipe
Private ReadOnly Property CodigoMotivo() As Integer
        Get
            Return CodigoMotivo
        End Get
End Property
 
Private ReadOnly Property Motivo() As String
        Get
            Return Motivo
        End Get
End Property
  
Suggest Edits

Notificação de Transações Pendentes

 

Caso receba este tipo de resposta significa que uma ou mais transações (para o caso de uma sessão multi-cartões) ficaram pendentes, ou seja ao serem aprovadas não foram nem confirmadas e nem desfeitas. Ao receber esta notificação é necessário o uso da função EnviarParametro com o valor 1 para confirmar as transações ou 0 para desfazê-las (consulte Enviando parâmetros adicionais para a CappAPI) Em caso de dúvidas sobre o tratamento de pendencias consulte a sessão Confirmação e Desfazimento

Propriedade
Tipo
Descrição

Mensagem

string

É a mensagem enviada pelo CapptaGpPlus para ser exibida para o operador (opcionalmente)

ListaTransacoesPendentes

array de objeto do tipo ITransacaoPendente

Lista das transações que ficaram pendente

TipoIteracao

int

Representa o tipo de iteração de mensagem e possui o valor fixo 8

Detalhes de transação Pendente

Possui dados da transação que ficou pendente, com essas informações você pode (caso possua essa necessidade) conciliar o status da transação no seu software também, evitando inconsistência entre ele e o status da transação no CapptaGpPlus.

Propriedade
Tipo
Descrição

NumeroControle

string

Identificador única para pagamentos, é devolvido quando a transação é autorizada mas também pode ser consultado no portal de transações Cappta

NomeAdquirente

string

Nome da adquirente responsável pela aprovação do pagamento ou cancelamento

NomeBandeiraCartao

string

Nome da bandeira do cartão do cliente

DataHoraAutorizacao

DateTime

Contém a data+ hora completa da autorização do pagamento ou cancelamento

Valor

double

Valor da transação

public interface IRespostaTransacaoPendente : IIteracaoTef
{
    ITransacaoPendente[] ListaTransacoesPendentes { get; set; }

    String Mensagem { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IRespostaTransacaoPendente = interface(IDispatch)
   function Get_ListaTransacoesPendentes : PSafeArray; safecall;
   procedure Set_ListaTransacoesPendentes(const pRetVal:PSafeArray); safecall;
   function Get_Mensagem : WideString; safecall;
   property ListaTransacoesPendentes:PSafeArray read Get_ListaTransacoesPendentes write Set_ListaTransacoesPendentes;
   property Mensagem:WideString read Get_Mensagem;
end;
'Esse código é apenas ilustrativo: Para mais exemplos consulte nosso exemplo de código (Sample). Entre em contato com a equipe
  Dim ListaTransacoesPendentes() As ITransacaoPendente
  Public ReadOnly Property Mensagem() As String
        Get
            Return Mensagem
        End Get
    End Property
public interface ITransacaoPendente
{
    string NumeroControle { get; }

    string NomeAdquirente { get; }

    string NomeBandeiraCartao { get; }

    DateTime DataHoraAutorizacao { get; }

    double Valor { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IMensagem = interface(IDispatch)
   function Get_numeroControle : WideString; safecall;
   function Get_NomeAdquirente : WideString; safecall;
   function Get_NomeBandeiraCartao : WideString; safecall;
   function Get_DataHoraAutorizacao : TDateTime; safecall;
   function Get_valor : Double; safecall;
   property numeroControle:WideString read Get_numeroControle;
   property NomeAdquirente:WideString read Get_NomeAdquirente;
   property NomeBandeiraCartao:WideString read Get_NomeBandeiraCartao;
   property DataHoraAutorizacao:TDateTime read Get_DataHoraAutorizacao;
   property valor:Double read Get_valor;
end;
 

Contém uma mensagem do TEF para ser exibida pelo software integrador. Por exemplo, ao iniciar uma operação de pagamento independente da modalidade será necessário inserir o cartão no pinpad neste momento será devolvida a mensagem “Por favor, insira ou passe o cartão”.

Propriedade
Tipo
Descrição

Descricao

string

É a mensagem enviada pelo CapptaGpPlus para ser exibida para o operador

TipoIteracao

int

Representa o tipo de iteração de mensagem e possui o valor fixo 3

public interface IMensagem : IIteracaoTef
{
    string Descricao { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IMensagem = interface(IDispatch)
    function Get_Descricao : WideString; safecall;  
    property Descricao:WideString read Get_Descricao;
end;
  'Esse código é apenas ilustrativo: Para mais exemplos consulte nosso exemplo de código (Sample). Entre em contato com a equipe
  
  Public ReadOnly Property Descricao() As String
        Get
            Return Descricao
        End Get
    End Property
Suggest Edits

Requisição de parâmetro

 

Retornada quando o CapptaGpPlus necessita de alguma informação para continuar o fluxo da operação TEF.

Propriedade
Tipo
Descrição

TipoIteracao

int

Representa o tipo de iteração de mensagem e possui o valor fixo 4

Mensagem

string

É a mensagem enviada pelo CapptaGpPlus para ser exibida para o operador, ela contém a solicitação do parâmetro necessário para prosseguir com a operação TEF

public interface IRequisicaoParametro : IIteracaoTef
{
    string Mensagem { get; }
}
// -- Esse código é apenas ilustrativo: a interface será implementada com a importação da API. --

IRequisicaoParametro = interface(IDispatch)
   function Get_Mensagem : WideString; safecall;
   property Mensagem:WideString read Get_Mensagem;
end;
'Esse código é apenas ilustrativo: Para mais exemplos consulte nosso exemplo de código (Sample). Entre em contato com a equipe
Public ReadOnly Property Mensagem() As String
        Get
            Return Mensagem
        End Get
    End Property
Suggest Edits

Enviando parâmetros adicionais para a CapptAPI

 

Atenção!

O código abaixo é apenas ilustrativo, não utilize!

Caso o CapptaGpPlus esteja configurado para executar em modo Background, durante o fluxo de iteração do tef a função IterarOperacaoTef poderá retornar uma IRequisiscaoParametro.

Neste caso será necessário que o usuário final forneça o valor solicitado que estará descrito na propriedade Mensagem do objeto recebido.

Parâmetros
Tipo
Descrição

parametro

string

Valor informado pelo usuário final

acao

int

Existem apenas duas possibilidades, sendo elas 1 para avançar e 2 para cancelar a operação. Caso receba uma ação de cancelamento o valor do primeiro parâmetro será ignorado

Quer mais detalhes desse procedimento?

Para detalhamento dos códigos de retorno consulte a tabela Possíveis códigos de retorno

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação e iniciar uma operação tef aqui \o/

            iteracaoTef = cappta.IterarOperacaoTef();
            if(iteracaoTef is IRequisicaoParametro == false)
            {
                Console.WriteLine("Não interessa nesse exemplo =p");
                return;
            }

            IRequisicaoParametro reqParametro = iteracaoTef as IRequisicaoParametro;
            Console.WriteLine(reqParametro.Mensagem);
            string parametro = Console.ReadLine();

            //Sendo 1 para "Avançar" e 2 para "Cancelar"
            cappta.EnviarParametro(parametro, String.IsNullOrWhiteSpace(parametro) ? 1 : 2);
        }
    }
}
Suggest Edits

Confirmando ou desfazendo um pagamento

 

Sempre que retornamos Operação Aprovada, ficamos aguardando a confirmação por parte da sua automação para finalizar a operação de pagamento

Caso o cupom fiscal tenha sido impresso corretamente e deseje confirmar o pagamento utilize a função ConfirmarPagamentos(), caso contrário se houver algum problema na impressão do cupom fiscal e desejar desfazer e cancelar o pagamento utilize a função DesfazerPagamentos().

Reforçamos que para as operações administrativas como reimpressão e cancelamento não será necessário finalizar a operação ao receber uma resposta de Operação Aprovada no fluxo de iteração.

Obs: Esse valor pode ser alterado nas configurações da aplicação, para isso será necessário entrar em contato com o suporte da Cappta.

Quer mais detalhes desse procedimento?

Para detalhamento dos códigos de retorno consulte a tabela Possíveis códigos de retorno

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça da autenticação e do código para processar o pagamento aqui \o/

            IRespostaOperacaoAprovada pagamentoAprovado = iteracaoTef as IRespostaOperacaoAprovada;

            Console.WriteLine("Pagamento Aprovado =D");
            Console.WriteLine(pagamentoAprovado.CupomCliente);
            Console.WriteLine(pagamentoAprovado.CupomLojista);

            Console.WriteLine("Deseja confirmar este pagamento? (S/N)");
            ConsoleKeyInfo keyInfo = Console.ReadKey();

            int resultadoFinalizacao = keyInfo.Key == ConsoleKey.S
                ? cappta.ConfirmarPagamentos()
                : cappta.DesfazerPagamentos();

            if (resultadoFinalizacao != 0)
            {
                Console.WriteLine("Não foi possível finalizar o pagamento. Código de erro {0}", resultado);
                return;
            }
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  iteracaoTef : IIteracaoTef;
  tipoIteracao : integer;
  resultado : integer;
  pagamentoAprovado : IRespostaOperacaoAprovada;
  keyInfo : string;

begin
  // -- Não esqueça de realizar a autenticação e iniciar uma operação tef aqui \o/ --

  iteracaoTef := cappta.IterarOperacaoTef();
  tipoIteracao := iteracaoTef.Get_TipoIteracao;

  if tipoIteracao <> 1 then
  begin
      WriteLn('Não interessa nesse exemplo =p');
      exit;
  end
  else
  begin
    pagamentoAprovado := (iteracaoTef as IRespostaOperacaoAprovada);

    WriteLn('Pagamento Aprovado =D');
    WriteLn(pagamentoAprovado.Get_CupomCliente);
    WriteLn(pagamentoAprovado.Get_CupomLojista);

    WriteLn('Deseja confirmar este pagamento? (S/N)');
    ReadLn(Input, keyInfo);

    if UpperCase(keyInfo) = 'S' then
    begin
        resultado := cappta.ConfirmarPagamentos;
    end
    else
    begin
        resultado := cappta.DesfazerPagamentos;
    end;

    if resultado <> 0 then
    begin
         WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
         exit;
    end;
  end;
end.
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim iteracaoTef As IIteracaoTef

        Dim pagamentoAprovado As IRespostaOperacaoAprovada = iteracaoTef

        Console.WriteLine("Pagamento Aprovado =D")
        Console.WriteLine(pagamentoAprovado.CupomCliente)
        Console.WriteLine(pagamentoAprovado.CupomLojista)

        Console.WriteLine("Deseja confirmar este pagamento? (S/N)")
        Dim keyInfo As ConsoleKeyInfo = Console.ReadKey()

        Dim resultadoFinalizacao As Integer
        If resultadoFinalizacao = keyInfo.Key = ConsoleKey.S Then
            cappta.ConfirmarPagamentos()

        Else
            cappta.DesfazerPagamentos()
        End If

        If resultadoFinalizacao <> 0 Then
            Console.WriteLine("Não foi possível finalizar o pagamento")
        End If

    End Sub

End Module
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim iteracaoTef As IIteracaoTef

        Dim pagamentoAprovado As IRespostaOperacaoAprovada = iteracaoTef

        Console.WriteLine("Pagamento Aprovado =D")
        Console.WriteLine(pagamentoAprovado.CupomCliente)
        Console.WriteLine(pagamentoAprovado.CupomLojista)

        Console.WriteLine("Deseja confirmar este pagamento? (S/N)")
        Dim keyInfo As ConsoleKeyInfo = Console.ReadKey()

        Dim resultadoFinalizacao As Integer
        If resultadoFinalizacao = keyInfo.Key = ConsoleKey.S Then
            cappta.ConfirmarPagamentos()

        Else
            cappta.DesfazerPagamentos()
        End If

        If resultadoFinalizacao <> 0 Then
            Console.WriteLine("Não foi possível finalizar o pagamento")
        End If

    End Sub

End Module
private void FinalizarPagamento() 
  {
        if (processandoPagamento = false) {
            return;
        }
        if (sessaoMultiTefEmAndamento) {
            quantidadeCartoes--;
            if (quantidadeCartoes > 0) {
                return;
            }
        }
        String mensagem = GerarMensagemTransacaoAprovada();

        this.processandoPagamento = false;
        this.sessaoMultiTefEmAndamento = false;

        int dialogButton = JOptionPane.YES_NO_OPTION;
        int dialogResult = JOptionPane.showConfirmDialog(null, mensagem + "?", "", dialogButton);
        if (dialogResult == JOptionPane.YES_OPTION) {
            cappta.confirmarPagamentos();

        } else {
            cappta.desfazerPagamentos();
        }
    }
Suggest Edits

Reimpressão

 

Existem dois tipos de reimpressão de cupons, aquele que reimprime o cupom do último pagamento ou cancelamento e também outra versão que permite especificar qual é o pagamento a partir do número de controle

Suggest Edits

Tipos de Vias para Reimpressão

 
Código
Descrição

1

Todas as vias, tanto a lojista como a do cliente

2

Somente a via do cliente

3

Somente a via do lojista

Suggest Edits

Reimpressão do Último Cupom

 

Para reimprimir o último cupom utilize a função abaixo:

Parâmetros
Descrição

tipoVia

Determina qual a via do cupom que deve ser reimpressa, verifique a tabela Tipos de Vias para Reimpressão para consultar os valores possíves

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            int tipoVia = 1; //Ambas as vias (Loja e cliente)

            int resultado = cappta.ReimprimirUltimoCupom(tipoVia);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação. Código de erro {0}", resultado);
                return;
            }

            //Agora basta continuar o fluxo de iteração da reimpressão
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  resultado : integer;
  tipoVia : integer = 1; // -- Ambas as vias (Loja e cliente)

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  resultado := cappta.ReimprimirUltimoCupom(tipoVia);
  if resultado <> 0 then
  begin
       WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração da reimpressão --
end.
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
		Dim tipoVia As integer
		
        Dim resultado =  cappta.ReimprimirUltimoCupom(tipoVia)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")
            Return
        End If

    End Sub
End Module
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
		Dim tipoVia As integer
		
        Dim resultado =  cappta.ReimprimirUltimoCupom(tipoVia)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")
            Return
        End If

    End Sub
End Module
package ProgramApi;

import Com.Api.Java.ClassFactory;
import Com.Api.Java.IClienteCappta;

public class Program {

    public static void main(String[] args) {
        IClienteCappta clienteCappta = ClassFactory.createClienteCappta();
        
        int tipoVia = 1;//Ambas as vias (Loja e cliente)
      
        int resultado = clienteCappta.reimprimirUltimoCupom(tipoVia);
        if (resultado != 0){
            System.out.println("Não foi possível iniciar a operação. Código de erro" + resultado);
          
        }
    }    
}
Suggest Edits

Reimpressão de um Cupom Específico

 

Do contrário caso queira reimprimir um cupom especifico utilize a seguinte função:

Parâmetros
Descrição

numeroControle

Identificador única para pagamentos, é devolvido quando a transação é autorizada mas também pode ser consultado no portal de transações Cappta

tipoVia

Determina qual a via do cupom que deve ser reimpressa, verifique a tabela Tipos de Vias para Reimpressão para consultar os valores possíveis

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            int tipoVia = 1; //Ambas as vias (Loja e cliente)

            int resultado = cappta.ReimprimirCupom("000000000", tipoVia);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação. Código de erro {0}", resultado);
                return;
            }

            //Agora basta continuar o fluxo de iteração da reimpressão
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  resultado : integer;
  tipoVia : integer = 1; // -- Ambas as vias (Loja e cliente)

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  resultado := cappta.ReimprimirUltimoCupom('000000000', tipoVia);
  if resultado <> 0 then
  begin
       WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração da reimpressão --
end.
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
  
		Dim tipoVia As integer
		
        Dim resultado =  cappta.ReimprimirCupom("000000000", tipoVia)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")
            Return
        End If

    End Sub
End Module
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        'Não esqueça de realizar a autenticação aqui \o/
  
		Dim tipoVia As integer
		
        Dim resultado =  cappta.ReimprimirCupom("000000000", tipoVia)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível realizar a operação.")
            Return
        End If

    End Sub
End Module
package ProgramApi;

import Com.Api.Java.ClassFactory;
import Com.Api.Java.IClienteCappta;

public class Program {
  
    public static void main(String[] args) {
        IClienteCappta clienteCappta = ClassFactory.createClienteCappta();
        
        int tipoVia = 1;//Ambas as vias (Loja e cliente)
      
        int resultado = clienteCappta.reimprimirCupom("000000000",tipoVia);
        if (resultado != 0){
            System.out.println("Não foi possível iniciar a operação. Código de erro" + resultado);         
            return;
          
        }
    }   
}
Suggest Edits

Cancelamento de pagamentos

 

Somente será possível cancelar pagamentos que já foram confirmados dentro do mesmo dia ou seja não será possível cancelar pagamentos de dias anteriores.

Parâmetros
Descrição

senhaAdministrativa

Senha solicitada no CapptaGpPlus necessária para liberar o acesso à cancelamentos de pagamentos

numeroControle

Identificador única para pagamentos, é devolvido quando a transação é autorizada mas também pode ser consultado no portal de transações Cappta

Quer mais detalhes desse procedimento?

Para detalhamento dos códigos de retorno consulte a tabela Possíveis códigos de retorno

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            int resultado = cappta.CancelarPagamento("senha", "000000000");
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação. Código de erro {0}", resultado);
                return;
            }

            //Agora basta continuar o fluxo de iteração do cancelamento
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  resultado : integer;

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  resultado := cappta.CancelarPagamento('senha', '000000000');
  if resultado <> 0 then
  begin
       WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração do cancelamento --
end.
Imports Cappta.Gp.Api.Com

Module Module1

    Sub Main()
        'Não esqueça de realizar a autenticação aqui \o/

        Dim cappta As ClienteCappta = New ClienteCappta()

        Dim resultado = cappta.CancelarPagamento("senha", "000000000")
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível iniciar a operação. Código de erro", resultado)
            Return
        End If

        'Agora basta continuar o fluxo de iteração da reimpressão
    End Sub
End Module
Imports Cappta.Gp.Api.Com

Module Module1

    Sub Main()
        'Não esqueça de realizar a autenticação aqui \o/

        Dim cappta As ClienteCappta = New ClienteCappta()

        Dim resultado = cappta.CancelarPagamento("senha", "000000000")
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível iniciar a operação. Código de erro", resultado)
            Return
        End If

        'Agora basta continuar o fluxo de iteração da reimpressão
    End Sub
End Module
ackage ProgramApi;

import Com.Api.Java.ClassFactory;
import Com.Api.Java.IClienteCappta;

public class Program {
  
    public static void main(String[] args) {
        IClienteCappta clienteCappta = ClassFactory.createClienteCappta();
        
        int tipoVia = 1;//Ambas as vias (Loja e cliente)
      
        int resultado = clienteCappta.cancelarPagamento("senha","000000000");
        if (resultado != 0){
            System.out.println("Não foi possível iniciar a operação. Código de erro" + resultado);         
            return;
          
        }
    }   
}
Suggest Edits

Inicializando uma sessão multi-cartões

 

Existe um limite de no máximo 9 cartões para uma sessão.

Dentro de uma sessão multi-cartões o timeout para confirmação ou desfazimento do CapptaGpPlus somente será ativado após a aprovação de todos os pagamentos.

Multi-cartões Cappta

O multi-cartões da Cappta é um pouco diferente do mercado. Desenvolvemos ela em busca de facilitar a vida do varejista. Ou seja, caso ocorra algum erro durante o pagamento multi-cartões o varejista não vai precisar cancelar as transações uma a uma, com um simples comando de cancelamento por meio da sua automação, ele poderá cancelar todas as transações dentro da sessão Multi-cartões.

Uma sessão multi-cartões torna possível que sejam autorizados uma quantidade de pagamentos equivalente ao que foi informado no parâmetro quantidadePagamentos sem a necessidade de finaliza-los ao serem autorizados, porém ao executar uma função de finalização (confirmação ou desfazimento) todos os pagamentos serão afetados. Ou seja, ao confirmar, confirma todos e ao desfazer, desfazer e cancela todos os pagamentos. A sessão multi cartões é representada pelo fluxograma ao lado:

Ao final da autorização de todos os pagamentos solicitados a regra de finalização permanece assim como no fluxo de um pagamento simples, ou seja, não será possível executar novos pagamentos, cancelamentos ou reimpressões até que se tenha finalizado todos os pagamentos pendentes.

Dentro de uma sessão não será possível realizar cancelamentos e nem reimpressões, para isso será necessário desfazer ou confirmar os pagamentos anteriores.

Para finalizar uma sessão multi cartões antes que se tenha aprovado a quantidade de pagamentos informada, basta confirmar (ConfirmarPagamentos) ou desfazer (DesfazerPagamentos) os pagamentos pendentes.

Além disso durante o ciclo de pagamentos caso receba uma resposta de operação recusada a sessão multi cartões será cancelada automaticamente.

Parâmetros
Descrição

quantidadePagamentos

Número de pagamentos dentro da sessão multi cartões

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/

            int resultado = cappta.IniciarMultiCartoes(3);
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação. Código de erro {0}", resultado);
                return;
            }

            //Agora basta processar seus pagamentos
        }
    }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  cappta : IClienteCappta;
  resultado : integer;

begin
  // -- Não esqueça de realizar a autenticação aqui \o/ --

  resultado := cappta.IniciarMultiCartoes(3);

  if resultado <> 0 then
  begin
       WriteLn(Format('Não foi possível iniciar a operação. Código de erro %d', [resultado]));
       exit;
  end;

  // -- Agora basta processar seus pagamentos --
end.
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim resultado = cappta.IniciarMultiCartoes(3)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível iniciar a operação.")
        End If

    End Sub

End Module
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()

        Dim resultado = cappta.IniciarMultiCartoes(3)
        If resultado <> 0 Then
            Console.WriteLine("Não foi possível iniciar a operação.")
        End If

    End Sub

End Module
package ProgramApi;

import Com.Api.Java.ClassFactory;
import Com.Api.Java.IClienteCappta;

public class Program {
  
    public static void main(String[] args) {
        IClienteCappta clienteCappta = ClassFactory.createClienteCappta();
           
        int resultado = clienteCappta.iniciarMultiCartoes(3);
        if (resultado != 0){
            System.out.println("Não foi possível iniciar a operação. Código de erro" + resultado);         
            return;
          
        }
    }   
}
Suggest Edits

Solicitando informações pelo Pinpad

 

Utilizando este método, é possível solicitar informações a serem digitadas no pinpad. O método funciona de forma síncrona. Este método é chamado fora do loop de IteraçãoTef. As opções consistem em : CPF, telefone/celular e senha.

Tipos de informação

Tipos
Valor
Descrição

Cpf

1

Representa um número do documento CPF, que contem 11 dígitos.

Telefone/Celular

2

Representa um número de telefone ou celular, contendo 10 ou 11 dígitos. DDD + Número, exemplo : (00) 91234-1234 ou (00) 1234-1234

Senha

3

Representa uma senha numérica de 4 a 12 dígitos.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
  class Program
  {
    static void Main(string[] args)
    {
      //Não esqueça de realizar a autenticação aqui \o/

      int tipoInformacao = 1; //tipo documento CPF

      IRequisicaoInformacaoPinpad infoPinpad = new RequisicaoInformacaoPinpad
      {
        TipoInformacaoPinpad = tipoInformacao
      };

      String resultado = cappta.SolicitarInformacoesPinpad(infoPinpad);

      Console.WriteLine(resultado);
    }
  }
}
program cappapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB, SysUtils;

var
  tipoInformacaoPinpad: integer;
  requisicaoPinpad: RequisicaoInformacaoPinpad;
  resultado: string;

begin

  // -- Não esqueça de realizar a autenticação aqui \o/ --

  tipoInformacao := 1; // -- Tipo documento CPF --

  requisicaoPinpad := CoRequisicaoInformacaoPinpad.Create();
  requisicaoPinpad.Set_TipoInformacaoPinpad(tipoInformacao);

  resultado := cappta.SolicitarInformacoesPinpad(requisicaoPinpad);

  ShowMessage(resultado);

end;
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()
        Dim tipoInformacao = 1

        Dim infoPinpad As IRequisicaoInformacaoPinpad = New RequisicaoInformacaoPinpad()
        infoPinpad.TipoInformacaoPinpad = tipoInformacao

        Dim resultado = cappta.SolicitarInformacoesPinpad(infoPinpad)

        Console.WriteLine(resultado)

    End Sub

End Module
Imports Cappta.Gp.Api.Com
Imports Cappta.Gp.Api.Com.Model

Module Module1
    Sub Main()

        Dim cappta As New ClienteCappta()
        Dim tipoInformacao = 1

        Dim infoPinpad As IRequisicaoInformacaoPinpad = New RequisicaoInformacaoPinpad()
        infoPinpad.TipoInformacaoPinpad = tipoInformacao

        Dim resultado = cappta.SolicitarInformacoesPinpad(infoPinpad)

        Console.WriteLine(resultado)

    End Sub

End Module
private void ButtonSolicitarInformacaoPinpadActionPerformed(java.awt.event.ActionEvent evt) {                                                                

        int tipoDeEntrada = ComboBoxTipoInformacaoPinpad.getSelectedIndex();
        if (tipoDeEntrada == 0) {
            CriarMensagemErroJanela("Porfavor escolha uma opção válida");
            return;
        }

        IRequisicaoInformacaoPinpad iRequisicaoInformacaoPinpad = ClassFactory.createRequisicaoInformacaoPinpad();
        iRequisicaoInformacaoPinpad.tipoInformacaoPinpad(tipoDeEntrada);

        String informacaoPinpad = cappta.solicitarInformacoesPinpad(iRequisicaoInformacaoPinpad);
        AtualizarResultado(informacaoPinpad);
    }  
Suggest Edits

Possíveis códigos de retorno

 
Possíveis códigos de retorno
Descrição

0

Sucesso

1

Não autenticado/Alguma das informações fornecidas para autenticação não é válida

2

CapptaGpPlus está sendo inicializado

7

Erro interno no CapptaGpPlus

8

Erro na comunicação entre a CappAPI e o CapptaGpPlus

9

Ocorre quando qualquer operação é realizada sem que se tenha finalizado o último pagamento

10

Uma reimpressão ou cancelamento foi executada dentro de uma sessão multi-cartões

14

Valor digitado no pinpad é inválido.

Suggest Edits

Códigos de motivo para operações negadas

 

1

Não autenticado/Alguma das informações fornecidas para autenticação não é válida

2

CapptaGpPlus está sendo inicializado

3

Formato da requisição recebida pelo CapptaGpPlus é inválido

4

Operação cancelada pelo operador

5

Pagamento não autorizado/pendente/não encontrado

6

Pagamento ou cancelamento negados pela rede adquirente ou falta de conexão com internet

7

Erro interno no CapptaGpPlus

8

Erro na comunicação entre a CappAPI e o CapptaGpPlus

Suggest Edits

Tabela de bandeiras

 
Código da bandeira
Nome da bandeira
Código da bandeira
Nome da bandeira

1

ABN

|

2

ABRAPETITE

Código da bandeira Nome da bandeira
1 ABN
2 ABRAPETITE
3 ACC-CARD
4 ACEITO
5 ACSP
6 AGIPLAN
7 ALELO
8 AMAZONIA CELULAR
9 AMEX
10 ASCARD
11 AURA
12 AURA BERGAMAIS
13 AURA FNAC
14 AVISTA
15 BANCRED
16 BANESCARD
17 BANESE CARD
18 BANESTIK
19 BANKCARD
20 BANKTEC
21 BANPARA
22 BANQUET
23 BANQUET SMART
24 BANRICOMPRAS
25 BANRISUL
26 BANRISUL ALIMENTACAO
27 BANRISUL COMBUSTIVEL
28 BASECARD
29 BEM
30 BIGCARD
31 BLACKHAWK
32 BNB CLUBE
33 BNDES
34 BONUS
35 BRADESCO
36 BRASILCARD
37 BRT FIXA
38 BRTELECOM
39 CABAL CRED
40 CABAL DEB
41 CABAL VALE
42 CALCARD
43 CARDCO
44 CARTAO BRINQUEDO
45 CARTAO MAMAE
46 CARTAO NATAL
47 CB-BANCO DO BRASIL
48 CB-BRADESCO
49 CB-CITIBANK
50 CB-HSBC
51 CB-UNIBANCO
52 CELULAR
53 CHECKCHECK
54 CHEQUE ELETRONICO
55 CHEQUEPRE
56 CIELO
57 CLARO
58 CLARO OFF-LINE
59 COLABORADOR
60 COM VOCE
61 COMPROCARD
62 CONSTRUCARD
63 CONVCARD
64 COOPERCRED VALE
65 CPF
66 CREDI-SHOP
67 CREDITEM
68 CREDPAR
69 CREDSYSTEM
70 CTBC-CELULAR
71 CTBC-FIXO
72 DACASA
73 DIAMANTE
74 DINERS
75 DMCARD
76 ECXCARD
77 ELAVON
78 ELECTRON
79 ELO CREDITO
80 ELO DEBITO
81 ELO VOUCHER
82 EMBRATEL
83 EMBRATEL LIVRE ONLINE
84 EPAY
85 EPAY SEGUROS
86 EPHARMA
87 EPHARMA BALCAO
88 EVANGELICO
89 FACIL
90 FACIL_LOSANGO
91 FAI
92 FALA FACIL
93 FANCARD
94 FARMASEG
95 FIC
96 FININVEST
97 FLEXMED
98 FORTBRASIL
99 FUNCIONAL CARD
100 GETNET
101 GIVEX
102 GOIASCARD
103 GOODCARD
104 GOODMED
105 GOODVALE
106 GREENCARD
107 GYNCARD
108 HAPPY CARD
109 HIPERCARD
110 IBI
111 IBICARD
112 IBIPL
113 INCOMM
114 INFOCARDS
115 ITAU
116 ITAU-MOBILE
117 J.C.B.
118 JETPARCARD
119 LEADER CARD
120 LOJISTA
121 LOSANGO
122 MAESTRO
123 MAIS!
124 MARISA
125 MASTERCARD
126 MAXICRED
127 MEDCHEQUE
128 MINASCRED
129 MULTIALIMENTACAO
130 MULTIALIMENTACAO BEN
131 MULTIBENEFICIO
132 MULTIBENEFICIOS
133 MULTICASH
134 MULTICESTABASICA
135 MULTICHEQUE
136 MULTICHEQUE ANTIGO
137 MULTICHEQUE BEN
138 MULTICOMBUSTIVEL
139 MULTICULTURA
140 MULTIEMPRESARIAL
141 MULTIFARMA
142 MULTIREFEICAO
143 MURY
144 NBC
145 NEUS
146 NEXTEL
147 NOKIA
148 NOVARTIS
149 NUTRICARD/BONUSCRED
150 NUTRICASH
151 OBOÉCARD
152 OI
153 OI FIXA
154 OI OFF
155 ORGCARD CRED
156 ORGCARD DEB
157 ORGCARD DVCS
158 PAGUE CONTAS VISANET 4.1
159 PBMGOV
160 PERSONAL CARD
161 PHARMASYSTEM
162 PL FREECENTER
163 PL GETNET MASTER
164 PL GETNET VISA
165 PL MAGAZINE
166 PL TESOURA
167 PLANVALE
168 PLANVALE R
169 POLICARD
170 PORTALCARD
171 POUPCARD
172 PRATICARD
173 PREMIACAO
174 PREMIUM
175 PRESENTE
176 PRESTASERV
177 PREVSAUDE
178 PREZUNIC
179 PRIVATE LABEL REDECARD
180 QUALYCARD
181 RAINBOW
182 RANCHO CARD ALIMENTACAO
183 RANCHO CARD CONVENIO
184 REC-FININVEST
185 REDECARD
186 REDESOFTNEX
187 REDESOFTNEX CONV
188 REFEISUL
189 ROSSI
190 SAFRA AMANCO
191 SAPORE
192 SENFF
193 SERASA
194 SERCOMTEL-CELULAR
195 SERCOMTEL-FIXO
196 SICREDI CREDITO
197 SICREDI DEBITO
198 SIFRAGO
199 SIMCRED
200 SISCRED
201 SISTEMA
202 SODEXO ALIMENTACAO
203 SODEXO REFEICAO
204 SOLLO
205 SOLUCARD
206 SOMAR
207 SOROCRED
208 SOROCRED CREDITO
209 STAFFCARD
210 SUPER BONUS
211 SUPERCARD
212 SYSDATA
213 TECBAN
214 TELECHEQUE
215 TELEFONICA
216 TELEFONIC-FAMILIA
217 TELEMAR
218 TELEMIG
219 TELENET
220 TELESP-SUPER 15
221 TICKET ALIMENTAÇÃO
222 TICKET CAR
223 TICKET RESTAURANTE
224 TIM
225 TIM ON-LINE
226 TIPCARD
227 TMS
228 TOKORO
229 TOPCARD
230 TOPPREMIUM
231 TRANSCHECK
232 TRICARD
233 TRNCENTRE
234 UNIK
235 UNNISA
236 USECRED
237 VAELETRONICO
238 VALE MAIS
239 VALECARD
240 VALECASH
241 VALEFROTA
242 VALEGAS
243 VALESHOP
244 VALETIK
245 VEGAS CARD
246 VERDECARD
247 VEROCHEQUE
248 VIA FINANCEIRA
249 VIDALINK
250 VISA
251 VIVO
252 VIVO OFF-LINE
253 VR ALIMENTACAO
254 VR AUTO
255 VR CULTURA
256 VR REFEICAO
257 ZOGBI
259 SODEXO COMBUSTÍVEL
260 ALGORIX
261 ALGORIX_S
262 SAVS
263 VEROCHEQUE CREDITO
265 CREDZ
266 ESPLANADA
267 SODEXO
268 ELO REFEICAO
269 ELO ALIMENTACAO
270 PBM PADRAO
271 CIELO AUTO
273 BIGCARD DEB
276 TICKET ALIMENTACAO
277 ALELO REFEICAO
278 ALELO ALIMENTACAO
279 BAHAMAS CRED
280 BAHAMAS ALIM
281 BANESCARD DEBITO
283 FLEETCOR
284 MAXXCARD
285 METTACARD
286 REDE CRED
287 REDE DEB
288 REDE VOUCHER
289 HIPER DEB
290 ALGORIX-VOUCHER
291 CREDIALIMENTACAO
292 VISA VALE
293 UAI CARD
294 REDEMED
295 PARACATUCARD
296 VALECARD DEB
297 MULTIPLUS
298 POLICARD CREDITO
299 POLICARD DEBITO
300 POLICARD ALIMENTACAO
301 POLICARD REFEICAO
302 GOODCARD ALIMENTACAO
303 GOODCARD REFEICAO
304 ALELO REFEIÇÃO
305 ALELO ALIMENTAÇÃO
306 VEGAS CARD
307 VEGAS CARD
308 VALLE EXPRESS
Suggest Edits

O que é MultiLoja:

 

Com a Cappta os clientes podem ter diversos CNPJs vinculados na mesma instalação do CapptaGpPlus e selecionar qual deseja utilizar no momento da venda.

Além de ter diversas lojas vinculadas, o Multi Loja permite ao lojista uma flexibilidade maior sobre suas vendas, possibilitando que ele as direcione para o CNPJ de sua escolha. Automaticamente o valor dessa venda será direcionado ao domicilio bancário do CNPJ selecionado.

Abaixo estão descritos os métodos necessários para utilizar a função Multi Loja.

Suggest Edits

Obtendo lista de lojas

 

Este método é utilizado para obter uma lista de todas os CNPJs que estão vinculados a instalação e disponiveis para ativação. Com essa lista você pode exibi-la para que o operador possa selecionar o CNPJ que deseja ativar.

Retorno de obter lojas

Propriedade
Tipo
Descrição

CodigoResposta

int

Representa o código de retorno da busca realizada. Para detalhamento dos códigos de retorno consulte a tabela Possíveis códigos de retorno

ListaLojas

Array de DetalheLoja

Representa um array de DetalheLoja onde são inseridas todas as lojas vinculadas ao CNPJ.

Detalhes de DetalheLoja

Propriedade
Tipo
Descrição

Codigo

int

Representa o código da loja.

NomeFantasia

string

Representa o nome fantasia da loja.

Cnpj

string

Representa o número do CNPJ, que contem 14 dígitos.

Pdv

int

Representa numero do pdv daquele cnpj.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            int resultado = cappta.ObterLojas();

            if (resultado.CodigoResposta != 0))
            {
                Console.WriteLine("Não foi possível obter lista de lojas.");
                return;
            }

            var listaDeLojas = consultaLojas.ListaLojas;

            foreach (var loja in listaDeLojas)
            {
                Console.WriteLine($"{loja.NomeFantasia} CNPJ: {loja.Cnpj} PDV: {loja.Pdv}");
            }
        }
    }
}
public class DetalheLoja : IDetalheLoja
{
    public int Codigo { get; set; }

    public string NomeFantasia { get; set; }

    public string Cnpj { get; set; }

    public int Pdv { get; set; }
}
Suggest Edits

Ativando uma loja

 

Após o operador selecionar a loja que será ativada, ele deve usar esse método para ativá-la. Após ativada, todas as transações, reimpressões e estornos serão referentes ao CNPJ ativo.

Propriedade
Obrigatório?
Tipo
Descrição

Codigo

Não

int

Representa o código da loja.

Nome Fantasia

Não

string

Representa o nome fantasia da loja.

Cnpj

Sim

string

Representa o número do CNPJ da loja que será ativada, que deve conter 14 dígitos.

Pdv

Não

int

Representa número do pdv daquele cnpj.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            IDetalheLoja loja = new DetalheLoja()
            {
                Cnpj = "00000000000000"
            };

            var resultado = cappta.AtivarLoja(loja);
            if(resultado.CodigoResposta != 0))
            {
                Console.WriteLine("Não foi possível ativar a loja.");
                return;
            }

            Console.WriteLine("Loja ativada com sucesso.");
        }
    }
}
Suggest Edits

O que é a pré-autorização de crédito

 

O crédito pré-autorizado ou pré-autorização de crédito funciona como um pagamento comum de crédito, porém, em vez do valor ser capturado na hora, ele fica reservado do limite do cartão até que se realize a captura do valor final. Isso possibilita ao estabelecimento ter uma garantia de que, após utilizar o serviço, o cliente terá limite disponível para realizar o pagamento.

Portanto temos dois passos distintos para realizar o pagamento:
1. A solicitação do crédito pré-autorizado: É o momento em que o valor estimado do produto/serviço é reservado do limite do cartão do cliente.

2. A captura do crédito pré-autorizado: É o momento no qual é debitado o valor real do produto/serviço utilizado pelo cliente.

Suggest Edits

Criar crédito pré-autorizado

 

Para realizar a reserva do limite do cartão é necessário enviar uma requisição para o método PreAutorizacaoPagamentoCredito passando como parâmetro a quantia que deverá ser reservada do limite do cartão do cliente.

Fique atento!

Normalmente uma pré-autorização de crédito possui uma validade, que pode variar em função da adquirente, bandeira e/ou emissor do cartão. Após esse prazo, o limite é liberado.

Parametro
Obrigatório
Tipo
Descrição

valor

Sim

double

Valor a ser pré autorizado no cartão

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/
						
            double valorDaPreAutorizacao = 100;
            int resultado = cappta.PreAutorizacaoPagamentoCredito(valorDaPreAutorizacao);
            
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação");
                return;
            }

            //Agora basta continuar o fluxo de iteração do pagamento
        }
    }
}
program capptaapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB;

var
  cappta : IClienteCappta;
  resultado : integer;
  valorDaPreAutorizacao : double;
begin
  
  // -- Não esqueça de realizar a autenticação aqui \o/ --
	
  resultado := cappta.PreAutorizacaoPagamentoCredito(valorDaPreAutorizacao);
  
  if resultado <> 0 then
  begin
       WriteLn('Não foi possível iniciar a operação');
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração do pagamento --
end.
Suggest Edits

Capturar crédito pré-autorizado

 

Para capturar uma venda pré-autorizada é necessário enviar para o método CapturarPreAutorizacaoPagamentoCredito o valor que deseja capturar e o controle que foi retornado do método de criar crédito pré-autorizado

Fique atento!

Se o valor de captura for menor que o valor pré-autorizado, o restante do crédito pré-aprovado é liberado no limite do cartão automaticamente.

Parametro
Obrigatório
Tipo
Descrição

controle

Sim

string

Código de identificação de cada venda.

valor

Sim

double

Valor a ser capturado.

using System;
using Cappta.Gp.Api.Com;

namespace CappAPIIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            //Não esqueça de realizar a autenticação aqui \o/
						
            double valorDaCaptura = 100;          	
            string codigoDeControleDaVenda = "01020676031";
            int resultado = cappta.CapturarPreAutorizacaoPagamentoCredito(codigoDeControleDaVenda, valorDaCaptura);
            
            if (resultado != 0)
            {
                Console.WriteLine("Não foi possível iniciar a operação");
                return;
            }

            //Agora basta continuar o fluxo de iteração do pagamento
        }
    }
}
program capptaapiintegration;

uses Cappta_Gp_Api_Com_1_0_TLB;

var
  cappta : IClienteCappta;
  resultado : integer;
  valorDaCaptura : double;
	codigoDeControleDaVenda : string;
begin
  
  // -- Não esqueça de realizar a autenticação aqui \o/ --
	
  resultado := cappta.CapturarPreAutorizacaoPagamentoCredito(codigoDeControleDaVenda, valorDaCaptura);
  
  if resultado <> 0 then
  begin
       WriteLn('Não foi possível iniciar a operação');
       exit;
  end;

  // -- Agora basta continuar o fluxo de iteração do pagamento --
end.
Suggest Edits

Cancelamento de crédito pré-autorizado

 

Cancelar um crédito pré-autorizado é como cancelar uma venda normal, basta enviar o senhaAdminstrativa e o controle para o método CancelarPagamento como explicado em Cancelamento de pagamentos

Atenção!

Será possível cancelar somente créditos pré-aprovados que não foram capturados.

Suggest Edits

Roteiro de Testes

 

CAPPTA API DESKTOP

v 1.2.0.1

Suggest Edits

Portfólio de Cartões de Testes

 

Os cartões abaixo poderão ser utilizados para realização dos testes com a modalidade Crédito, todos são CARTÕES DE TESTES e NÃO SÃO VÁLIDOS para pagamentos reais.

Siga as instruções a seguir para correta utilização dos cartões:

✓ &nbsp Todos cartões deverão ser utilizados na modalidade CRÉDITO;
✓ &nbsp Aprenda a realizar vendas digitadas no Cappta na próxima página;
✓ &nbsp Não divulgue por nenhum meio os dados dos cartões fornecidos para testes.

bandeira
número
senha
Código de segurança
data de validade

VISA

4073020000000002

1234

321

1219

VISA

4012001038443335

1234

321

1219

MASTER CARD

6011020000245045

NÃO É NECESSÁRIO

123

1219

MASTER CARD

5453010000066167

NÃO É NECESSÁRIO

123

1219

American Express

3477 324901 33253

NÃO É NECESSÁRIO

2719

1219

American Express

3706 648883 88027

NÃO É NECESSÁRIO

9230

1219

Fique atento!

Se por ventura ao realizar uma transação aparecer mensagem de erros "Bin não configurado", "Cartão não autorizado" utilize para teste estes cartões acima na modalidade credito, venda digitada.

Você também pode utilizar mais cartões Clicando aqui.

 

Roteiro de testes obrigatório

Este roteiro de testes tem a finalidade de comprovar o perfeito funcionamento entre os sistemas.

O Cumprimento dos testes é obrigatório, ficando sobre a responsabilidade da empresa desenvolvedora a entrega dos mesmos, caso contrário não emitiremos certificado bem como a chave de autenticação.

Suggest Edits

O que será analisado?

 

A Certificação com a Cappta é inteiramente remota, portanto é de suma importância a realização das Sequências de Testes contidas neste documento, precisamos dos resultados para validação do perfeito funcionamento entre os sistemas. As evidências necessárias são:

PRINTS: durante o roteiro solicitamos imagens que devem ser capturadas durante as transações, através dos prints avaliamos a usabilidade dos sistemas rodando de forma integrada.

COMPROVANTES: analisamos os comprovantes (scaneados/fotografados) para validar a quantidade de vias impressas, alinhamento das informações e comprovar de que a impressão está sendo feita sem alteração de conteúdo.

LOGS: através do Log verificamos detalhadamente as transações realizadas durante os testes, além de visualizar toda comunicação necessária entre os sistemas, determinada na documentação:

VÍDEO: Este tipo de mídia proporciona uma visão mais detalhada da integração e deve abranger todos os testes

Importante

EM CADA SEQUÊNCIA É DESCRITO O QUE DEVE SER ARQUIVADO E ENVIADO A CAPPTA PARA ANÁLISE, PODENDO HAVER EM ALGUMAS SEQUÊNCIAS MAIS DE UM TIPO DE EVIDÊNCIA NECESSÁRIA.

Suggest Edits

Estrutura de Pastas para envio de evidências

 

Importante!

Siga corretamente a estrutura de pastas como na figura abaixo para envio das evidências de testes. Seguindo tal padrão conseguiremos analisar com precisão cada sequência efetuada.

Suggest Edits

Ambiente de Testes

 

O Ambiente de Testes que disponibilizamos está direcionado para servidores de certificação, que por sua vez simulam a autorização das transações, portanto as vendas realizadas não serão cobradas, caso esteja utilizando um cartão real. É possível também utilizar cartões de testes de maneira digitada para aprovar as transações, explicaremos adiante como realizar vendas com estes cartões.

Suggest Edits

Realizando Vendas Digitadas

 

1. Lance uma venda através da Automação Comercial

2. Selecione a forma de pagamento que acione o Cappta Integrado

3. A mensagem “Insira ou Passe o Cartão” deverá ser exibida na tela e no visor do pinpad, então aperte uma vez o botão “ANULA” (botão VERMELHO do Pinpad)

4. Nas telas a seguir insira os dados do cartão de Testes.

5. insira a data de validade e código de segurança. Após a inserção destas informações a venda será aprovada.

IMPORTANTE

SENHAS: PARA CARTÕES COM CHIP, SERÁ NECESSÁRIO INFORMAR A SENHA CORRETA DO CARTÃO, POIS AS VALIDAÇÕES DA SENHA PARA ESTE TIPO DE CARTÃO SÃO REALIZADAS PELO PRÓPRIO CHIP. JÁ PARA OS CARTÕES DE TARJA, A INSERÇÃO DA SENHA CORRETA NÃO SE FAZ NECESSÁRIA, NESTE CASO PODE-SE INSERIR 4 DÍGITOS ALEATÓRIOS PARA PROSSEGUIR COM A TRANSAÇÃO.

Suggest Edits

Roteiro de Testes

 

Estarão disponíveis os resultados esperados em todas as sequências de testes, caso os resultados obtidos estejam divergentes do proposto, será necessária uma nova realização da sequência de teste após os ajustes necessários no Sistema. Sempre nos consulte previamente em caso de dúvidas.

Suggest Edits

Configurando o PDV + TEF Cappta

 

Estes testes tem a finalidade de validar a comunicação entre as aplicações.

Precisamos saber como configurar seu Software de Automação para se comunicar com o Gerenciador Padrão, em caso de contato do lojista conosco poderemos agir e configurar os sistemas para se comunicarem.

Nas Sequências de Testes a seguir solicitaremos que nos mostre as telas de configuração
e parametrização e como acessá-las.

Suggest Edits

Sequência 1 - Configurando o TEF no PDV

 

Sequência Obrigatória

PREPAROS

  • Vá até a tela do seu sistema onde o TEF é configurado.

PASSOS DE EXECUÇÃO

  1. Inicie seu sistema
  2. Vá na Tela onde o TEF é configurado
  3. Faça a configuração editando o CNPJ e PDV

Atenção!

Esta Chave de Autenticação é apenas para ambiente de teste, após a conclusão será emitido uma chave de produção.

RESULTADOS ESPERADOS

  1. O Software deverá conter uma tela de fácil acesso, que permita configurar os dados de instalação do TEF.

Obs: Podendo ser um xml, ou direto na base de dados

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Capture prints de todas as etapas da sequência, mostrando como acessar a tela de configurações ou grave um vídeo

Suggest Edits

Sequência 2 – Desativando o Gerenciador Padrão

 

Sequência Obrigatória

PREPAROS

  • Desative o Gerenciador Padrão e tente realizar uma transação qualquer com o TEF.

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Observe o comportamento do Sistema de Automação.

RESULTADOS ESPERADOS

  1. O Sistema de Automação deverá exibir obrigatoriamente uma mensagem: “O CapptaGpPlus está sendo inicializado, tente novamente em alguns instantes”.
    OBS.: O TEF irá devolver o retorno descrito acima que deverá ser exibido sem alterações de conteúdo, além de retornar o código de erro 2 - CapptaGpPlus está sendo inicializado.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Capture um print da mensagem exibida pela Automação ao não localizar o TEF em execução.

Suggest Edits

Sequência 3 – Desconectando o PINPAD

 

Sequência Obrigatória

PREPAROS

  • Desconecte o PINPAD Antes de iniciar uma operação.

PASSOS DE EXECUÇÃO

  1. Inicie a Automação comercial com o Gerenciador iniciado e pronto para uso;
  2. Desconecte o PINPAD e Inicie uma operação de Transação;
  3. Selecione ‘Não’ para que o TEF não tente configurar o PINPAD automaticamente;

RESULTADOS ESPERADOS

  1. Para Integração Visível o CapptaGpPlus irá mostrar uma mensagem ao usuário.

  2. Para Integração Invisível o sistema de automação deverá exibir obrigatoriamente uma mensagem: “Pinpad não encontrado. Por favor, desconecte ele do computador e reconecte-o.
    Se o problema persistir, ligue 0800 773 6105”.

    OBS.: O TEF irá devolver o retorno descrito acima que deverá ser exibido sem alterações de conteúdo.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

Capture Print ou vídeo deste tratamento de erro

Suggest Edits

Sequência 4- Alterando o número do PDV

 

Sequência Obrigatória

PREPAROS

  • Vá até a tela do seu sistema onde o TEF é configurado.

PASSOS DE EXECUÇÃO

  1. Inicie seu sistema
  2. Vá na Tela onde o TEF é configurado
  3. Faça a configuração alterando o número do PDV para 0.

RESULTADOS ESPERADOS

  1. O Software deverá fazer o tratamento de erro para informações invalidas de CNPJ e PDV

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Capture prints e ou vídeo deste tratamento de erro

Suggest Edits

Testes com Transações

 

Realize os testes com Transações variadas, estes testes deverão simular ao máximo o Ambiente de uma loja, onde diariamente várias vendas com diversos cartões diferentes são realizadas.

Suggest Edits

Sequência 5 – Transação Visa Crédito à Vista

 

Sequência Obrigatória

PREPAROS

  • Realize uma transação com cartão de Crédito da bandeira Visa;
  • Se possível, R$ 50,00 reais

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Siga a transação até a finalização.

RESULTADOS ESPERADOS

  1. A transação deverá ocorrer sem travamentos ou impedimentos até sua aprovação;
  2. O sistema deverá realizar a tratativa dos campos de retorno e realizar a impressão de 2 comprovantes TEF (vias), Cliente e Loja respectivamente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;
    Obs: o log encontra-se no seguinte caminho:
    C:\Program Files (x86)\CAPPTA\CapptaGpPlus\integration-adapter

Suggest Edits

Sequência 6 – Transação Master Card Crédito Parcelado Lojista

 

Sequência Obrigatória

Atenção para parcelado lojista deve ser informado, o número de parcelas, tipo de parcelamento (lojista)

PREPAROS

  • Realize uma transação com cartão de Crédito de bandeira Master;
  • Se possível valor de R$ 100,00 reais
  • Parcelamento em 3 vezes

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGpPlus;
  3. Siga a transação até a finalização.

RESULTADOS ESPERADOS

  1. A transação deverá ocorrer sem travamentos ou impedimentos até sua aprovação;
  2. O sistema deverá realizar a tratativa dos campos de retorno e realizar a impressão de 2 comprovantes TEF (vias), Cliente e Loja respectivamente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;

Suggest Edits

Sequência 7 – Transação Visa Crédito Parcelado Administradora

 

Sequência Obrigatória

Atenção para parcelado administradora deve ser informado, o número de parcelas, tipo de parcelamento (administradora)

PREPAROS

  • Realize uma transação com cartão de Crédito de bandeira Visa;
  • Se possível valor de R$ 100,00 reais
  • Parcelamento em 3 vezes

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGpPlus;
  3. Siga a transação até a finalização.

RESULTADOS ESPERADOS

  1. A transação deverá ocorrer sem travamentos ou impedimentos até sua aprovação;
  2. O sistema deverá realizar a tratativa dos campos de retorno e realizar a impressão de 2 comprovantes TEF (vias), Cliente e Loja respectivamente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;

Suggest Edits

Sequência 8 – Transação visa

 

Sequência Obrigatória

PREPAROS

  • Realize 3 transações na sequência (avista, parcelado loja e parcelado administradora)
  • Se possível nos seguintes valores (R$ 10.00, R$ 100,00, R$ 100,00)
  • Parcelamento em 3 vezes

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGpPlus;
  3. Siga a transação até a finalização.

RESULTADOS ESPERADOS

  1. A transação deverá ocorrer sem travamentos ou impedimentos até sua aprovação;
  2. O sistema deverá realizar a tratativa dos campos de retorno e realizar a impressão de 2 comprovantes TEF (vias), Cliente e Loja respectivamente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;

Suggest Edits

Sequência 9 – Transação Master

 

Sequência Obrigatória

PREPAROS

  • Realize 3 transações na sequência (avista, parcelado loja e parcelado administradora)
  • Se possível nos seguintes valores (R$ 10.00, R$ 100,00, R$ 100,00)
  • Parcelamento em 3 vezes

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGpPlus;
  3. Siga a transação até a finalização.

RESULTADOS ESPERADOS

  1. A transação deverá ocorrer sem travamentos ou impedimentos até sua aprovação;
  2. O sistema deverá realizar a tratativa dos campos de retorno e realizar a impressão de 2 comprovantes TEF (vias), Cliente e Loja respectivamente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;

Suggest Edits

Sequência 10 - Débito Visa

 

Sequência Obrigatória

PREPAROS

  • Realize uma transação com cartão de Débito da bandeira Visa;
  • Se possível, R$ 80,00 reais

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Siga a transação até a finalização.

RESULTADOS ESPERADOS

  1. A transação deverá ocorrer sem travamentos ou impedimentos até sua aprovação;
  2. O sistema deverá realizar a tratativa dos campos de retorno e realizar a impressão de 2 comprovantes TEF (vias), Cliente e Loja respectivamente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;

Suggest Edits

Sequência 11- Capturando erro durante a transação

 

Sequência Obrigatória apenas para Integração Invisível

Este teste tem a intenção de simular um erro qualquer durante a transação

PREPAROS

  • Realize uma transação com cartão de Débito de qualquer bandeira
  • Se possível, R$ 80,00 reais

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. quando for solicitado para inserir o cartão, aperte o botão vermelho.
    4.Será solicitado a digitação do número do cartão
  4. Após a digitação sera emitido um erro
  5. Faça o tratamento do erro

RESULTADOS ESPERADOS

  1. A automação devera tratar o erro
  2. Mostre ao usuário o erro e pergunte se deseja tentar novamente ou escolher outra forma de pagamento

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação;
  • Print ou vídeo (mensagens exibidas para o usuário)

Suggest Edits

Testes com MultiTEF

 

Atenção

Se não for utilizar multTEF os testes se tornam desnecessários. Se em algum momento após homologação decida utilizar por favor nos envie as evidências.

O multicartões(multtef) dará ao usuário a possibilidade de utilizar até 9 cartões por transação, em cada operação a mesma ficara como pendente de confirmação e desfazimento. Desta forma você pode desfazer todas as transações ou confirmar.
Se houver algum erro em uma das transações o operador poderá selecionar outro cartão ou outra forma de pagamento, bastando apenas confirmar as que já ocorreram ou desfaze-la.

Se não for utilizar multTEF os testes se tornam desnecessários. Se em algum momento após homologação decida utilizar por favor nos envie as evidências.

Facilite a vida do usuário ao realizar vendas com vários cartões.

Suggest Edits

Sequência 12 – Introdução ao MultiTEF

 

Sequência Obrigatória

Se for utilizar MultiTef a mesma torna-se obrigatória

PREPAROS

  • Realize uma transação com dois cartões de qualquer bandeira;
  • Se possível utilize um valor de R$ 150,00 reais

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. O valor da primeira transação deverá ser de R$75,00;
  3. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  4. Ao finalizar o primeiro pagamento, a Automação deverá enviar os parâmetros da segunda transação com o valor de R$75,00.

RESULTADOS ESPERADOS

  1. O TEF deverá retornar a Automação Comercial 4 vias, 2 para cada venda que deverão ser impressas sem travamentos.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação.

Suggest Edits

Sequência 13 – Transação MultiTEF com falha

 

Sequência Obrigatória

Se for utilizar MultiTef a mesma torna-se obrigatória

PREPAROS

  • Realize uma transação com dois cartões de qualquer bandeira;
  • Valor da transação: R$50,00.
PASSOS DE EXECUÇÃO
  1. Inicie uma venda através da Automação Comercial;
  2. O valor da primeira transação deverá ser de R$25,00;
  3. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  4. Ao finalizar o primeiro pagamento, a Automação deverá enviar os parâmetros da segunda transação com o valor de R$25,00.
  5. Provoque erro na segunda venda propositalmente.
RESULTADOS ESPERADOS
  1. O sistema de vendas devera exibir a mensagem de erro
  2. Solicitar outro cartão.
  3. Finalizar a venda

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação

Suggest Edits

Sequência 14 – Transação MultiTEF com falha (2)

 

Sequência Obrigatória

Se for utilizar MultiTef a mesma torna-se obrigatória

PREPAROS

  • Realize uma transação com 3 cartões de qualquer bandeira;
  • Valor da transação: R$100,00.

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. O valor da primeira transação deverá ser de R$25,00;
  4. O valor da segunda transação deverá ser de R$25,00;
  5. Provoque erro na terceira venda propositalmente.

RESULTADOS ESPERADOS

  1. O sistema de vendas devera exibir a mensagem de erro
  2. Solicitar outra forma de pagamento?
  3. Escolha não
  4. As 3 vendas devem ser desfeitas
    Obs. Com o Tef Cappta, quando desfazer uma venda todas dentro do fluxo de Multtef serão desfeitas também

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação

Suggest Edits

Testes com Funções Administrativas

 

Os testes com as Funções Administrativas têm como finalidade garantir que o sistema de Automação Comercial enviar requisições corretamente para realizar Reimpressão de Comprovante e Cancelamento, também validar que o TEF consegue realizar a Reimpressão de comprovantes de vendas com cartão, bem como o Cancelamento de vendas realizadas através do TEF, retornando os devidos comprovantes para que sejam impressos pela Automação Comercial.

Estamos quase terminando os testes!

Suggest Edits

Sequência 15 – Reimpressão de Comprovante

 

Sequência Obrigatória

PREPAROS

  • Tenha em mãos o número de controle

PASSOS DE EXECUÇÃO

  1. Vá até o menu de Reimpressão/Cancelamento pela Automação;
  2. Selecione a opção Reimpressão;
  3. Insira o número de CONTROLE da transação;
  4. Selecione a opção “Todas” as vias.

RESULTADOS ESPERADOS

  1. O sistema de Automação Comercial deverá receber o retorno em 2 vias e realizar a impressão do comprovante Cliente e Lojista.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação

Suggest Edits

Sequência 16 – Reimpressão via Cliente

 

Sequência Obrigatória

PREPAROS

  • Tenha em mãos o número de controle

PASSOS DE EXECUÇÃO

  1. Vá até o menu de Reimpressão/Cancelamento pela Automação;
  2. Selecione a opção Reimpressão;
  3. Insira o número de CONTROLE da transação;
  4. Selecione a opção via “Cliente”.

RESULTADOS ESPERADOS

  1. O sistema de Automação Comercial deverá receber o retorno de 1 via e realizar a impressão apenas do comprovante Cliente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação

Suggest Edits

Sequência 17 – Reimpressão via Loja

 

Sequência Obrigatória

PREPAROS

  • Tenha em mãos um comprovante

PASSOS DE EXECUÇÃO

  1. Vá até o menu de Reimpressão/Cancelamento pela Automação;
  2. Selecione a opção Reimpressão;
  3. Insira o número de CONTROLE da transação;
  4. Selecione a opção via “Loja”.

RESULTADOS ESPERADOS

  1. O sistema de Automação Comercial deverá receber o retorno de 1 via e realizar a impressão apenas do comprovante do Lojista.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação

Suggest Edits

Sequência 18 – Cancelando uma Transação

 

Sequência Obrigatória

PREPAROS

  • Tenha em mãos um comprovante e ou número de controle

PASSOS DE EXECUÇÃO

  1. Vá até o menu de Reimpressão/Cancelamento pela Automação;
  2. Selecione a opção Cancelamento;
  3. Insira a senha Administrativa que é: cappta;
  4. Insira o número de CONTROLE da transação;
  5. Insira ou digite os dados do Cartão utilizado nesta transação.

RESULTADOS ESPERADOS

  1. O sistema de Automação Comercial deverá receber o retorno e realizar a impressão do comprovante de solicitação de estorno para o Cliente e Lojista.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da transação

Suggest Edits

Sequência 19 - Capturando todos os passos de uma operação administrativa

 

Sequência Obrigatória

PREPAROS

  • Tenha em mãos um comprovante qualquer

PASSOS DE EXECUÇÃO

  1. Vá até o menu de Reimpressão/Cancelamento pela Automação;
  2. Selecione a opção Cancelamento ;
  3. Insira a senha Administrativa que é: cappta;
  4. Insira o número de CONTROLE da transação;
  5. Insira ou digite os dados do Cartão

RESULTADOS ESPERADOS

1- Capture os prints de todas as etapas
2- Dê mais atenção aos prints que mostram exatamente onde encontrar as opções administrativas

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar prints ou vídeo

Suggest Edits

Operações Não Finalizadas

 

Os testes de Operações Não Finalizadas foram elaborados com o objetivo de validar o funcionamento entre o TEF e a Automação Comercial, quando o fluxo de operação é quebrado por algum motivo. Dentre os motivos que finalizam o fluxo da operação podemos citar: a falta de saldo de um cartão ou até mesmo o pressionar de um botão cancelar no Pinpad pelo usuário.

Estes testes também têm como finalidade garantir que o Software de Automação reconhece o retorno enviado pelo TEF quando o uso é interrompido por falha, interação do usuário ou motivos adversos.

Esta sequência é obrigatória

Estamos quase terminando os testes!

Suggest Edits

Sequência 20 - Cancelando uma Operação

 

Sequência Obrigatória para integração Invisível

PREPAROS

  • Realize uma transação qualquer.

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Quando a mensagem “Insira ou Passe o Cartão” surgir, pressione o botão ANULA (botão Vermelho do Pinpad);
  4. Confirme o cancelamento da operação “Operação Cancelada? selecione 1- Sim”.

RESULTADOS ESPERADOS

  1. A Automação deverá interpretar a resposta de operação negada de código “4- Operação Cancelada”;
  2. A mensagem “Operação Cancelada pelo Operador” deverá ser exibida.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da operação;
  • Print da mensagem
Suggest Edits

Sequência 21- Tratamento de venda pendente

 

Sequência Obrigatória para integração Invisível

PREPAROS

  • Realize uma transação qualquer.

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGpPlus;
  3. Antes do envio do (ConfirmarPagamento()) fechar o CapptaGpPlus
  4. Inicie uma nova transação

RESULTADOS ESPERADOS

  1. A Automação deverá fazer o tratamento de vendas pendentes
  2. A Automação deverá exibir as informações sobre a venda pendente
  3. Perguntar para o usuário "Deseja confirmar ou desfazer"
  4. Clique em Sim

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar log da operação;
  • Print da mensagem
Suggest Edits

Falhas na Impressão de Comprovante

 

Obrigatório apenas para PAF-ECF

O teste de falha na impressão foi elaborado para garantir que caso ocorra alguma anomalia durante a impressão do documento fiscal (Danfe/Cupom Fiscal) e/ou vias TEF, os sistemas tenham o comportamento adequado.

Estamos na reta final do Roteiro de Testes!

Suggest Edits

Sequência 22 – Falta de Papel

 

Obrigatório apenas para PAF-ECF

PREPAROS

  • Realize uma transação qualquer;
  • Deixe propositalmente a impressora com pouco papel (suficiente para interromper a impressão das vias TEF).

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Realize a transação até a inserção de senha;
  4. Ao final do papel insira uma bobina para seguir com a impressão.

RESULTADOS ESPERADOS

  1. O sistema deverá exibir a mensagem “Impressora não responde, deseja tentar novamente?”, de maneira visível ao usuário;
  2. Após a inserção da bobina a impressão deve continuar do ponto onde parou sem que o cupom seja cancelado.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Capture print da mensagem apresentada na Automação.
  • Enviar comprovantes escaneados.

Suggest Edits

Sequência 23 – Desligando Impressora I

 

Obrigatório apenas para PAF-ECF

PREPAROS

  • Realize uma transação qualquer

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Realize a transação até a sua aprovação;
  4. Após o retorno de “Aprovada” desligue a impressora;

RESULTADOS ESPERADOS

  1. O sistema deverá exibir a mensagem “Impressora não responde, deseja tentar novamente?”, de maneira visível ao usuário;
  2. Após ligar novamente a impressora a impressão deve ser iniciada sem que o cupom seja cancelado.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Capture print da mensagem apresentada na Automação
  • Enviar comprovantes escaneados.

Suggest Edits

Sequência 24 – Desligando Impressora II

 

Obrigatório apenas para PAF-ECF

PREPAROS

  • Realize uma transação qualquer;

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Realize a transação até a sua aprovação;
  4. Após o retorno de “Aprovada” desligue a impressora;

RESULTADOS ESPERADOS

  1. O sistema deverá exibir a mensagem “Impressora não responde, deseja tentar novamente?”, de maneira visível ao usuário;
  2. Não tente novamente realizar a comunicação com a impressora cancelando o cupom juntamente com a transação realizada no TEF.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Capture print da mensagem apresentada na Automação
  • Enviar comprovantes escaneados.

Suggest Edits

Testes de captura de CPF

 

Os Testes referente a captura de CPF tem o intuito de testar a integração entre o Gerenciador Padrão e a Automação comercial durante a entrada do CPF para a aplicação diretamente do PINPAD, proporcionando ao usuário a facilidade no momento de buscar cadastro ou cadastrar novos clientes do estabelecimento.

Agregue diferenciais a sua Automação Comercial adotando o input do CPF através do PINPAD! A validação do CPF no TEF é por nossa conta...

Suggest Edits

Sequência 24 – Captura de número de CPF pelo PINPAD I

 

Sequência Não Obrigatória

PREPAROS

  • Realize um novo cadastro de cliente dentro da Automação Comercial.

PASSOS DE EXECUÇÃO

  1. Acesse a janela de Cadastro de novos clientes na Automação comercial;
  2. Alimente o banco com um novo cliente;
  3. Em uma área da Automação Comercial deixe explicito ao usuário a possibilidade de inserir o CPF pelo PINPAD;
  4. Introduza o CPF através do PINPAD;
  5. Mostre ao usuário que foi cadastrado com sucesso o novo cliente.

RESULTADOS ESPERADOS

  1. O Software deverá coletar o CPF através do PINPAD

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

Enviar o log

Suggest Edits

Sequência 25 – Captura de número de CPF pelo PINPAD II

 

Sequência Não Obrigatória

PREPAROS

  • Realize uma consulta de clientes já inserido no banco de clientes cadastrados.

PASSOS DE EXECUÇÃO

  1. Acesse a janela de Consulta de clientes dentro Automação comercial;
  2. Realize uma consulta de um cliente já cadastrado através de seu CPF;
  3. Em uma área da Automação Comercial deixe explicito ao usuário a possibilidade de inserir o CPF pelo PINPAD;
  4. Introduza o CPF através do PINPAD.
  5. Mostre o cadastro do cliente do CPF informado

RESULTADOS ESPERADOS

  1. O Software deverá coletar o CPF através do PINPAD para buscar no banco o cadastro do cliente.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

Enviar log

Suggest Edits

Sequência 26 – Falha Com PINPAD durante captura de CPF I

 

Sequência Não Obrigatória

PREPAROS

  • Realize um novo Cadastro de cliente dentro da Automação comercial.

PASSOS DE EXECUÇÃO

  1. Acesse a janela de Cadastro de novos clientes na Automação comercial;
  2. Alimente o banco com um novo cliente;
  3. Em uma área da Automação Comercial deixe explicito ao usuário a possibilidade de inserir o CPF pelo PINPAD;
  4. Desconecte o PINPAD do computador.

RESULTADOS ESPERADOS

  1. A Aplicação deverá interpretar o Retorno do TEF, exibindo ao Usuário a mensagem.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar print’s das telas durante a falha de comunicação com o PINPAD durante o cadastro de um novo cliente.

Suggest Edits

Contingência em caso de Falha na Transação

 

Para garantir que a Automação não irá impedir o usuário de finalizar uma venda em cartão com o TEF, caso esteja sem internet ou motivo adverso, é necessário a caráter de contingência, adicionar de uma forma de pagamento no Software, pois assim, o operador utilizará este finalizador, após a dificuldade ser sanada, o mesmo poderá voltar a utilizar o TEF normalmente. Desta maneira o operador de caixa não precisará acessar nenhuma configuração da automação para desativar o TEF e ativar outra forma de pagamento.

Agregue diferenciais a sua Automação Comercial adotando nossas sugestões de melhores práticas!

Suggest Edits

Sequência 27 – Forma de Pagamento em Contingência

 

Sequência Obrigatória

PREPAROS

  • Realize uma transação qualquer;
  • Desconecte propositalmente a internet durante a venda TEF.

PASSOS DE EXECUÇÃO

  1. Inicie uma venda através da Automação Comercial;
  2. Selecione a forma de pagamento na Automação que acione o CapptaGPPlus;
  3. Desconecte a internet da máquina antes da inserção de senha;
  4. Serviço Indisponível, por favor verifique sua conexão com a internet. “Deseja tentar novamente?” Selecione: Não.

RESULTADOS ESPERADOS

  1. O sistema deverá retornar as formas de pagamento;
  2. Na tela de formas de pagamento deverá existir uma opção em que a venda é finalizada em POS (termos sugeridos: POS Crédito, POS Débito), Dinheiro.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Enviar print’s de todas etapas da venda.

Atenção

Este teste tem a intenção de mostrar ao usuário que o Cappta esta indisponível, caso de falta de internet. Mas ele pode finalizar sua venda de outra forma. Evitando assim que o mesmo tenha prejuizos

Suggest Edits

Estorno após cancelamento de Cupom Fiscal

 

O Próximo teste tem a finalidade de realizar estorno da última transação sem a necessidade de acessar as funções Administrativas. Para isso deve ser utilizado o método cancelarPagamento(). Dessa forma a Automação comercial pode cancelar o cupom fiscal e logo em seguida estornar a venda junto a adquirente.

Assim facilitando o usuário no momento de realizar o cancelamento de uma venda já concluída, encurtando o passo de após cancelar o cupom fiscal entrar nas funções ADM para estornar a transação juntamente a rede adquirente em que a venda foi aprovada.

Importante!

PARA O TESTE ONDE POSSIBILITA O CANCELAMENTO DA ULTIMA TRANSAÇÃO SEM QUE SEJA ABERTO AS FUNÇÕES ADMINISTRATIVAS A AUTOMAÇÃO COMERCIAL DEVE ESTAR PREPARADA PARA ENVIAR O MÉTODO DE CANCELAMENTO APÓS CANCELAMENTO DO CUPOM

Sequência de Testes Obrigatória na utilização de Impressora fiscal!

Suggest Edits

Sequência 28 – Cancelamento após cancelar cupom fiscal

 

Atenção!

A sequência a seguir deve ser realizada caso utilize impressora fiscal, para garantir que ao ser cancelado o cupom a transação também será estornada a venda no TEF.

PREPAROS

  • Realize uma transação qualquer;

PASSOS DE EXECUÇÃO

  1. Realize uma venda através da Automação Comercial;
  2. Cancele seu cupom fiscal após sua finalização;
  3. Na mesma janela após cancelar o cupom fiscal envie uma requisição de Cancelamento de Pagamento, com a senha administrativa e nº de Controle da venda que teve o Cupom Fiscal Cancelado;
  4. Finalize o estorno pelo TEF. OBS PARA INTEGRAÇÃO API VISIVEL: Para que usuário possa ter acesso ao número de Controle com maior facilidade, recomendamos que armazene o controle da transação da última venda que é retornado no objeto com os detalhes da transação, para que seja exibido na tela para o usuário, para auxiliá-lo no momento de ser solicitada a digitação do número de controle no Gerenciador Padrão.

RESULTADOS ESPERADOS

  1. A transação deverá ser cancelada com sucesso após o cancelamento do Cupom fiscal.

EVIDÊNCIAS NECESSÁRIAS (RESULTADO OBTIDO)

  • Coletar e enviar o arquivo integration-adapter.log contendo os arquivos trocados durante a operação.
  • Enviar print’s ou vídeo de todas etapas da operação.

Suggest Edits

Sequência 29 Capturando a experiência do Usuário

 

Sequência Obrigatória

Sequência de testes obrigatória

Este teste tem a função de capturar a experiência do usuário através de um vídeo.

Finalidade

A simples observação de fotos não nos revela a real experiência do usuário, gostaríamos de ver como é o comportamento do software com nossa aplicação.

Preparos

Utilize uma ferramenta de captura de vídeo, podendo utilizar uma que mais se familiariza, mas se não tiver indico esta: Atube Catcher

Grave todos os passos de uma transação qualquer.

Como instalar

Após o download execute o instalador e siga os passos para instalação.

Aceite os termos, em seguida click em avançar

Click em Concluir

Escolha o Idioma

Click na aba Screen Record

Escolha a área a ser gravada no botão (Traçar Área) e depois em iniciar

Suggest Edits

Considerações Finais

 

Envie os resultados obtidos em todas as sequências contidas neste Roteiro de Testes para a Cappta através do e-mail: homologa@cappta.com.br

Contatos equipe técnica:

Telefone direto: (11)4302-6179
WhatsApp 11 94315-2638
skype homologa.cappta | homologa.cappta1
e-mail: homologa@cappta.com.br