CANCELAMENTO TEF

ANDSARAGIOTTO 03/08/2009 13:13:20
#318685
Caros amigos, estou desenvolvendo um sistema para TEF DISCADO com impressora bematech termica.
uso vb6.
baixei o exemplo do tef do site da bematech.
e tenho duas duvidas.
como fazer a programaçao para cancelamento de TEF ja concretizado? (CancelaTransacaoTEF)

e como fazer a rotina para consulta DE CHEQUES (Q é OBRIGATORIO PARA HOMOLOGAR)?
no aguardo.
mto obrigado
ANDSARAGIOTTO 04/08/2009 15:39:59
#318867
NINGUEM PODE ME AJUDAR?
RICART 04/08/2009 16:07:41
#318876
Amigo,
Eu nunca fiz isso, mas creio que no site do fabricante deve haver exemplos. Há inclusive um arquivo de ajuda com várias dicas. Vc pode ligar para o 0800(ou enviar e-mail) do suporte deles, que geralmente atendem muito bem os desenvolvedores.
LOOZE 04/08/2009 16:13:08
#318878
Segue abaixo função de cancelamento do cartão.
Utilize ela no caso de voce estar no meio da impressão do comprovante, no caso de queda de energia que é exigido ok.

  
[ô]////////////////////////////////////////////////////////////////////////////////
[ô]//
[ô]// Função:
[ô]// CancelaTransacaoTEF
[ô]// Objetivo:
[ô]// Cancelar uma transação já confirmada
[ô]// Parâmetros:
[ô]// String com o número de identificação (NSU)
[ô]// String com o valor da transação
[ô]// String com o valor da transação
[ô]// String com o nome e bandeira (REDE)
[ô]// String com o número do documento
[ô]// String com a data da transação no formato DDMMAAAA
[ô]// String com a hora da transação no formato HHSMMSS
[ô]// Integer com o número da transação
[ô]// Retorno:
[ô]// True para OK
[ô]// False para não OK
[ô]//
[ô]////////////////////////////////////////////////////////////////////////////////
Function CancelaTransacaoTEF(ByVal cNSU As String, ByVal cValor As String, ByVal cNomeRede As String, _
ByVal cNumeroDOC As String, ByVal cData As String, ByVal cHora As String, ByVal iVezes As Integer) As Boolean
Dim cConteudo As String
Dim iArquivo As Integer
Dim lFlag As Boolean

cConteudo = [Ô][Ô]
cConteudo = [Ô]000-000 = CNC[Ô] & vbCrLf & _
[Ô]001-000 = [Ô] & cNSU & vbCrLf & _
[Ô]003-000 = [Ô] & cValor & vbCrLf & _
[Ô]010-000 = [Ô] & cNomeRede & vbCrLf & _
[Ô]012-000 = [Ô] & cNumeroDOC & vbCrLf & _
[Ô]022-000 = [Ô] & cData & vbCrLf & _
[Ô]023-000 = [Ô] & cHora & vbCrLf & _
[Ô]999-999 = 0[Ô]
iArquivo = FreeFile
Open App.Path + [Ô]INTPOS.001[Ô] For Output As iArquivo

Print #iArquivo, cConteudo
Close iArquivo
FileCopy App.Path + [Ô]INTPOS.001[Ô], [Ô]C:TEF_DIALREQINTPOS.001[Ô]
MataArquivo (App.Path + [Ô]INTPOS.001[Ô])

While Dir([Ô]C:TEF_DIALRESPINTPOS.001[Ô]) = [Ô][Ô]
Sleep (1000)
Wend

MataArquivo ([Ô]C:TEF_DIALRESPINTPOS.STS[Ô])
FileCopy [Ô]C:TEF_DIALRESPINTPOS.001[Ô], [Ô]C:TEF_DIALRESPCANCEL[Ô] & CStr(iVezes) & [Ô].001[Ô]
MataArquivo ([Ô]C:TEF_DIALRESPINTPOS.001[Ô])

End Function






Mas caso deseje cancelar uma transação que ja esta realizada. Voce deve chamar o modulo ADM do TEF.



  

[ô]////////////////////////////////////////////////////////////////////////////////
[ô]// Função:
[ô]// FuncaoAdministrativaTEF
[ô]// Objetivo:
[ô]// Chamar o módulo administrativo da bandeira
[ô]// Parâmetro:
[ô]// String com o identificador
[ô]// Retorno:
[ô]// 1 para OK
[ô]// diferente de 1 para não OK
[ô]////////////////////////////////////////////////////////////////////////////////
Public Function FuncaoAdministrativaTEF(ByVal Identificacao As String) As Integer
Dim iArquivo As Integer
Dim lFlag As Boolean
Dim cConteudoArquivo As String

[ô]Conteúdo do arquivo intpos.001 para solicitar a transação TEF
cConteudoArquivo = [Ô][Ô]
cConteudoArquivo = [Ô]000-000 = ADM[Ô] & vbCrLf & _
[Ô]001-000 = [Ô] & Identificacao & vbCrLf & _
[Ô]999-999 = 0[Ô]
Call GravaArquivo_Binario(App.path + [Ô]intpos.001[Ô], cConteudoArquivo)

FileCopy App.path & [Ô]intpos.001[Ô], Campo_Requisicao & [Ô]intpos.001[Ô]
MataArquivo (App.path & [Ô]intpos.001[Ô])

[ô]CRIANDO A PASTA DE BACKUP DO TEF
Call CriaPasta([Ô]C:Backup TEF[Ô])
End Function






No caso de consulta CHEQUE
Criei o arquivo de requisição com a sigla CHQ
Segue um exemplo de como poderia fazer para criar os arquivos de requisi~ção. nesse caso passo o parametro desejado para a função.



Public Function Arquivo_Transacao(Optional Tipo As String, Optional CodIdentificacao As String, Optional Cupom As String, Optional Valor As String)
On Error Resume Next
Num_Transacao = Format(Date, [Ô]dd[Ô]) & Format(Time, [Ô]hhmmss[Ô])
Valor = Format(Valor, [Ô]##,##0.00[Ô])
Valor = Replace(Funcao.LimpaN(Valor), [Ô],[Ô], [Ô][Ô])

Texto = [Ô]000-000 = [Ô] & Tipo & vbNewLine
Texto = Texto & [Ô]001-000 = [Ô] & Num_Transacao & vbNewLine
Texto = Texto & [Ô]002-000 = [Ô] & Cupom & vbNewLine
Texto = Texto & [Ô]003-000 = [Ô] & Valor & vbNewLine
Texto = Texto & [Ô]999-999 = 0[Ô]

Set Arquivo = Ler.CreateTextFile(App.path & [Ô]intpos.001[Ô], True)
Call Arquivo.Write(Texto)
Arquivo.Close

[ô]Copia o arquivo para o diretório do Gerenciador Padrão
Call Ler.CopyFile(App.path & [Ô]intpos.001[Ô], Campo_Requisicao & [Ô]intpos.001[Ô], True)

[ô]Apaga o arquivo local
Call Ler.DeleteFile(App.path & [Ô]intpos.001[Ô], True)

[ô]Cria a pasta de backup dos arquivos
Call Funcao.CriaPasta([Ô]C:Backup TEF[Ô])

End Function
ANDSARAGIOTTO 15/08/2009 15:36:06
#319931
essa funçao ja me ajudou , mas como q eu utilizo ela?
primeiro eu a funçao CancelaTransacaoTEF depois eu chamo a funçao administrativa?
e a consulta de cheques é mesma coisa?
Tópico encerrado , respostas não são mais permitidas