Integração Multiplus Card

| 13 minutos

Objetivos

A TefClientMC.dll da Multiplus Card permite a integração de Automação Comercial com sistemas TEF Express e TEF Plus no modo interativo. A integração é feita por meio de chamadas a funções da DLL, sendo necessária a configuração adequada dos arquivos ConfigMC.ini e CliMC.ini.

A integração da DLL TefClientMC segue um fluxo bem definido:

  1. Iniciar uma transação TEF (IniciaFuncaoMCInterativo).
  2. Aguardar resposta em um loop (AguardaFuncaoMCInterativo).
  3. Integagir com informações conforme necessário (ContinuaFuncaoMCInterativo).
  4. Quando obtiver retorno Finalizar ou Cancelar a transação em andamento (FinalizaFuncaoMCInterativo / CancelarFluxoMCInterativo).
  5. Gerar relatórios ou reimprimir comprovantes conforme necessidade.

Requisitos do Sistema

Requisito Configuração Mínima Configuração Recomendada
SO Windows 7 SP1 ou superior Windows 10 ou superior
Hardware Intel Core i3, 3GB RAM, 1GB de espaço em disco Intel Core i3 ou AMD Ryzen 3, 4GB RAM, SSD de 1,5GB
Softwares NET Framework 4.5, Microsoft Visual C++ Redistributable (2015-2022) -

Instalação

  • A DLL e os arquivos de configuração devem estar na mesma pasta do executável do sistema.
  • O ClientD.exe deve ser executado no modo administrador.
  • Parâmetros do arquivo ConfigMC.ini:
CAMINHO=C:\ClientD
Porta=3
MensagemPadrao=MULTIPLUS CARD
ConfirmacaoAutomatica=SIM

Funções da DLL

unit TEF_Multiplus;

interface

uses
 Windows, SysUtils;

function IniciaFuncaoMCInterativo(iComando: Integer; sCnpjCliente: PChar; iParcela: Integer;
 sCupom: PChar; sValor: PChar; sNsu: PChar; sData: PChar; sNumeroPDV: PChar; sCodigoLoja: PChar;
 iTipoComunicacao: Integer; sParametro: PChar): Integer; stdcall; external 'TefClientMC.dll';

function AguardaFuncaoMCInterativo: PChar; stdcall; external 'TefClientMC.dll';

function ContinuaFuncaoMCInterativo(sInformacao: PChar): Integer; stdcall; external 'TefClientMC.dll';

function FinalizaFuncaoMCInterativo(iComando: Integer; sCnpjCliente: PChar; iParcela: Integer;
 sCupom: PChar; sValor: PChar; sNsu: PChar; sData: PChar; sNumeroPDV: PChar; sCodigoLoja: PChar;
 iTipoComunicacao: Integer; sParametro: PChar): Integer; stdcall; external 'TefClientMC.dll';

function CancelarFluxoMCInterativo: Integer; stdcall; external 'TefClientMC.dll';

implementation

end.

Fluxo Simples

program TEF_Transacao;

uses
   SysUtils, TEF_Multiplus;

var
  retorno: Integer;
  resposta: PChar;
  cnpj, cupom, valor, nsu, data, pdv, loja, parametro: PChar;
begin
   cnpj := '12345678000100';
   cupom := '000001';
   valor := '100,00';
   nsu := '123456';
   data := '20240115';
   pdv := '1';
   loja := '123';
   parametro := '';

   //Iniciar uma transação TEF
   retorno := IniciaFuncaoMCInterativo(1, cnpj, 1, cupom, valor, nsu, data, pdv, loja, 0, parametro);

   if retorno = 0 then
   begin
      //Aguardar resposta em um loop
      repeat
         resposta := AguardaFuncaoMCInterativo;
         if Pos('[RETORNO]', resposta) > 0 then
            Break;
         if Pos('[MENU]', resposta) > 0 then
            ContinuaFuncaoMCInterativo('1');
         if Pos('[PERGUNTA]', resposta) > 0 then
            ContinuaFuncaoMCInterativo('1234');
      until False;

      //Quando obtiver retorno Finalizar ou Cancelar a transação em andamento
      FinalizaFuncaoMCInterativo(98, cnpj, 1, cupom, valor, nsu, data, pdv, loja, 0, parametro);
   end
   else
      WriteLn('Erro ao iniciar transação: ', retorno);
end.

IniciaFuncaoMCInterativo

Esta função Inicia uma transação TEF.

Parâmetros da função IniciaFuncaoMCInterativo

