Integrando com o ControlPay

A integração

Uma transação cadastrada no ControlPay pode ser completada utilizando as plataformas acima descritas sem que seja preciso interagir individualmente com as diferentes respostas de cada sistema. O ControlPay cria uma camada de abstração destas integrações, fazendo com que você somente precise considerar as diferenças entre os “Fluxos de pagamento”. Fluxos de pagamento são compostos por workflows (ou processos, sequência de etapas) para realização de uma cobrança. Cada uma das diferentes plataformas usa um fluxo de pagamento. Diferentes plataformas, que usem o mesmo fluxo, podem ser utilizadas sem nenhuma mudança no fluxo e na integração com o Control Pay uma vez criada. Diferentes fluxos de pagamento exigirão diferentes ações, mas, como veremos adiante, nada muito complexo. Os fluxos de pagamento hoje disponíveis na plataforma são:

  • Pagamento sem confirmação;
  • TEF;
  • Gateway.

Para se integrar ao ControlPay e utilizar-se de suas funcionalidades você deve inicialmente compreender três coisas:

  • Os objetos;
  • As APIs;
  • Os processos.

Vamos passo a passo.


Os objetos

Objetos são capazes de armazenar informações através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos. No ControlPay, há centenas de diferentes tipos de objetos, mas poucos são relevantes para a integração de pagamentos. Para se integrar a todas as plataformas disponibilizadas através do ControlPay nós precisaremos de apenas 2 objetos. A “intenção de venda” e o “pagamento externo”. Todavia, estes objetos recebem outros objetos menores, mas importantes ao seu funcionamento. Eles são: a “forma de pagamento”, o “fluxo de pagamento”, o “terminal”, o “produto” e o “status”. Vamos analisar cada um destes objetos individualmente.


Intenção de venda (intencaoVenda)

É o mais importante objeto da nossa integração. Podemos considerar que ele é “a venda”. Toda vez que uma solicitação de operação financeira é enviada ao ControlPay, uma “intenção de venda” é criada (e um objeto intencaoVenda gerado no sistema). Vamos observar um exemplo de um objeto intencaoVenda e na sequência o avaliaremos.

Como pode ser visto no exemplo acima, um objeto intencaoVenda possui mais de 20 atributos, cada um contendo uma parte de informação relevante, referente à operação de venda criada na plataforma Control Pay. Rapidamente podemos reparar: identificador único da transação na plataforma ControlPay (id), valor (valorOriginal), valor em aberto (valorFinal), data e hora da criação da intenção de venda (data) e os objetos formaPagamento, terminal, pagamentoExterno, intencaoVendaStatus e produto.

É através do objeto intencaoVendaStatus, por exemplo, que identificamos o status atual da venda, ou, como chamamos, da “intenção de venda”.

CampoDescriçãoTipo
idO identificador único da intenção de venda no ControlPayInteiro
referenciaReferência da transação enviada pela automaçãoTexto
tokenToken reduzido de 6 dígitos gerado pelo ControlPay a cada venda. Tokens são únicos para transações em pagamentoInteiro
dataData da criação da intenção de venda. Formato: dd/mm/aaaa hh:MM:ss.ffffData/hora
horaHorário da criação da intenção de venda. Formato: hh:MM:ssHora
quantidadeQuantidade de produtos da vendaInteiro
valorOriginalValor total da intenção de venda, sem formataçãoInteiro
valorOriginalFormatValor total da intenção de venda, formatado para padrão brasileiro, com centavos após a vírgulaTexto
valorAcrescimoValor do acréscimo adicionado ao pagamento, utilizado para casos onde deseja-se separar um acréscimo à venda. Exemplo: 10% do garçominteiro
valorAcrescimoFormatValor do acréscimo, formatado para padrão brasileiro, com centavos após a vírgulaTexto
valorDescontoValor do desconto adicionado ao pagamento, utilizado para casos onde deseja-se separar o desconto à venda. Exemplo: 10% de desconto de alguma promoção específicaInteiro
valorDescontoFormatValor do desconto, formatado para padrão brasileiro, com centavos após a vírgulaTexto
valorFinalValor final da intenção de vendaInteiro
valorFinalFormatValor final, formatado para padrão brasileiro, com centavos após a vírgulaTexto
gate2allTokenToken gerado pelo GATE2all, retornado em casos de transação e-commerce. Representa a venda na plataforma GATE2allTexto
quantidadeParcelasQuantidade de parcelas da intenção de vendaInteiro
urlPagamentoEm intenções de venda do tipo e-commerce, a transação deve ser completada utilizando a URL retornada pelo GATE2all. O usuário deverá ser redirecionado para essa URL, onde ele informará os dados do cartão. Este ambiente é PCI-DSS e pode obter esses dados de forma seguraTexto
formaPagamentoObjeto que representa a forma de pagamento. Abaixo detalhes sobre esse objetoObjeto
terminalObjeto com informações do terminal. Nele são retornados o Id do terminal e uma descrição em textoObjeto
pagamentosExternosLista de Pagamentos externos associados a essa intenção de venda. Abaixo descrição desse objetoLista de Objeto
intencaoVendaStatusObjeto com informações do status da intenção de venda. Nele são retornados o Id do status e uma descrição em textoObjeto
clienteId do cliente associado à venda. O cliente (portador do cartão que completará a venda) pode ser cadastrado e associado à intenção de venda. Mandatório para transações de boleto e cartão de crédito digitado com cartão salvo na plataforma para ser utilizado na venda - forma de pagamento 51 e iniciarTransacaoAutomaticamente TrueInteiro
produtosLista de produtos associados à venda. Produtos podem ser cadastrado no ControlPay para que ele faça a gestão de prdoutos do estabelecimento, caso desejadoLista de Objeto
pedidoPedido no sistema ControlPay pai da intenção de venda. Um pedido pode ter várias intenções de venda. Uma intenção de venda pode ter apenas um pedido (ou nenhum) associado a elaInteiro

