hbssl.lib hbcur.lib para xharbour?
Moderador: Moderadores
-
joaoalpande
- Usuário Nível 2

- Mensagens: 93
- Registrado em: 24 Fev 2005 09:04
- Localização: CAMPO GRANDE / MS
hbssl.lib hbcur.lib para xharbour?
Boa Tarde,
Alguém tem a hbssl.lib hbcur.lib para xharbour?
cumprimentos
João Alpande
Alguém tem a hbssl.lib hbcur.lib para xharbour?
cumprimentos
João Alpande
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
hbssl.lib hbcur.lib para xharbour?
Quando se trata de LIB pra intercâmbio de DLL, é usar um utilitário pra gerar a LIB.
Se não me engano, é IMPLIB, faz parte do compilador C.
Se não me engano, é IMPLIB, faz parte do compilador C.
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/
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/
-
joaoalpande
- Usuário Nível 2

- Mensagens: 93
- Registrado em: 24 Fev 2005 09:04
- Localização: CAMPO GRANDE / MS
hbssl.lib hbcur.lib para xharbour?
Boa Tarde ,
Obrigado pela resposta , fiz isso mas depois ao compilar dá muitos erros unresolved external _cur_global_init , _curl_...
Compilo com xharbour1.2.1 bcc582
Cumprimentos
João ALpande
Obrigado pela resposta , fiz isso mas depois ao compilar dá muitos erros unresolved external _cur_global_init , _curl_...
Compilo com xharbour1.2.1 bcc582
Cumprimentos
João ALpande
-
joaoalpande
- Usuário Nível 2

- Mensagens: 93
- Registrado em: 24 Fev 2005 09:04
- Localização: CAMPO GRANDE / MS
hbssl.lib hbcur.lib para xharbour?
Bom dia ,
Tenho um exemplo feito em Harbour a funcionar com estas lib´s , mas preciso em xharbour , alguém pode ajudar-me , posso enviar as fontes do teste que fiz em harbour?
Cumprimentos
João Alpande
Tenho um exemplo feito em Harbour a funcionar com estas lib´s , mas preciso em xharbour , alguém pode ajudar-me , posso enviar as fontes do teste que fiz em harbour?
Cumprimentos
João Alpande
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
hbssl.lib hbcur.lib para xharbour?
Olá João,
Coloque seu exemplo. Talvez seja possivel usar outra classe do xHarbour para os comandos que você precisa. Vendo o exemplo fica mais fácil opinar.
Coloque seu exemplo. Talvez seja possivel usar outra classe do xHarbour para os comandos que você precisa. Vendo o exemplo fica mais fácil opinar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
joaoalpande
- Usuário Nível 2