Tipo Nome Descrição Valores Aceitos
INT iComando Comando para executar uma operação 4 - Venda Débito
20 - Venda Débito à Vista
1 - Venda Crédito
0 - Venda Crédito à Vista
2 - Venda Crédito Parcelado Loja
3 - Venda Crédito Parcelado Adm
11 - Venda Frota
18 - Venda Voucher
9 - Consulta saldo crédito
10 - Consulta saldo débito
15 - Pré Autorização
16 - Confirma Pré Autorização
17 - Cancela Pré Autorização
5 - Cancelamento
6 - Reimpressão
98 - Confirma Transação
99 - Desfaz Transação
110 - Limpeza de Tabelas
200 - Coleta de CPF
300 - Relatório de Transações
400 - Comprovante de Transação com POS
700 - Status da Transação
806 - Status do Pin Pad
807 - Informações do Pin Pad
STRING sCnpjCliente CNPJ do Cliente Apenas números
Ex.: 12345678000100
INT iParcela Número de Parcelas Qualquer número inteiro válido
Ex.: 12
STRING sCupom Número do cupom fiscal. Número com no máximo 6 caracteres
Ex.: 123456
STRING sValor Valor da transação Valor decimal utilizando vírgula como separador
Ex.: 100,00
STRING sNSU Número do NSU gerado pela frente de caixa Número inteiro com no máximo 6 caracteres
Ex.: 123456
STRING sData Data da transação Data no formato no formato yyyyMMdd
Ex.: 20211207
STRING sNumeroPDV Número do PDV que está realizando a transação Qualquer número identificador do PDV
Ex.: 001
STRING sCodigoLoja Código da Loja Fornecido pela Multiplus Card
INT iTipoComunicacao Parâmetro de comunicação Preencher com 0
STRING sParametro Preencher com uma string vazia "". "" caso não seja utilizado

Possíveis retornos

Como retorno a função pode ter os códigos da tabela abaixo, quando for 0 o fluxo continua.

Código Descrição do retorno
0 Retorno OK (função foi executada sem erros e o fluxo continua)
1 Erro genérico na execução
30 Não foi encontrado o caminho do ClientD.exe
31 ConfigMC.ini está vazio
32 ClientD.exe não encontrado
33 ClientD.exe não está em execução
34 Erro ao iniciar ClientD.exe
35 Erro interno do ClientD.exe
36 Erro interno do ClientD.exe
37 Erro na leitura do arquivo ConfigMC.ini
38 Valor da transação com formato incorreto
39 Executável de envio de transações não encontrado
40 CNPJ Inválido ou no formato incorreto
41 ClientD.exe está em processo de atualização
42 A automação não está sendo executada no modo administrador
43 ClientD.exe está em execução devido a uma transação anterior
44 Parâmetros ausentes em operação que utiliza o sParametro
45 Parâmetros no formato incorreto em operação que utiliza o sParametro
46 Erro ao identificar localização da DLL
47 Não Foi encontrada a localização da DLL
48 Não houve confirmação da conclusão da execução do ClientD
49 Número de parcelas inválido
52 Código de operação inválido para a função

AguardaFuncaoMCInterativo

Esta função é chamada repetidamente dentro de um loop enquanto aguarda resposta da transação em andamento.

Possíveis Retornos

Como retorno a função retorna uma string no seguinte formato, dependendo do estágio da transação:

Código Descrição do retorno
[MENU] Solicita a exibição de um menu para o operador.
[MSG] Retorna uma mensagem informativa.
[PERGUNTA] Solicita uma informação específica ao operador.
[RETORNO] Indica que a transação foi concluída.
[ERROABORTAR] Ocorreu um erro e a transação deve ser cancelada.
[ERRODISPLAY] Indica um erro na comunicação com o PinPad.

Esta função não possui parâmetros.

ContinuaFuncaoMCInterativo

Esta função envia uma resposta para continuar ou abortar uma transação TEF.

Parâmetros da função ContinuaFuncaoMCInterativo

Tipo Nome Descrição Valores Aceitos
STRING sInformacao Informação a ser enviada para continuar o fluxo da transação Resposta a uma pergunta.
Seleção de menu.
"ABORTAR" para cancelar a transação.

Possíveis retornos

Como retorno a função pode ter os códigos da tabela abaixo, quando for 0 o fluxo continua.

Código Descrição do retorno
0 Retorno OK (função foi executada sem erros e o fluxo continua)
1 Erro genérico na execução
35 Erro interno do ClientD.exe
36 Erro interno do ClientD.exe

FinalizaFuncaoMCInterativo

