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:
IniciaFuncaoMCInterativo
).AguardaFuncaoMCInterativo
).ContinuaFuncaoMCInterativo
).FinalizaFuncaoMCInterativo
/ CancelarFluxoMCInterativo
).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) | - |
CAMINHO=C:\ClientD
Porta=3
MensagemPadrao=MULTIPLUS CARD
ConfirmacaoAutomatica=SIM
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.
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.
Esta função Inicia uma transação TEF.
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 |
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 |
Esta função é chamada repetidamente dentro de um loop enquanto aguarda resposta da transação em andamento.
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.
Esta função envia uma resposta para continuar ou abortar uma transação TEF.
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. |
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 |
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.
Esta função Cancela a transação em andamento.
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.
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.
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) | - | - |