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();
}
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 .