Esta função Finaliza e confirma a transação.

Tipo Nome Descrição Valores Aceitos
INT iComando Comando para executar uma operação 98 - Confirmar a transação
99 - Desfazer a transação
STRING sCnpjCliente CNPJ do Cliente Apenas números
Ex.: 12345678000100
INT iParcela Número de Parcelas Qualquer número inteiro válido
Ex.: 12
STRING sCupom Número do cupom fiscal. Número com no máximo 6 caracteres
Ex.: 123456
STRING sValor Valor da transação Valor decimal utilizando vírgula como separador
Ex.: 100,00
STRING sNSU Número do NSU gerado pela frente de caixa Retornado na tag [RETORNO] - CAMPO0133
STRING sData Data da transação Data no formato no formato yyyyMMdd
Ex.: 20240115
STRING sNumeroPDV Número do PDV que está realizando a transação Qualquer número identificador do PDV
Ex.: 001
STRING sCodigoLoja Código da Loja Fornecido pela Multiplus Card
INT iTipoComunicacao Parâmetro de comunicação Preencher com 0
STRING sParametro Preencher com uma string vazia "". "" caso não seja utilizado

Se a função não for chamada, a transação será automaticamente desfeita.

Para múltiplos cartões, o sNSU deve conter um * no final, exceto na última confirmação.

CancelarFluxoMCInterativo

Esta função Cancela a transação em andamento.

Cancelar transação

program TEF_Cancelamento;

uses
   SysUtils, TEF_Multiplus;

var
   retorno: Integer;
begin
   retorno := CancelarFluxoMCInterativo;
   if retorno = 0 then
      WriteLn('Transação cancelada com sucesso!')
   else
      WriteLn('Erro ao cancelar transação!');
end.

Relatório de Transações

Para obter um relatório, usa-se:

var
   retorno: Integer;
begin
   retorno := IniciaFuncaoMCInterativo(300, '12345678000100', 1, '1', '1,00', '1', '20240115', '1', '123', 0, 'DATAINICIO=01/01/2024;DATAFIM=15/01/2024');
end;

O retorno vem em CSV ou JSON e pode ser processado conforme necessário.

Campos

