Para cancelar qualquer transação no SAFE, deve-se utilizar o seguinte método: CancelamentoGenerico
Nome | Tipo | Tamanho | Descrição |
numeroCartao | String | 19 | Número do Cartão a ser cancelado. Caso seja um cancelamento de Emissão ou Resgate de VT, deve-se passar o valor 7850000000000000000 |
valor | Double | 12,2 | Valor da transação que está sendo cancelada |
horaLocal | String | 6 | Representa a hora local do PDV Mascara: hhmmss |
dataLocal | String | 4 | Representa a data local do PDV Mascara: MMDD |
dataReferencia | String | 4 | Representa a data local do PDV Mascara: AAMM |
modoEntrada | Char | 3 | Modo de entrada da transação. 012 – Manual 022 - Magnético |
idTerminal | String | 8 | Identificação do Terminal. É composto da seguinte forma: 1 + LOJA – PDV Ex: 10001123 |
estabelecimento | String | 15 | Representa o código do estabelecimento.
ESTABELECIMENTO.CODIGO_ESTABELECIMENTO |
nsuSafe | String | 9 | NSU SAFE da Transação a ser cancelada |
doDataHora | String | 10 | Data Hora da transação original a ser cancelada. Máscara: MMDDHHMMSS |
numeroCupom | String | 6 | Número do cupom da transação de cancelamento. Deve-se completar com zeros a esquerda. |
matriculaFiscal | String | 6 | Número do fiscal que está realizando o resgate. Deve-se completar com zeros a esquerda. |
tipoIdentificacao | Char | 1 | 1 - Trilha 2 2 – CPF 3 – Matrícula 4 - Número do Cartão |
Nome | Tipo | Tamanho | Descrição |
CodigoResposta | String | 2 | Código de Resposta da Transação. Vide item “Códigos de Resposta” no documento |
NSUSafe | String | 9 | NSU SAFE da Transação |
MensagemPDV | String | 16 | Mensagem a ser exibida no terminal |
SaldoDisponivel | Double | 12,2 | -- DEPRECATED -- |
Cartao | String | 19 | Número do Cartão que foi cancelado |
Cartao | String | 19 | Número do Vale-Troca gerado |
TempoResposta | Numeric | 6 | Tempo de Resposta da Transação |
DataHoraTransacao | String | 10 | Data/Hora da Transação realizada. Máscara: MMDDHHMMSS |
<RespostaSAFE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://grupolinx.com.br/">
<CodigoResposta>00</CodigoResposta>
<NSUSafe>000073436</NSUSafe>
<MensagemPDV>TRANSAC APROVADA</MensagemPDV>
<SaldoDisponivel>0</SaldoDisponivel>
<Cartao>0000000000000000440</Cartao>
<TempoResposta>944</TempoResposta>
<DataHoraTransacao>0303110028</DataHoraTransacao>
</RespostaSAFE>
Para confirmar ou desfazer qualquer transação no SAFE, deve-se utilizar o seguinte método: ConfirmaDesfazGenerico
Nome | Tipo | Tamanho | Descrição |
valor | Double | 12,2 | Valor da transação que está sendo cancelada |
codigoEstabelecimento | String | 15 | Representa o código do estabelecimento. ESTABELECIMENTO.CODIGO_ESTABELECIMENTO. Completar com espaços a direita até 15 posições. |
codigoEmpresa | String | 5 | Representa o código da empresa. Ex: 00001 |
numeroLoja | String | 4 | Representa o número da loja. Deve-se completar com zeros a esquerda. Ex: Loja 1 deve ser passado 0001 |
pdv | String | 3 | Representa o número do PDV Deve-se completar com zeros a esquerda. Ex: PDV 22 deve ser passado 022 |
nsuSafe | String | 9 | NSU Safe da transação original |
horaLocal | String | 6 | Representa a hora local do PDV Mascara: hhmmss |
dataLocal | String | 4 | Representa a data local do PDV Mascara: MMDD |
isDesfazimento | Bool |
| Se enviar true, a transação será desfeita. Se enviar false, a transação será confirmada. |
Nome | Tipo | Tamanho | Descrição |
CodigoResposta | String | 2 | Código de Resposta da Transação. Vide item “Códigos de Resposta” no documento |
SaldoDisponivel | Double | 12,2 | -- DEPRECATED -- |
TempoResposta | Numeric | 6 | Tempo de Resposta da Transação |
<RespostaSAFE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://grupolinx.com.br/">
<CodigoResposta>00</CodigoResposta>
<SaldoDisponivel>0</SaldoDisponivel>
<TempoResposta>0</TempoResposta>
</RespostaSAFE>
| Código de Resposta | Descrição Relacionada ao Código | Mensagem Default para o Terminal |
| 00 | Aprovada, Transação executada | TRANSAC APROVADA |
| 03 | Estabelecimento Comercial Inválido | ESTAB INVLD - 03 |
| 05 | Cartão Inadimplente | PROBL CARTAO -05 |
| 06 | Erro (problema ocorrido na transação) | REFACA TRANS -06 |
| 08 | Transação inválida para o estabelecimento | TRANS INVLD - 08 |
| 12 | Transação Inválida | TRANS INVLD - 12 |
| 13 | Valor Inválido | VALOR INVLD - 13 |
| 14 | Cartão Inválido | PROBL CARTAO -14 |
| 15 | Instituição não Cadastrada | PROBL CARTAO -15 |
| 19 | Refaça a Transação | REFACA TRANS -19 |
| 22 | Plano inválido | PLANO INVLD - 22 |
| 25 | Registro não Encontrado | PROBL CARTAO -25 |
| 30 | Erro de formato | REFACA TRANS -30 |
| 38 | Cartão Sem Registro | PROBL CARTAO -38 |
| 39 | Número de Conta Inválido | CONTA INVLD - 39 |
| 41 | Cartão Sem Registro | PROBL CARTAO -41 |
| 43 | Cartão Sem Registro | PROBL CARTAO -43 |
| 51 | Saldo Insuficiente | SALDO INSUFIC-51 |
| 52 | Conta Corrente Não Cadastrada | PROBL CARTAO -52 |
| 54 | Não Autorizado - Cartão Vencido | PROBL CARTAO -54 |
| 55 | Senha Incorreta | SENHA INVLD - 55 |
| 56 | Cartão Sem Registro | PROBL CARTAO -56 |
| 57 | Transação não Permitida a esse Cliente | PROBL CARTAO -57 |
| 58 | Conta bloqueada para compra | BLOQ P/COMPRA-58 |
| 59 | Conta Irregular | CONTA IRREGUL-59 |
| 60 | Convênio Bloqueado | CONVENIO BLOQ-60 |
| 61 | Excedido Limite | EXCEDE LIMITE-61 |
| 65 | Excedido Freqüência | EXCEDE LIMITE-65 |
| 76 | Cartão Bloqueado | PROBL CARTAO -76 |
| 78 | Transação Cancelada | REFACA TRANS -78 |
| 79 | Transação Não Permitida Neste Ciclo | PROBL CARTAO -79 |
| 80 | Transação não existe | TRANS ORIG N ENC |
| 81 | Transação Estornada | REFACA TRANS -81 |
| 83 | Time-out | REFACA TRANS -83 |
| 84 | Log-on (Terminal Não aberto) | FALHA LOGON -84 |
| 86 | Transação Desfeita | REFACA TRANS -86 |
| 90 | Fechamento Contábil | REFACA TRANS -90 |
| 91 | Instituição Fora de Operação | REFACA TRANS -91 |
| 96 | Mal funcionamento do sistema | REFACA TRANS -96 |
| M9 | Data Inválida | REFACA TRANS -M9 |
| N0 | MAC Inválido | REFACA TRANS -N0 |
| N1 | Dados Inválidos | DADOS INVALD -N1 |
| N2 | Código de Processamento Inválido | REFACA TRANS -N2 |
| N3 | Transação já Cancelada | TRANS CANCEL -N3 |
| N9 | NSU Repetido | REFACA TRANS -N9 |
| R1 | Certificado de Garantia Estendida inexistente | CERT INEXIST |
| R2 | CPF difere do CPF associado do Certificado de GE | CPF N CONFERE |
| R3 | Certificado de Garantia Estendida já resgatado | CERTIF JA RESGAT |
| R4 | Certificado de Garantia Estendida já cancelado | CERTIF CANCELADO |
| SA | Vale Presente já está ativo | VALE JA ATIVO |
| SB | Vale Presente bloqueado | VALE BLOQUEADO |
| SP | Vale Presente com status “Pré-Cadastrado” | VALE PRE-CADASTR |
| SR | Vale Presente já resgatado (utilizado) | VALE RESGATADO |
| SX | Vale Presente cancelado | VALE CANCELADO |
| SE | Vale Presente vencido | VALE EXPIRADO |
| SC | Vale Presente excluído | VALE EXCLUIDO |
| SI | Vale Presente invalido | VALE INVALIDO |
| ST | Transação Inválida | TRANSAC INVALIDA |
| TN | Boleto ACOM inexistente | BOLETO INEXIST |
| TV | Boleto ACOM vencido | BOLETO VENCIDO |
| TI | Boleto ACOM inválido | BOLETO INVALIDO |
| TB | Boleto ACOM bloqueado | BOLETO BLOQUEADO |
| TC | Boleto ACOM já processado | BOLETO JA PROC |
| TP | Vale Presente pendente | VALE PENDENTE |
| GD | Validade do Vale Presente inválida | VALIDADE INVALID |
| GV | Valor do Vale Presente inválido | VALOR INVALIDO |
| GC | Vale Presente inválido | VALE INVALIDO |
| GN | Garantias não encontradas para o cod SAP informado | GARANT INEXIST |
| GI | Vale Presente inválido | VALE INVALIDO |
| V3 | MAC inválido | MAC INVALIDO |
| V4 | Vale-Troca não existe | VT NAO EXISTE |
| V5 | CPF inválido | CPF INVALIDO |
| V6 | Data de Nascimento inválida | DT NASC INVALIDA |
| V7 | Vale-Troca já utilizado | VT JA UTILIZADO |
| V8 | Vale-Troca vencido | VT FORA DO PRAZO |
| V9 | Cód Operado inválido | OPERADOR INVALID |
| VA | Vale-Troca pendente | VT PENDENTE |
| VB | Vale-Troca invalido | VT INVALIDO |
| VC | Cliente sem Vale-Troca emitido e não utilizado | CLIENTE SEM VT |
| VD | Etiqueta de Logistica Reversa já utilizada | ETIQ UTILIZADA |
| VE | Vale-Troca já cancelado | VT JA CANCELADO |
| VF | Quantidade de VT´s excede limite do Bit62 | QTD VALES EXCED |
| CO | Cartão de Convênio Vencido | CARTAO VENCIDO |
| BD | Problemas de processamento do banco do SAA | PROBL SAA BD |
| BO | Autorizador sem conexao com banco de dados | SAA S/ CONEX BD |
| C1 | Dados inválidos para pesquisa de Cuponagem | CUPONAGEM INVLD |
| C2 | Cliente sem Cuponagem a resgatar | SEM CUPONAGEM |
| TR | Boleto ACOM já pago | TITULO JA PAGO |
| R5 | Valor de Resgate de GE maior que o autorizado pela seguradora | VALOR INVALID-R5 |
| RN | Recarga de Cartão Presente não permitida | RECARGA N PERMIT |
Nome | Tipo | Tamanho | Descrição |
Produto | Tipo Complexo |
| Produto |
Planos | Tipo Complexo |
| Lista contendo os planos de garantia estendida / RF. |
Nome | Tipo | Tamanho | Descrição |
Tipo Bilhete | String | 2 | Tipo do bilhete (GE/RF) |
Cliente | Tipo Complexo |
| Representa o cliente que comprou a garantia |
ValorAutorizado | Double | 12,2 | Valor autorizado |
Cupom | String | 6 | Texto do cupom |
NsuCtf | NSU do CTF | 6 | 0 |
NsuSafe | NSU do SAFE | 9 | NSU retornado pelo SAFE Autorizador |
Garantia | Tipo Complexo |
| Representa a garantia vendida |
Nome | Tipo | Tamanho | Descrição |
CodigoAutorizacao | String | 10 | Senha de autorização fornecida pela seguradora |
NumeroCertificado | String | 15 | Número do Certificado de Garantia |
ValorAutorizado | Double | 12,2 | Valor autorizado |
Produto | Tipo Complexo |
| Produto
|
Nome | Tipo | Tamanho | Descrição |
CodigoInterno | String | 20 | Código Interno do Produto |
CodigoEAN | String | 20 | Código EAN do Produto |
Descricao | String | 80 | Descrição do Produto |
Marca | String | 15 | Marca do Produto |
GarantiaFabricante | String | 3 | Tempo dado de garantia pelo fabricante do produto |
DataHoraInclusao | String | 14 | Data / Hora da inclusão do produto no cadastro do SAFE. Formato: AAAAMMDDHHMMSS. |
Nome | Tipo | Tamanho | Descrição |
Id | String | 10 | Código do Plano |
Tipo | String | 20 | Tipo do Plano. Ex.: TROCA. |
Prazo | String | 3 | Prazo de garantia deste plano |
ValorVenda | Double | 12,2 | Valor de venda da garantia |
DataHoraInclusaoPlano | String | 14 | Data / Hora de inclusão do plano no cadastro do SAFE. Formato: AAAAMMDDHHMMSS. |
Ramo | Tipo Complexo |
| Ramo do plano |
CodigoTipoServico | String | 1 | Código do Tipo de Serviço |
DescricaoTipoServico | String | 25 | Descrição do tipo de serviço |
CodigoCategoria | String | 3 | Código da Categoria |
DescricaoCategoria | String | 100 | Descrição da Categoria |
CodigoTipoPlano | String | 2 | Código do Tipo de Plano |
DescricaoTipoPlano | String | 50 | Descrição do Tipo de Plano |
Nome | Tipo | Tamanho | Descrição |
Nome | String | 40 | Nome do cliente |
Endereco | String | 50 | Endereço do cliente |
Cidade | String | 20 | Cidade do cliente |
UF | String | 2 | UF do cliente |
CPF | String | 11 | CPF do cliente |
RG | String | 10 | RG do cliente |
Nome | Tipo | Tamanho | Descrição |
Certificado | String | 15 | Número do certificado de garantia |
DescricaoProduto | String | 38 | Descrição do produto vendido |
MesesGarantiaFabricante | String | 3 | Quantidade de dias que o fabricante dá de garantia |
Tipo | String | 20 | Tipo da garantia |
Inicio | String | 8 | Data de início da cobertura da garantia (AAAAMMDD) |
Fim | String | 8 | Data de fim da cobertura da garantia (AAAAMMDD) |
ValorGarantia | Double | 12,2 | Valor da garantia vendida |
ValorIOF | Double | 12,2 | Valor do IOF recolhido nesta venda |
PercentualRemuneracao | Double | 5,2 | Percentual de remuneração utilizado no cálculo |
ValorRemuneracao | Double | 12,2 | Valor da remuneração da garantia |
PercentualCusto | Double | 12,2 | Percentual de custo da garantia |
Nome | Tipo | Tamanho | Descrição |
Id | Integer |
| Código do Ramo |
Descrição | String | 50 | Descrição do Ramo |
Nome | Tipo | Tamanho | Descrição |
Código | String | 2 | Código da forma de pagamento |
Valor | Double | 12,2 | Valor da forma de pagamento |
CodigoAutorizadora | String | 2 | Código da autorizadora |
Parcelas | Integer | 2 | Quantidade de parcelas |
ValorParcela | Double | 12,2 | Valor de cada parcela |
Bin | String | 6 | Bin do cartão |
CodigoAprovacaoTEF | String | 6 | Código de aprovação do TEF |
NsuTEF | String | 6 | NSU gerado pelo TEF |
O cálculo leva em consideração 5 parâmetros:
-> Data sensibilização;
Data no formato AAAAMMDD
-> Número da loja;
Loja 4 numeros
-> Número do PDV;
PDV 3 numeros
-> NSU Sensibilização.
NSU 6 numeros
-> Valor da transação
Valor 12 numeros (ex.: 29,90, passar 000000002999)
Para fins didáticos, o cálculo será exemplificado com os seguintes parâmetros:
-> Data sensibilização;
20110707
-> Número da loja;
0001
-> Número do PDV;
244
-> NSU Sensibilização.
000000
-> Valor da transação
000000002999
Passo 1:
Soma os valores de:
-> Data sensibilização;
-> Número da loja;
-> Número do PDV;
-> NSU Sensibilização
20110707 + 0001 + 244 + 000000
Resultado: 20110952
Passo 2:
Divide o valor pago pelo número do PDV e trunca, obtendo a parte inteira dessa divisão.
000000002999 / 244
Resultado: 12,29098360655738
Porém, precisamos apenas da parte inteira.
Resultado = 12
Passo 3:
Soma o resultado do Passo 1 com o Passo 2
20110952 + 12
Resultado: 20110964
Passo 4:
Multiplica o valor do Passo 3 com a soma da Loja + NSU Sensibilização
20110964 * (0001 + 000000)
Resultado: 20110964
Passo 5:
Converte o resultado obtido Passo 4 em string e completa com zeros a esquerda até ficar com 4 posições, caso o resultado do Passo 4 seja menor que 4 dígitos. No nosso exemplo, o passo 4 tem tamanho 8, logo não é necessário completar com zeros a esquerda.
Passo 6:
Inverte a string obtida no Passo 5 e devolve os 4 primeiros bytes dela
Resultado: 46901102
MAC = 4690