Iterando sobre uma operação de pagamento ou administrativa
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.
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 consultar a sessão Implementações da interface IIteracaoTef
Updated over 6 years ago