Campo Descrição Formato Conteúdos Válidos
000-000 HEADER
Indica o início do arquivo e o tipo de operação relacionada ao arquivo.
Alfanumérico de 3 bytes ATV – Verifica se o Gerenciador Padrão está ativo.
ADM – Administrativa.
REL – Relatório.
CRT – Cartão.
CEL – Recarga de Celular.
CNC – Cancelamento.
CNF – Confirmação de finalização da venda e impressão do cupom.
NCN – Não confirmação de finalização por desistência ou erro.
001-000 IDENTIFICAÇÃO
Indica o número de controle da solicitação que está sendo feita.
Numérico de até 10 bytes -
002-000 DOCUMENTO FISCAL VINCULADO
Número do documento fiscal vinculado à forma de pagamento ou finalização.
Numérico de até 12 bytes -
003-000 VALOR TOTAL
Valor total desta forma de pagamento.
Numérico de até 12 bytes Duas casas decimais sem separador de vírgula.
004-000 MOEDA
Indica a moeda utilizada na operação.
Numérico de 1 byte 0 – para Real
1 – para Dólar
009-000 STATUS DA TRANSAÇÃO
Indica se a transação foi aprovada ou recusada e qual o motivo.
Alfanumérico de até 3 bytes 0 – transação aprovada
Outro valor – transação negada
010-0X0 NOME DA REDE (OPERADORA/CREDENCIADORA)
Nome da rede que tratou a transação.
Alfanumérico de até 16 bytes CIELO, REDE, GETNET, BIN, STONE, etc.
010-0X1 CNPJ DA REDE (OPERADORA/CREDENCIADORA)
Informar o CNPJ da rede que tratou a transação.
Alfanumérico de até 14 bytes -
010-0X2 CÓDIGO SAT DA REDE
Informar o código SAT da rede que tratou a transação.
Alfanumérico de até 3 bytes -
011-00X TIPO DA TRANSAÇÃO
Código identificando o tipo da transação executada.
Numérico de até 2 bytes 00 – Administrativas – Outras (Reimpressão, Iniciação de Terminal etc.)
01 – Administrativa – Fechamento/Transmissão de Lote
10 – Cartão de Crédito à Vista
11 – Cartão de Crédito Parcelado pelo Estabelecimento
12 – Cartão de Crédito Parcelado pela Administradora
13 – Pré-Autorização com Cartão de Crédito
20 – Cartão de Débito à Vista
21 – Cartão de Débito Pré-Datado
22 – Cartão de Débito Parcelado
23 – Cartão de Débito à Vista Forçada
24 – Cartão de Débito Pré-Datado Forçada
25 – Cartão de Débito Pré-Datado sem Garantia
26 – Cartão de Débito Pré-Pago
27 – Cartão de Crédito Pré-Pago
30 – Outros Cartões
40 – CDC
41 – Consulta CDC
50 – Convênio
60 – Voucher
99 – Outras
012-00X NÚMERO DA TRANSAÇÃO - NSU
Indica o número de sequência (NSU – Número Sequencial Único) da transação atribuído pelo Host ou Automação Comercial para identificação da transação (cadastrada, confirmada, etc.).
Alfanumérico de 12 bytes -
013-00X CÓDIGO DE AUTORIZAÇÃO DA TRANSAÇÃO
Número de autorização da transação atribuído pelo Host. Cada transação TEF possui um código de autorização.
Alfanumérico de 6 bytes -
014-000 NÚMERO DO LOTE DA TRANSAÇÃO
Indica o número do lote de transação.
Alfanumérico de 10 bytes -
015-000 TIMESTAMP DA TRANSAÇÃO - HOST
Data e hora da transação processada pelo Host.
Numérico – DDMMHHMMSS -
016-000 TIMESTAMP DA TRANSAÇÃO - LOCAL
Data e hora da transação no ponto de venda (local).
Numérico – DDMMHHMMSS -
017-00X TIPO PARCELAMENTO
Indica o tipo de parcelamento aplicado à operação.
Numérico de 1 byte 0 – Parcelado pelo estabelecimento
1 – Parcelado pela administradora
018-00X QUANTIDADE DE PARCELAS
Indica o número de parcelas no caso de transações parceladas (Crédito ou Débito).
Numérico de até 2 bytes -
019-YYY DATA VENCIMENTO DA PARCELA
Indica a data em que foi agendada a parcela (YYY). Cada parcela é indicada pelos três caracteres (YYY), com valores como 001, 002, etc., para cada parcela definida no campo QUANTIDADE DE PARCELAS.
Numérico – DDMMYYYY -
020-YYY VALOR DA PARCELA
Indica o valor da parcela (YYY). Cada parcela é indicada pelos três caracteres (YYY), com valores como 001, 002, etc., para cada parcela definida no campo QUANTIDADE DE PARCELAS.
Numérico de até 12 bytes Duas casas decimais sem vírgula separadora.
021-YYY NÚMERO DA TRANSAÇÃO – NSU DA PARCELA
Indica o NSU da parcela (YYY). Cada parcela é indicada pelos três caracteres (YYY), com valores como 001, 002, etc., para cada parcela definida no campo QUANTIDADE DE PARCELAS.
Numérico de até 12 bytes -
022-000 DATA DA TRANSAÇÃO - COMPROVANTE
Indica a data da transação.
Numérico – DDMMYYYY -
023-000 HORA DA TRANSAÇÃO - COMPROVANTE
Indica a hora da transação.
Numérico – HHMMSS -
024-000 DATA PRÉ-DATADO
Contém a data de agendamento para pré-datado.
Numérico – DDMMYYYY -
025-000 NÚMERO DA TRANSAÇÃO CANCELADA - NSU
Número de sequência (NSU) da transação cancelada.
Numérico de até 12 bytes -
026-000 TIMESTAMP DA TRANSAÇÃO CANCELADA - HOST
Contém a data e hora da transação cancelada no Host.
Numérico – DDMMHHMMSS -
027-000 FINALIZAÇÃO
Dados recebidos do Módulo TEF que executou a transação e que devem ser devolvidos no comando de finalização de uma venda.
Alfanumérico de até 32 bytes -
028-000 QUANTIDADE DE LINHAS DO COMPROVANTE
Indica a quantidade de linhas do comprovante. Quando não há comprovante, o campo deve conter zero.
Numérico de até 3 bytes -
028-001 QUANTIDADE DE LINHAS DO 1º COMPROVANTE
Indica a quantidade de linhas do 1º comprovante (para configurações específicas no layout do TEF).
Numérico de até 3 bytes -
029-YYY IMAGEM DE CADA LINHA DO COMPROVANTE
Apresenta a imagem de cada linha do comprovante. A linha de impressão é indicada pelos caracteres (YYY), como 001, 002, etc., correspondendo à quantidade de linhas no campo anterior.
Alfanumérico de até 40 bytes -
030-000 TEXTO ESPECIAL OPERADOR
Texto que deve ser apresentado pelo aplicativo de Automação Comercial ao operador.
Alfanumérico de até 40 bytes -
031-000 TEXTO ESPECIAL CLIENTE
Texto que, quando presente, deve ser apresentado pelo aplicativo de Automação Comercial ao cliente.
Alfanumérico de até 40 bytes -
040-00X NOME DA ADMINISTRADORA (BANDEIRA)
Identifica a administradora do cartão utilizado.
Alfanumérico de até 12 bytes ELECTRON, MAESTRO, MASTERCARD, VISA, ELO, GOODCARD, VALECARD, etc.
740-00X NÚMEROS DO CARTÃO
Exibe o número do cartão que realizou a transação.
Numérico de 16 bytes 0000000000000000 a 9999990000009999
741-00X NOME DO PORTADOR DO CARTÃO
Exibe o nome do portador do cartão que realizou a transação.
Alfanumérico de até 20 bytes -
742-00X VALIDADE DO CARTÃO DO PORTADOR
Exibe o número de validade do cartão que realizou a transação.
Numérico de 4 bytes -
743-00X VALOR RESTANTE
Exibe o valor restante a ser pago quando utilizada a função de múltiplos cartões.
Numérico de até 12 bytes Duas casas decimais sem separador de vírgula
999-999 TRAILER - REGISTRO FINAL
Indica fim do arquivo.
Numérico de 1 byte – Constante zero -
999-999 TRAILER - REGISTRO FINAL
Indica fim do arquivo.
Numérico de 1 byte Constante zero
250-000 KM (Venda Frota) - -
250-001 Placa (Venda Frota) - -
250-002 Matrícula (Venda Frota) - -
261-000 Quantidade de Itens - -
261-011 Código do Produto (ITEM 01) - -
261-012 Descrição do Produto (ITEM 01) - -
261-013 Quantidade (3 Casas decimais) (ITEM 01) - -
261-014 Valor Unitário (3 Casas decimais) (ITEM 01) - -
261-015 Desconto (2 Casas decimais) - Venda Frota (ITEM 01) - -
261-016 Valor Total (2 Casas decimais) (ITEM 01) - -
261-021 Código do Produto (ITEM 02) - -
261-022 Descrição do Produto (ITEM 02) - -
261-023 Quantidade (3 Casas decimais) (ITEM 02) - -
261-024 Valor Unitário (3 Casas decimais) (ITEM 02) - -
261-025 Desconto (2 Casas decimais) - Venda Frota (ITEM 02) - -
261-026 Valor Total (2 Casas decimais) (ITEM 02) - -
261-XX1 Código do Produto (ITEM XX - Alterar o "XX" pelo número do item) - -
261-XX2 Descrição do Produto (ITEM XX - Alterar o "XX" pelo número do item) - -
261-XX3 Quantidade (3 Casas decimais) (ITEM XX - Alterar o "XX" pelo número do item) - -
261-XX4 Valor Unitário (3 Casas decimais) (ITEM XX - Alterar o "XX" pelo número) - -
261-XX5 Desconto (2 Casas decimais) - Venda Frota (ITEM XX - Alterar o "XX") - -
261-XX6 Valor Total (2 Casas decimais) (ITEM XX - Alterar o "XX" pelo número) - -
800-001 Tipo de Transação - 0 – Crédito
1 – Débito
2 – Private Label
3 – Débito CDC
4 – Link de Pagamento
5 – Pix
6 – Lista de Link de Pagamento
7 – Parcele Mais
800-002 Forma de Pagamento - 0 – À vista
1 – Parcelado
800-003 Tipo de Parcelamento - 0 – Parcelado ADM (juros cobrados do dono do cartão)
1 – Parcelado Loja (juros cobrados da loja)
800-004 Quantidade de Parcelas - -
800-005 CNPJ da Empresa - -
800-006 Equipamento de Finalização - 1 – Pinpad
2 – Cielo LIO
3 – PINPDV (SmartPOS)
800-007 Código de Controle da Transação - -
800-009 Texto Livre (Link de Pagamento) - -
800-010 Quantidade de Parcelas (Link de Pagamento) - -
800-011 Telefone com DDD (Link de Pagamento) - -
800-012 Texto Livre (Link de Pagamento) - -
800-013 Parâmetros Split (válido para Multiplus Pay) - -
800-014 Campo Livre Split (válido para Multiplus Pay) - -
Este artigo ajudou você?
 0
 0