Vamos seguir adiante e entender os demais objetos.


Pagamento Externo (pagamentoExterno)

É, sem dúvidas, o segundo mais importante objeto desta integração. Para entender o que é um objeto pagamentoExterno devemos entender o que é um autorizador. Autorizador é a entidade que valida e verifica as informações enviadas na operação de pagamento. É do autorizador a responsabilidade de autorizar ou negar uma transação financeira. Uma intenção de venda precisa ser processada por um autorizador para que seja completada. O status de uma intenção venda é diretamente afetado pela resposta de um autorizador. Caso a transação seja processada por um adquirente (Bin, Cielo, Getnet, Rede e etc) o autorizador deste adquirente enviará informações relevantes sobre esta transação. Tais informações serão registradas num objeto pagamentoExterno e vinculado ao objeto intencaoVenda correspondente. Não é necessário interpretar o objeto pagamentoExterno para verificar se uma transação foi aprovada ou negada, o Control Pay fará isso pra você e refletirá tal status na intencaoVenda, mas se você precisa de informações retornadas pelo autorizador externo (como comprovante da transação, motivo de não aprovação da transação, dentre outros), você as encontrará neste objeto. Abaixo está um exemplo de pagamentoExterno.

Importante ressaltar que o atributo “respostaAdquirente” sempre refletirá a mensagem completa recebida do adquirente, logo, nenhuma informação é perdida ao utilizar-se a camada de abstração do Control Pay.

CampoTipoDescrição
idInteiroIdentificador único do Pagamento Externo
nsuTidAlfanuméricoÉ o código de NSU ou TID retornado pelo autorizador externo
autorizacaoAlfanuméricoÉ o código de autorização retornado pelo autorizador externo
adquirenteAlfanuméricoÉ o nome do autorizador externo
codigoRespostaAdquirenteAlfanuméricoÉ o código de resposta da transação, recebido do autorizador externo
mensagemRespostaAdquirenteAlfanuméricoÉ o texto a ser exibido ao operador, recebido do autorizador externo
dataAdquirenteDataHoraÉ a data e hora recebida do autorizador externo
respostaAdquirenteAlfanuméricoÉ a mensagem completa, recebida do autorizador externo, pela solução de captura
comprovanteAdquirenteAlfanuméricoÉ o comprovante da transação, recebido do autorizador externo (Comprovante "via única")
comprovanteEstabelecimentoAlfanuméricoÉ a via do estabelecimento do comprovante
comprovanteClienteAlfanuméricoÉ a via do cliente do comprovante
bandeiraAlfanuméricoÉ o nome da bandeira do cartão utilizado na transação (quando aplicável)
nomeTitularCartaoAlfanuméricoNome impresso no cartão utilizado na transação (quando aplicável)

Status (intencaoVendaStatus / pagamentoExternoStatus)

O objeto status dispensa apresentações. Seu propósito é informar o status do objeto no qual ele está inserido. O objeto status sempre terá dois atributos: id e nome. O “id” é um inteiro, usado para programação do workflow e o “nome” é um texto, para indicação visual do status. Abaixo estão exemplos de status tanto da intencaoVenda como do pagamentoExterno.


Forma de pagamento (formaPagamento)

Como o nome sugere, objetos formaPagamento armazenam as configurações da operação financeira a ser realizada. De todos os atributos existentes na forma de pagamento, um dos mais relevantes para a integração é o “fluxoPagamento”. É através dele que identificamos um diferente fluxo de operação. Embora você não tenha que interagir com cada uma das plataformas de pagamento e suas especificidades, há diferenças entre os fluxos de operação que devem ser administradas pela aplicação que se integra com o ControlPay. São opções válidas de uma forma de pagamento:

Estes diferentes fluxos são identificados como “fluxos de pagamento”. Um objeto formaPagamento tem "fluxoPagamento" como um de seus atributos. Objetos fluxoPagamento têm estrutura idêntica ao objeto status: id e nome.
Assim como no objeto status, o “id” é um inteiro, usado para programação do workflow e o “nome” é um texto, para indicação visual.
Abaixo tabela descrevendo os campos retornados pelo objeto FormaPagamento