- Mensagens: 93
- Registrado em: 24 Fev 2005 09:04
- Localização: CAMPO GRANDE / MS
hbssl.lib hbcur.lib para xharbour?
obrigado pela rápida resposta , ai está o código
Código: Selecionar todos
#include "hbclass.ch"
#include "hbcurl.ch"
#include "hbssl.ch"
#define TRUE 1
#define FALSE 0
#define LOCAL_FILE "test1"
#define UPLOAD_FILE_AS "while-uploading.txt"
#define REMOTE_URL "ftp://localhost/"+UPLOAD_FILE_AS
#define RENAME_FILE_TO "renamed-and-fine.txt"
#define CURL_GLOBAL_SSL (1<<0)
#define CURL_GLOBAL_WIN32 (1<<1)
#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
#define CURL_GLOBAL_NOTHING 0
#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
#xcommand TEXT INTO <v> => #pragma __text|<v>+=%s+HB_OSNEWLINE();<v>:=""
REQUEST __HBEXTERN__HBSSL__
FUNCTION main()
LOCAL e, l
//SetMode(30,80)
e := EnvioDocumentoTransporte():new()
e:user := "123456789/1"
e:senha := "Password "
e:datasistema := hb_DateTime()
e:contribuinte := "505422824"
e:nome := "Infor Pires Lda"
e:morada := "Sitio do Alem, 846-A"
e:cidade := "Almancil"
e:codPostal := "8135-011"
e:pais := "PT"
e:docId := "GT A1/52314"
// e:AtDocCodeId := "999999999" // se guia já comunicada, para reenviar como anulada ?
e:estado := "N" // estado : (N)ormal (T)erceiros (A)nulada
e:dataDoc := Date()
e:tipoDoc := "GT" // GR/GT/GA/GC/GD
e:clienteNif := "199530491"
//e:FornecedorNif := "999999990" // ???? NÂO PERCEBI A QUE RAIO SE DESTINA
e:clienteNome := "Nelson Pires"
e:clienteMorada := "Desconhecido"
e:clienteCidade := "Faro"
e:clienteCodPostal:= "8000-000"
e:clientePais := "PT"
e:descargaMorada := "Ali"
e:descargaCidade := "Desconhecido"
e:descargaCodPostal := "8000-000"
e:descargaPais := "PT"
e:cargaMorada := "Aqui"
e:cargaCidade := "Desconhecido"
e:cargaCodPostal := "8000-000"
e:cargaPais := "PT"
e:fimCarga := "2013-05-25T09:00:00"
e:inicioCarga := "2013-05-25T09:00:00"
e:matricula := "00-XX-00"
l := LinhaDocumentoTransporte():new()
//l:adicionaReferencia("VD A/20001") // TEM QUE REFERIR UM JA EXISTENTE, SENÃO ERRO VALIDACAO
//l:adicionaReferencia("VD A/20002")
l:descricao := "Produto da linha 1"
l:quantidade := 100
l:unidade := "KG"
l:precoUnitario := 5.25
e:adicionaLinha(l)
l := LinhaDocumentoTransporte():new()
//l:adicionaReferencia("VD A/20003")
l:descricao := "Produto da linha 2"
l:quantidade := 10
l:unidade := "UN"
l:precoUnitario := 1.25
e:adicionaLinha(l)
e:certificado("Certificado.pfx")
e:chavePublica("chavePublicaAT.cer")
e:ldebug := .T.
cls
@1,1 say "User Financas :" get e:user
@2,1 SAY "Pass Financas :" get e:senha
@3,1 say "Contribuinte :" get e:contribuinte
@4,1 say "Nº Guia.......:" get e:docid
@5,1 say "Incio Transp..:" get e:inicioCarga
@6,1 say "Fim Transporte:" get e:fimCarga
READ
e:enviaGuia()
IF e:resultado==0
? "Doc. "+ e:resultadoDocNum +" Inserido com exito"
? "Código AT : "+ e:resultadoDocIdAT
else
? "Erro a submeter documento : ", Str(e:resultado)
? e:resultadoTXT
endif
? e:resultadoTXT
Inkey(0)
return
CLASS EnvioDocumentoTransporte
var user as STRING
var senha as STRING
var datasistema
var contribuinte as string
var nome as string
var morada as string
var cidade as string
var codPostal as string
var pais as string
VAR atDocCodeId AS STRING INIT NIL
var docId as string
VAR estado as CHAR
VAR dataDoc as DATE
VAR tipoDoc as string
VAR clienteNif as string
VAR clienteNome, clienteMorada, clienteCidade, clienteCodPostal, clientePais as string
VAR descargaMorada, descargaCidade, descargaCodPostal, descargaPais as string
VAR cargaMorada, cargaCidade, cargaCodPostal, cargaPais as string
VAR inicioCarga, fimCarga, matricula as string
VAR certificado, chavepublica
VAR resultado INIT -999
VAR resultadoTxt INIT ""
VAR resultadoDocNum INIT ""
VAR resultadoDocIdAT INIT ""
DATA nOnce HIDDEN
DATA linhas HIDDEN INIT {}
DATA xmlOut INIT ""
DATA lDebug INIT .F.
DATA cUrl
DATA aesKey
DATA cryptedPassword INIT ""
DATA cryptedDate
METHOD new()
METHOD adicionaLinha(linhaDoc)
METHOD enviaGuia()
METHOD pwd()
METHOD buildXML()
METHOD gen_Crypt()
ENDCLASS
// ------------------------------------------------------------------
METHOD new() CLASS EnvioDocumentoTransporte
RETURN SELF
// -------------------------------------------------------------------
METHOD adicionaLinha(linhadoc) CLASS EnvioDocumentoTransporte
AAdd(::linhas,linhaDoc)
RETURN
// -------------------------------------------------------------------
METHOD pwd() CLASS EnvioDocumentoTransporte
RETURN
METHOD enviaGuia() CLASS EnvioDocumentoTransporte
::buildxml()
RETURN
// -------------------------------------------------------------------
METHOD buildXML() CLASS EnvioDocumentoTransporte
LOCAL n,i,nLinhas, oLine
nLinhas := Len(::linhas)
::gen_crypt()
::xmlOut := '<?xml version="1.0" encoding="utf-8" standalone="no"?>' + HB_OSNEWLINE()
::xmlOut += '<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">' + HB_OSNEWLINE()
::xmlOut += ' <S:Header> ' + HB_OSNEWLINE()
::xmlOut += ' <wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">' + HB_OSNEWLINE()
::xmlOut += ' <wss:UsernameToken>' + hb_osNewLine()
::xmlOut += ' <wss:Username>' + AllTrim(::user) + '</wss:Username>' + hb_osNewLine()
::xmlOut += ' <wss:Password>' + ::cryptedPassword + '</wss:Password>' + hb_osNewLine()
::xmlOut += ' <wss:Nonce>' + ::aeskey + '</wss:Nonce>' + hb_osNewLine()
::xmlOut += ' <wss:Created>' + ::cryptedDate +'</wss:Created>' + hb_osNewLine()
::xmlOut += ' </wss:UsernameToken>' + hb_osNewLine()
::xmlOut += ' </wss:Security>' + hb_osNewLine()
::xmlOut += ' </S:Header>' + hb_osNewLine()
::xmlOut += ' <S:Body>' + hb_osNewLine()
::xmlOut += ' <ns2:envioDocumentoTransporteRequestElem xmlns:ns2="https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/">' + hb_osNewLine()
::xmlOut += ' <TaxRegistrationNumber>' + ::contribuinte + '</TaxRegistrationNumber>' + hb_osNewLine()
::xmlOut += ' <CompanyName>' + ::nome + '</CompanyName>' + hb_osNewLine()
::xmlOut += ' <CompanyAddress>' + hb_osNewLine()
::xmlOut += ' <Addressdetail>' + ::Morada + '</Addressdetail>' + hb_osNewLine()
::xmlOut += ' <City>' + ::Cidade + '</City>' + hb_osNewLine()
::xmlOut += ' <PostalCode>' + ::codPostal + '</PostalCode>' + hb_osNewLine()
::xmlOut += ' <Country>' + ::pais+ '</Country>' + hb_osNewLine()
::xmlOut += ' </CompanyAddress>' + hb_osNewLine()
::xmlOut += ' <DocumentNumber>' + ::docId + '</DocumentNumber>' + hb_osNewLine()
IF ::atDocCodeId != NIL
::xmlOut += ' <AtDocCodeId>' + ::atDocCodeId + '</AtDocCodeId>' + hb_osNewLine()
ENDIF
::xmlOut += ' <MovementStatus>' + ::estado + '</MovementStatus>' + hb_osNewLine()
::xmlOut += ' <MovementDate>' + hb_DToC(::dataDoc,"yyyy-mm-dd") + '</MovementDate>' + hb_osNewLine()
::xmlOut += ' <MovementType>' + ::tipodoc + '</MovementType>' + hb_osNewLine()
::xmlOut += ' <CustomerTaxID>' + ::clienteNif + '</CustomerTaxID>' + hb_osNewLine()
::xmlOut += ' <CustomerAddress>' + hb_osNewLine()
::xmlOut += ' <Addressdetail>' + ::clienteMorada + '</Addressdetail>' + hb_osNewLine()
::xmlOut += ' <City>' + ::clienteCidade + '</City>' + hb_osNewLine()
::xmlOut += ' <PostalCode>' + ::clienteCodPostal + '</PostalCode>' + hb_osNewLine()
::xmlOut += ' <Country>' + ::clientePais + '</Country>' + hb_osNewLine()
::xmlOut += ' </CustomerAddress>' + hb_osNewLine()
::xmlOut += ' <CustomerName>' + ::clienteNome + '</CustomerName>' + hb_osNewLine()
::xmlOut += ' <AddressTo>' + hb_osNewLine()
::xmlOut += ' <Addressdetail>' + ::descargaMorada + '</Addressdetail>' + hb_osNewLine()
::xmlOut += ' <City>' + ::descargaCidade + '</City>' + hb_osNewLine()
::xmlOut += ' <PostalCode>' + ::descargaCodPostal + '</PostalCode>' + hb_osNewLine()
::xmlOut += ' <Country>' + ::descargaPais + '</Country>' + hb_osNewLine()
::xmlOut += ' </AddressTo>' + hb_osNewLine()
::xmlOut += ' <AddressFrom>' + hb_osNewLine()
::xmlOut += ' <Addressdetail>' + ::cargaMorada + '</Addressdetail>' + hb_osNewLine()
::xmlOut += ' <City>' + ::cargaCidade + '</City>' + hb_osNewLine()
::xmlOut += ' <PostalCode>' + ::cargaCodPostal + '</PostalCode>' + hb_osNewLine()
::xmlOut += ' <Country>' + ::cargaPais + '</Country>' + hb_osNewLine()
::xmlOut += ' </AddressFrom>' + hb_osNewLine()
::xmlOut += ' <MovementEndTime>' + ::fimCarga +'</MovementEndTime>' + hb_osNewLine()
::xmlOut += ' <MovementStartTime>' + ::inicioCarga + '</MovementStartTime>' + hb_osNewLine()
::xmlOut += ' <VehicleID>' + ::matricula + '</VehicleID>' + hb_osNewLine()
FOR n:=1 TO nLinhas
::xmlOut += ' <Line>' + hb_osNewLine()
oLine := ::linhas[n]
FOR i=1 TO Len(oLine:aRefs)
::xmlOut += ' <OrderReferences>' + hb_osNewLine()
::xmlOut += ' <OriginatingON>'+ oLine:aRefs[i] + '</OriginatingON>' + hb_osNewLine()
::xmlOut += ' </OrderReferences>' + hb_osNewLine()
NEXT
::xmlOut += ' <ProductDescription>' + oLine:descricao + '</ProductDescription>' + hb_osNewLine()
::xmlOut += ' <Quantity>' + aStr(oLine:quantidade) + '</Quantity>' + hb_osNewLine()
::xmlOut += ' <UnitOfMeasure>' + oLine:unidade + '</UnitOfMeasure>' + hb_osNewLine()
::xmlOut += ' <UnitPrice>' + aStr(oLine:precoUnitario) + '</UnitPrice>' + hb_osNewLine()
::xmlOut += ' </Line>' + hb_osNewLine()
NEXT
::xmlOut += ' </ns2:envioDocumentoTransporteRequestElem>' + hb_osNewLine()
::xmlOut += ' </S:Body>' + hb_osNewLine()
::xmlOut += '</S:Envelope>' + hb_osNewLine()
IF (::lDebug)
MemoWrit("pacote.txt",::xmlout)
endif
curl_global_init()
cUrl := curl_easy_init()
curl_easy_setopt(curl,HB_CURLOPT_URL,"https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte")
curl_easy_setopt(curl,HB_CURLOPT_SSLCERT,"./good.pem")
curl_easy_setopt(curl,HB_CURLOPT_HTTPHEADER, "Content-Type:text/xml;charset=UTF-8")
// todo : if(::lVerbose
curl_easy_setopt(curl,HB_CURLOPT_VERBOSE,.T.)
curl_easy_setopt(curl, HB_CURLOPT_SSL_VERIFYPEER, .F.)
curl_easy_setopt(curl, HB_CURLOPT_SSL_VERIFYHOST, .F.)
curl_easy_setopt(curl,HB_CURLOPT_SSLCERTPASSWD,"TESTEwebservice")
curl_easy_setopt(cUrl, HB_CURLOPT_POSTFIELDS, ::xmlOut)
curl_easy_setopt(Curl, HB_CURLOPT_WRITEFUNCTION, 1)
curl_easy_setopt(Curl, HB_CURLOPT_DL_BUFF_SETUP )
curl_easy_perform(cUrl)
cXmlResp := ""
curl_easy_setopt( curl, HB_CURLOPT_DL_BUFF_GET, @cXMLResp )
Inkey(0)
// todo : if(::lDebug)
IF ::lDebug
Memowrit("resp.txt",cXmlResp)
endif
// Ver o resultado //
// todo : fazer o parser corretamente
oDocMaster := hxmldoc():new("UTF-8")
oDocMaster:readString(cXmlResp)
oNode := oDocMaster:aItems[1]:aItems[2]:aItems[1]:aItems[1]:aItems // Response status //
FOR n := 1 TO Len(oNode)
o:=oNode[n]
cTag := Upper(o:title)
cVal := o:aItems[1]
IF cTag == "RETURNCODE"
::resultado := Val(cVal)
ELSEIF cTag == "RETURNMESSAGE"
::resultadoTXT := cVal
ENDIF
NEXT
IF ::resultado==0 // OK, tirar docnum e atdocid
::resultadoDocNum := oDocMaster:aItems[1]:aItems[2]:aItems[1]:aItems[2]:aItems[1]
::resultadoDocIdAT := oDocMaster:aItems[1]:aItems[2]:aItems[1]:aItems[3]:aItems[1]
ENDIF
curl_easy_cleanup(curl)
curl_global_cleanup()
RETURN
// ---------------------------------------------------------------------
STATIC FUNCTION timefmt(dt)
LOCAL t,c
dt := dt - ((hb_UTCOffset()/3600) / 24)
c:= hb_TToS(dt)
t := SubStr(c,1,4)+"-"+SubStr(c,5,2)+"-"+SubStr(c,7,2)+"T"+;
SubStr(c,9,2)+":"+SubStr(c,11,2)+":"+SubStr(c,13,2)+"."+SubStr(c,15)+"Z"
RETURN t
// -------------------------------------------------------------------------------------------
STATIC FUNCTION aStr(n)
RETURN AllTrim(Str(n,10,2))
//----------------------------------------------------------------------------------------------
METHOD gen_crypt() CLASS EnvioDocumentoTransporte
LOCAL bio, ch, iv, ctx, publicKey, pub
LOCAL result, final
ssl_init()
OpenSSL_add_all_ciphers()
#pragma __cstream|publicKey:=%s
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoQi+XDM9OJ+Kr+Blaxn3
MFBE7UMYL7bfPGCxS0JDIbYlfQp65mYfzRcIhwysheO9nn7SlpF1b6TNNZglf3BT
SpFWP4xwB+RpjmHj1ClLg+hO1E/+olLfbIUplFqATpTWP7TGsgGBOhenQedzasq6
qzEoEAiOx4x2kD0NLPGUzMZaUr8HTGriYePWC4SJgwFSGQ9V5Yf4g2zYVh0Kyr2V
hJi9mJsGi3mBrgpxueabxEXnDdrDR1PiPhEPIU/w+63jZzcV/cvaKTSyvPtebPSy
+AdMtR5r2HXtDoZUKLHfcWZ2LP794wM5WU7ZoIuAQGGKZZyULqneGzCNdvmMuWu8
5wIDAQAB
-----END PUBLIC KEY-----
#pragma __endtext
RAND_SEED("OITOLETR")
ctx := hb_EVP_CIPHER_ctx_create()
EVP_CIPHER_CTX_init( ctx )
pub:=PEM_read_bio_PUBKEY( bio := BIO_new_mem_buf( publicKey ), "" )
EVP_SealInit( ctx, "AES-128-ECB", @ch, @iv, pub )
::aeskey:=hb_base64Encode(ch[1])
//Alert(ch[1])
//Alert( Str(Len(ch[1]) ))
::dataSistema := hb_DateTime()
result := ""
final := ""
EVP_SealUpdate( ctx, @result, timefmt(::dataSistema) )
final += result
EVP_SealFinal( ctx, @result )
final += result
::cryptedDate := hb_base64Encode(final)
result := ""
final := ""
EVP_SealUpdate( ctx, @result, AllTrim(::senha) )
final += result
Len(result)
EVP_SealFinal( ctx, @result )
final += result
::cryptedPassword := hb_base64Encode(final)
// clean UP
BIO_free( bio )
EVP_PKEY_free( pub )
ctx := NIL
EVP_cleanup()
RETURN
// --------------------------------------------------------------------
CLASS LinhaDocumentoTransporte
VAR descricao, quantidade, unidade, precoUnitario
VAR aRefs INIT {}
METHOD New()
METHOD adicionaReferencia(cDocRef)
ENDCLASS
// -------------------------------------------------------------------
METHOD adicionaReferencia(cDocRef) CLASS LinhaDocumentoTransporte
AAdd(::aRefs,cDocRef)
RETURN
// -------------------------------------------------------------------
METHOD new() CLASS LinhaDocumentoTransporte
RETURN SELF
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
hbssl.lib hbcur.lib para xharbour?
Ok. Mas é bastante complexo. De minha parte assim que puder vejo se é possível usar alguma classe de conexão web, claro, se algum colega não responder antes.
Porém, talvez precise alguns pequenos ajustes, mas parece que dá (creio).
Porém, talvez precise alguns pequenos ajustes, mas parece que dá (creio).
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
joaoalpande
- Usuário Nível 2

- Mensagens: 93
- Registrado em: 24 Fev 2005 09:04
- Localização: CAMPO GRANDE / MS
hbssl.lib hbcur.lib para xharbour?
Obrigado , aguardo uma resposta, se quiser pode adicionar no skype .
skype: joaoalpande
email : joaoalpande@gmail.com
Cumprimentos
João
skype: joaoalpande
email : joaoalpande@gmail.com
Cumprimentos
João