Pin pad Gertec PPC 910

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pin pad Gertec PPC 910

Mensagem por JoséQuintas »

Desisto, fiz 200 compilações, coloquei tirei, mas a função DLLCALL não está sendo localizada
Isso é coisa do xHarbour, se é que no xHarbour existe.

No Harbour 3.2 e 3.4, tem aquela xhb.hbc, que é LIB de compatibilidade com xHarbour.
Lá tem uma CallDll(). NÃO USE ESSA, pelo que dá pra ver, nem no xHarbour gostam do que é do xHarbour.

No Harbour 3.2 e 3.4 tem hb_DyCall(), função no core do Harbour, pra Windows ou Linux.

No Harbour 3.2 tem CallDll32() que no Harbour 3.4 foi renomeada pra CallDll() em hbmisc.hbc

Como exemplo de uso de DLL, a do RMChart pode ser interessante quando se tem muitas funções na DLL.

Código: Selecionar todos

CREATE CLASS RmChart

   VAR    nHandle

   METHOD New()                            INLINE ::nHandle := hb_libLoad( "RMChart.dll" ), SELF
   METHOD Destroy()                        INLINE hb_libFree( ::nHandle )
   METHOD AddBarSeries(a,b,c, ... )        INLINE ::CallDllStd( "RMC_ADDBARSERIES", a, b, ::ToDouble( c ), ... )
   METHOD CallDllStd( cName, ... )         INLINE hb_DynCall( { cName, ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
   END CLASS
Trata-se apenas de carregar a DLL, liberar no final, e montar as chamadas à DLL.
O IMPORTANTÍSSIMO é que os tipos passados/retornados tem que ser compatíveis, senão é GPF.

Se no xHarbour não der pra fazer igual, tão perdendo tempo com ele.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Pin pad Gertec PPC 910

Mensagem por esbasso »

Esta confundindo
Eu postei o exemplo do TEF em xHarbour
Quem não está conseguindo fazer é o que usa o Harbour

Tenho todas as funções do RMCHart no xHarbour e funciona muito bem

No caso do Sitef não tem nenhum problema com os parâmetros ao contrario do RMChart que é preciso converter alguns.
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

:-o
Bom dia, no caso estou tentando pegar o exemplo do Basso que está em Xharbour e compilar com o Harbour 3.2 que vem junto com a Minigui Extend usando Brmake, minha intensão era criar um pequeno aplicativo como exemplo de uso para disponibilizar aos colegas já que consegui um PinPad emprestado, tenho somente 40 dias para devolve-lo e estou correndo para criar, testar e disponibilizar algum material INEDITO sobre TEF pois não localzei nada que realmente ajude quem está começando, se conseguirem compilar o exemplo do Basso em Harbour 3.2 disponibilizem os fontes que vou migrar para Minigui Extend ok.
8-|
HASA
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pin pad Gertec PPC 910

Mensagem por JoséQuintas »

Esta confundindo
Eu postei o exemplo do TEF em xHarbour
Quem não está conseguindo fazer é o que usa o Harbour
Tenho todas as funções do RMCHart no xHarbour e funciona muito bem
No caso do Sitef não tem nenhum problema com os parâmetros ao contrario do RMChart que é preciso converter alguns.
Então em Harbour, que pode ser ajustado pra xHarbour, igual do RMChart:
(Fiz agora, pode conter erros, é bom confirmar)

Código: Selecionar todos

CREATE CLASS TefDllClass

   VAR    nHandle

   METHOD New()                      INLINE ::nHandle := hb_libLoad( "CliSiTef32i.dll" ), SELF
   METHOD Destroy()                  INLINE hb_libFree( ::nHandle )
   METHOD Configura( ... )           INLINE ::CallDllStd( "ConfiguraIntSiTefInterativoEx", ... )
   METHOD Inicia( ... )              INLINE ::CallDllStd( "IniciaFuncaoSiTefInterativo", ... )
   METHOD Continua( ... )            INLINE ::CallDllStd( "ContinuaFuncaoSiTefInterativo", ... )
   METHOD Finaliza( ... )            INLINE ::CallDllStd( "FinalizaTransacaoSiTefInterativo", ... )
   METHOD KeepAlive()                INLINE ::CallDllStd( "KeepAlivePinPad", ... )
   METHOD Escreve( ... )             INLINE ::CallDllStd( "EscreveMensagemPermanentePinPad", ... )
   METHOD LeTrilha( ... )            INLINE ::CallDllStd( "LeTrilha3", ... )
   METHOD LeCartao( ... )            INLINE ::CallDllStd( "LeCartaoSeguro", ... )
   METHOD LeSenha( ... )             INLINE ::CallDllStd( "LeSenhaDireto", ... )
   METHOD LeSimNaoPinPad( ... )      INLINE ::CallDllStd( "LeSimNaoPinPad", ... )
   METHOD CallDllStd( cName, ... )   INLINE hb_DynCall( { cName, ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
   END CLASS
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pin pad Gertec PPC 910

Mensagem por JoséQuintas »

Lembrando que o HBMK2 tem a opção de pesquisar em tudo que é LIB...

Dá pra ver HMG_CallDll() na HMG Extended, OOHG, HMG3 e "talvez" CallFunc() na HWGui
E tem até __fox_DynCall() na hbfoxpro.hbc e DllCall() em hbxpp.hbc
Além das que já mencionei, CallDll(), CallDll32(), e hb_DynCall()
A preferência é sempre pra funções do núcleo do Harbour.
hbmk2.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Pin pad Gertec PPC 910

Mensagem por janio »

Cliente Modular?
mas qual seria o teu homologador?
SOFTWARE EXPRESS?
Não vi este tipo de opção, somente pela DLL
Basso!

Minha homologadora eh a SOFTWARE EXPRESS, e faço através da SkyTEF.

Sim, existe o CLIENTE MODULAR que funciona exatamente como o ACBrMonitor. Vc fica trocando arquivos TEXTO com ele. Cria o comando numa pasta, e espera o retorno em outra pasta. MUUUUUITO FACIL. O monitor deles (Sitef) fica rodando escondido no tray.

Eu achei muuuuuito mais facil e simples do que com a dll. Desenvolvi em poucos dias.

Eh so vc pedir o material pra fazer pelo cliente modular q eles te mandam sem problema. Inclusive acabaram de me mandar pq vou precisar re-homologar para impressora nao fiscal.

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

Janio, abusando só um pouquinho tens um pequeno demo com acbr ?
:)´
HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

:-O
- Jânio inclusive no fórum do acbr não localizo nada a respeito acredito que sua ajuda possa ser muito valiosa.

- Veja no link abaixo outro colega procurando por informações:

http://www.projetoacbr.com.br/forum/top ... ent-210500

8-|
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Pin pad Gertec PPC 910

Mensagem por janio »

Hasa,

Nao uso ACBr para o TEF. Faço na unha mesmo. O que eu disse foi que o uso do CLIENTE MODULAR é SEMELHANTE ao uso do ACBr, ou seja, vai arquivo e vem arquivo (troca).

Aliás, não ha necessidade de ficar 'amarrado' ao acbr para isso hehehe

O uso é simples:
ComandoTEF( { "000-000 = CRT" ,;
"001-000 = " + nIdentifiTEF ,;
"002-000 = " + AllTrim(Str(vNUMCOO)) ,;
"003-000 = " + AllTrim( Trans( vValorTEF, '@E 999999999.99' ) ) ,;
"004-000 = 0" ,;
"210-084 = " + "CRIASOFT10" ,;
"701-034 = 4" ,;
"999-999 = 0" } )

If !VerificaArqStatusTef()
msg("tef nao responde")
Return .f.
Endif
Vc manda um arquivo e aguarda a resposta dele. Simples
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

:{ :)Pos

- Captei, estou bem no inicio e vendo para onde a maré vai me levar não decidi ainda, troca de arquivos, dll, e o que pintar vou testando, valeu mesmo por essa dica de start, se mais alguem utilizar outro modo de comunicar-se com a SiTef agradeço qualquer dica.
:{

HASA
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Pin pad Gertec PPC 910

Mensagem por janio »

Hasa,

Ha dois anos eu tambem estava perdido qndo precisei implementar isso 'pra ontem' num cliente. A demora foi entender como tudo funciona! Depois q entendi o processo, foi rapido.

Com cliente modular eu fiz em menos de uma semana. E mais: em mais de 2 anos de uso, nunca tive um so problema com TEF. O negocio eh bem feito.

Eu fiz parceria com a SkyTEF, eles passaram um roteiro e os arquivos necessários. Duvidas fui tirando com eles...

Se interessar fazer pelo cliente modular, posso passar as funções q fiz para troca de arquivos...

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

:)) :D

Jânio, como disse meu barquinho não chegou em lugar algum, com esse seu depoimento acima de a 2 anos não ter tido problemas me animou muuuiiiitttooo já que estou rodando no meio desse lago, se jogares a boia agradeço.
:-´ :-Y
HASA
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Pin pad Gertec PPC 910

Mensagem por janio »

Código: Selecionar todos

PhTEF     := 'C:\Client'
PhTEFreq  := 'C:\Client\Req\'
PhTEFres  := 'C:\Client\Resp\'

TefReq       := 'IntPos.001'
TefRes       := 'IntPos.001'
TefTmp      := 'IntPos.TMP'
TefSts       := 'IntPos.Sts'

Function ComandoTEF( VET_PARAM, ESPERA )
Local RET_IMP, REQ, RESP, TEMPOR, TINI, tFIM, Tef_Handle, BYTES, I, TIPO_PARAM

DEFAULT VET_PARAM   to {} ,;
        ESPERA      to 3600

REQ    := PhTEFreq + TefReq
RESP   := PhTEFres + TefRes
TEMPOR := PhTEFreq + TefTmp

// apaga requisição anterior
tFIM := seconds() + 3
Do while hb_FileExists( REQ )

	fErase( TEMPOR )
	
	If fErase( REQ ) = -1
   	If (seconds() > tFIM)
   	   RET_IMP := 'ERRO: Nao foi possivel apagar o arquivo: ('+REQ+') '+;
         ErrorOsMessage(ferror())
      Else
         millisec(20)
      EndIf
   EndIf
      
Enddo

Tef_Handle := FCreate( TEMPOR ) 

For I := 1 to Len(VET_PARAM)

	fWriteLine( Tef_Handle, VET_PARAM[I] ) 

Next

fClose(Tef_Handle) 
Millisec(100)

Do while Empty(RET_IMP)

	If fRename(TEMPOR, REQ) = -1
		RET_IMP := 'ERRO: Nao foi possivel renomear ('+TEMPOR+') para ('+REQ+') '+;
		ErrorOsMessage(ferror())
	EndIf

Enddo

Return .t.

Function CriaArquivoIniTef( VET_PARAM )
Local Tef_Handle

DEFAULT VET_PARAM   to {}

Tef_Handle := FCreate( ArquivoTef ) 

For I := 1 to Len(VET_PARAM)

	fWriteLine( Tef_Handle, VET_PARAM[I] ) 

Next

fClose(Tef_Handle) 
Millisec(50)

Return .t.

Function VerificaArqStatusTef
Local Espera := 32
Local lRet := .f.

Do while Espera >= 0
	If hb_FileExists( ArqStatusTef )
		lRet := .t.
		Exit
	Endif

	Millisec(250)
	Espera--
Enddo
Return lRet
O processo é o seguinte:
1-) Cria o arquivo ('IntPos.001') de REQUISIÇÃO em 'C:\Client\Req\' (PhTEFreq)
2-) Espera o arquivo ('IntPos.001') de RESPOSTA do Sitef em 'C:\Client\Resp\' (PhTEFres)
3-) Deu algo errado? Volta pra tela pra o usuario escolher outra forma de pagamento ou outro cartao, etc...
4-) Recebeu a resposta de aprovação? Segue o processo (gravacao de dados em banco, etc) e IMPRIME a resposta do Sitef tal qual ela veio (com todos os dados da transação)
5-) No meio da impressao dos comprovantes deu problema (faltou papel, energia)? Exibe msg para o usuario CONTINUAR TENTANDO ou DESISTIR DA IMPRESSÃO
6-) Conseguiu imprimir? Manda comando de CONFIRMAÇÃO DA TRANSAÇÃO! Enquanto vc não enviar esse comando, a transação (apesar de aprovada) está PENDENTE!
7-) Não conseguiu imprimir? Manda comando de CANCELAMENTO DA TRANSAÇÃO e, se for o caso, inicia tudo de novo

Importante1: A transação TEF não está ok quando vc recebe a msg de aprovação da bandeira. A transação TEF somente de fato eh realizada quando vc consegue imprimir os comprovante e manda comando de confirmação da transação

Importante2: O que colocar nos comandos, de transação ou cancelamento, por exemplo? É so seguir o manual que la eles dizemos o que deve conter em cada

Importante3: No momento que vc envia comando de TRANSAÇÃO, o Sitef assume o barco e a interface dele é aberta. Daí o usuario vai respodendo ao Sitef aquelas costumeiras perguntas: Credito ou Debito? Quantas parcelas?, etc... Enquanto isso vc ta la parado aguardando a criaçao do arquivo de resposta. É o que nos resta fazer kkkkk. O que vc tem que fazer eh mandar o arquivo de requisição e esperar o arquivo de resposta. O restante é com o Sitef
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

:-Y X:)
Nossa parece bastante informação para digerir, mas... vou tentar, valeu mesmo.
Sucesso.
:{
HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Pin pad Gertec PPC 910

Mensagem por HASA »

:%
Jânio o que você sugere que eu grave da trasação tef, Ex: número da transação imagino e MAIS...
HASA
Responder