CampoDescriçãoTipo
idO identificador da forma de pagamentoInteiro
nomeNome da forma de pagamentoTexto
ModalidadeDentro de uma forma de pagamento podemos ter algumas modalidades diferentes. Abaixo lista de formas de pagamento e descriçãoTexto
permiteParcelamentoIndica se a forma de pagamento permite parcelamento ou nãoBooleano
solicitaObsIndica se a forma de pagamento exige observaçãoBooleano
quantidadeMaximaParcelasQuantidade máxima de parcelas permitidaInteiro
isentoDeTarifaIndica se a forma de pagamento possui ou não tarifa. Apenas formas de pagamento onde o ControlPay realiza a liquidação do pagamento não são isentas de tarifa. A tarifa é aplicada ao gerar o arquivo de pagamento ao estabelecimento. Isso ocorre quando o ControlPay faz a gestão de pré-pagos, por exemplo, onde ele é responsável pelo pagamento ao lojista referente às vendas processadas no ControlPayBooleano
fluxoPagamentoObjeto que informa o fluxo de pagamento. Nele há o Id do fluxo e um nome descritivo.Objeto

Formas de pagamento existentes no ControlPay

Id: 11
POS - Crédito: Utilizado apenas para registro, em caso de venda com POS não integrado. O sistema apenas registra a venda e depois fera um relatório gerencial.

Id: 12
POS - Débito: Idem à forma acima, mas para débito.

Id: 13
POS - Voucher: Meramente informativo para vendas com POS na modalidade Voucher refeição/alimentação.

Id: 41
Dinheiro: Também meramente informativo para vendas feitas com dinheiro.

Id: 21
TEF - Crédito: Transação integrada à plataforma de pagamentos da PayGo. A transação transporta a modalidade até a plataforma de pagamento - Crédito.

Id: 22
TEF - Débito: Transação integrada, informando a modalidade Débito.

Id: 23
TEF - Voucher: Transação integrada, informando a modalidade Voucher.

Id: 24
TEF - Outros: Transação integrada, sem a modalidade transportada. A modalidade deverá ser informada no terminal de pagamento. Importante para modalidades diferentes de Crédtio, Débito e Voucher. Exemplo: QR Code, Private Label, etc.

Id: 25
TEF - Carteira Digital: Transação integrada, informando a modalidade Pix.

Id: 51
Link de pagamento Crédito: Transação de e-commerce, integrada ao GATE2all, na modalidade crédito. Uma URL é gerada e disponibilizada no retorno da Intenção de venda. Caso o cartão esteja tokenizado e solicitado o parâmetro iniciarTransacaoAutomaticamente como true, a transação é processada automaticamente já retornando o resultado - aprovada ou negada.

Id: 52
Link de pagamento Débito: Transação integrada ao GATE2all, na modalidade débito. Sempre será retornada a URL para o usuário finalizar a transação nela, de forma segura. Não é possível tokenizar um cartão de débito no momento.

Id: 53
Boleto: Também integrado ao GATE2all, onde uma URL é retornada com o boleto a ser disponibilizado ao usuário.


Os processos

O ControlPay pode trabalhar de duas diferentes maneiras gerindo o fluxo transacional: de modo ativo ou de modo receptivo.
Ambos os modos funcionam através do mesmo conjunto de API. Isso significa que quando um sistema se integra ao ControlPay, encontra-se pronto para utilizar tanto o modo ativo como o receptivo.

A seleção de modo depende apenas do valor ("true" ou "false") do campo "aguardaTEFinicartransacao", no web service "Venda/Vender". Caso este campo receba o valor "true", o ControlPay estará operando no modo ativo; caso o valor enviado seja "false", o modo receptivo é acionado.


Modo ATIVO

Neste modo as transações enviadas ao ControlPay (via web service "Venda/Vender") são automaticamente "empurradas" ao TEF instalado no PDV correspondente. Caso o TEF não possa ser acionado, o objeto "intencaoVenda" expirará automaticamente. O tempo total de espera para que o TEF possa receber essa transação é de 20 segundos, logo, quando esta API é acionada desta forma, o tempo de resposa (caso o TEF não esteja ativo) pode chegar a este valor.

Abaixo podemos ver o fluxo de mensagens deste modelo:

📘

PayGo Windows

No desenho acima, o ControlPay Cliente foi substituído pelo PayGo Windows, mas ainda funciona exatamente da mesma maneira.

Neste modo, o parâmetro iniciarTransacaoAutomaticamente deve ser enviado como True, que fará com que o ControlPay envie a transação até o terminal indicado e retornará o status da intenção de venda, que indicará o sucesso ou não do acionamento no terminal


Modo RECEPTIVO

No modo receptivo as transações cadastradas no ControlPay são armazenadas, mas nenhum sistema de pagamento é automaticamente acionado. Para que a transação seja iniciada, esta deve ser consultada pelo terminal de pagamentos.

O fluxo abaixo demonstra este processo:

📘

PayGo Windows

No desenho acima, o ControlPay Cliente foi substituído pelo PayGo Windows, mas ainda funciona exatamente da mesma maneira.