Jump to content
Fivewin Brasil

MDFE - AVERBAÇÃO SEGURO


EDUTEK

Recommended Posts

 

sim ele não vai

 


   hDados := hb_hash() // Reseto a variavel
   hDados["mod"]  := 'Upload'
   hDados["comp"] := '5'   
   hDados["path"] := 'eguarda/php/'
   hDados["recipient"] := ''
   hDados["file"] := mArqXml && 'ConteudodoarquivoXML' // aki q não tenho certeza tem q testar, mas acredito q seja carregar esse campo com o conteúdo do XML
	// Como estou logado e o Cookie dentro o oHTTP passo o hDados novo
    IF !oHTTP:post( hDados )


/// ele encerra aqui    


    
	   RETURN .F.
	ENDIF 
	cRet:= oHTTP:ReadAll() // pego o retorno
	hb_jsonDecode(cRet, @hJson) // transformo em JSON

ja tentei com o conteuido do xml e com p caminho os dois sai na opcao acima

Exato ta parando ai... tipo falta pouca coisa mas o trem não vai... q coisa hein... eles passaram um login e senha de testes mas não ajuda muito pq o problema é pq depois de logado e tudo ok não aceitar o envio.

Link to comment
Share on other sites

 

bom dia fiz desta forma e ele me retorno o seguinte 

 


function enviaWS(mUsuario,mSenha,mArqxml)
    local strXml, ws, oRs, olServer
    cUrl := "http://www.averbeporto.com.br/websys/php/conn.php?"+;
            "mod=Upload"+;
            "&comp=5"+;
            "&path=eguarda/php/"+;                        
            "&file=@"+mArqxml+""
    msginfo(cURL)
    oServer:=  CreateObject( "MSXML2.ServerXMLHTTP")
    oServer:Open( "POST", cUrl, .F. )
    oServer:SetRequestHeader( "Cookie", mCookie )        
    oServer:SetRequestHeader( "Content-Type", "multipart/form-data" )    
    oServer:Send()  //
    oServer:WaitForResponse( 10000 )
    cRetorno:= oServer:ResponseText
    MemoWrit( "xml\retornoenv.xml", cRetorno )
    msginfo(cretorno,"envio")
return(cRetorno)

{"success":1,"S":{"P":0,"D":0,"R":0,"N":0},"error":{"msg":"No XML or ZIP file found"}}

dizendo que não é um arquivo xml.

 

Isso pq vc mandou @arquivo, pelo q li no manual seria somente ali o conteúdo sem o @ não?

Pq vc manda o usuário e senha pra essa rotina sendo q não usa essas variáveis na rotina?

Poderia colocar a rotina anterior em q vc pega o mCookie na conexão?

Na minha rotina não esta dando certo pq não sei mudar o oHTTP TipClientHTTP pra "multipart/form-data" e passar isso.
Na sua parece q já ta mais proxima de acertar. Se puder compartilhar conosco como vc fez dessa forma a conexão e pegar o Cookie pq essa do enviaWS acredito q seja só ajudar ali a parte do XML

Link to comment
Share on other sites

function LoginWS(mUsuario,mSenha,mArqxml)
    local strXml, ws, oRs
   
    strXml := []
    strXml += [mod=login]
    strXml += [&comp=5]
    strXml += [&user=]+mUsuario
    strXml += [&pass=]+mSenha

    cUrl := "http://www.averbeporto.com.br/websys/php/conn.php"
    oServer:=  CreateObject( "MSXML2.ServerXMLHTTP")
    oServer:Open( "POST", cUrl, .f. )
    oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
    oServer:Send(strXml)  //
    oServer:WaitForResponse( 10000 )
    cCookieSessao := oServer:getResponseHeader("Set-Cookie") // pega o cookie da sessão
    cCookieSessao := substr(cCookieSessao,1,at(';',cCookieSessao)-1)
    mCookie := cCookieSessao
    cRetorno:= oServer:ResponseText
    MemoWrit( "xml\retorno.xml", cRetorno )
    
return(cCookieSessao)

essa aqui 

ta funcionando e retornando o cookie

Link to comment
Share on other sites

Eu tb abri um chamado, ligaram pra mim, e disseram: "O Sr. não esta enviando o XML"... Eu disse... é justamente esse o motivo do chamado eu mando o XML e o retorno é q não foi o XML, preciso de auxilio nisso... ai respondem "Ahm... e como o Sr. ta fazendo?"... respondo: Igual no manual passando a URL e o XML vai na URL, tentei mandar tanto conteúdo do XML qto o caminho do arquivo XML e não vai...

Fiz o seguinte fiz um vídeo mostrando um código de exemplo q tem essa rotina do LoginWS e do EnviaWS e coloquei o DEBUG pra mostrar em tempo de execução as variáveis e seus conteúdos... isso ontem, até agora não responderam, acredito q o programador deles deva estar analisando...

O q conseguir primeiro posta aki... Kkkk

Abraço.

Link to comment
Share on other sites

Então, segue minha rotina:

TRY
   oUrl = TUrl():New( 'http://www.averbeporto.com.br/websys/php/conn.php' )
CATCH
   CurSorArrow()
    MsgInfo('Erro ao criar a conexão','Erro')
   RETURN(.F.)
END
IF !EMPTY( oUrl )
   oCli = TIPClientHttp():New( oUrl )
   IF !EMPTY( oCli )
      oCli:nConnTimeout = -1
      IF oCli:Open()
         hQuery["mod"]  := "login"         
         hQuery["comp"]  := "5"         
         hQuery["user"]  := "XXXXX"
         hQuery["pass"]  := "xxxx"
         oCli:cUserAgent:='Mozilla/3.0 (compatible; Indy Library)'
         IF !oCli:PostMultiPart(hQuery) 
            CurSorArrow()
                MsgInfo(oCli:lastErrorMessage,'Erro')
         ELSE
            cNFSeResp :=oCli:ReadAll()
            RespC     := oCli:GetCookies() // Captura cookie
         ENDIF
      ENDIF
   ENDIF
ENDIF

If Alltrim(cNFSeResp) == '{"success":1,"logout":1}'
   CurSorArrow()
   oCli:Close()
    MsgBeep()
   MsgAlert("Não foi possível conectar ao site de averbação!","Atenção")
   Return .f.
Endif

// Faz o upload do xml para averbação

oCli:Close()
oCli = TIPClientHttp():New( oUrl )

IF !EMPTY( oCli )
      oCli:nConnTimeout = -1
      IF oCli:Open()
         ocli:SetCookie( respc )
         hQuery["comp"]   := "5"         
         hQuery["mod"]    := "Upload"
         hQuery["path"]   := "eguarda/php/"
         hQuery["recipient"]   := ""
         
         EmiCte := Dtoc(oArqCto:DTEMIS)
            LocXml := Alltrim(oConfCte:P_AUTORI)+Substr(EmiCte,4,2)+Substr(EmiCte,7,4)+"\"+Alltrim(oArqCto:CHAVESEFAZ)+;
                      "-ProcCTe.xml"
           
            If ! File(LocXml)
              CurSorArrow()
               MsgBeep()
                MsgAlert("Xml do cte não localizado!","Atenção")
                oCli:Close()
                Return .f.
            Endif                      
         
         ArqAtach := LocXml

         oCli:cUserAgent:='Mozilla/3.0 (compatible; Indy Library)'
         oCli:Attach("file",ArqAtach)

         IF !oCli:PostMultiPart(hQuery) 
            CurSorArrow()
            MsgInfo(oCli:lastErrorMessage,'Erro')
         ELSE
            Respchave:=oCli:ReadAll()
         ENDIF
      ENDIF
ENDIF

If Substr(Alltrim(Respchave),1,12) == '{"success":0'
   CurSorArrow()
   oCli:Close()
   MsgBeep()
   MsgAlert("Não foi possível fazer o upload do arquivo xml!","Atenção")
   MsgAlert(Repchave)
   Return .f.
Endif

// Busca número do protocolo

RespPosi := At("prot",Respchave)
RespPosi := Respposi + 7

RespProt := Substr(Respchave,RespPosi,40)
oCli:Close()

CurSorArrow()

Link to comment
Share on other sites

Peguei o código do colega e troquei apenas a linha do 

EmiCte := Dtoc(oArqCto:DTEMIS)
LocXml := Alltrim(oConfCte:P_AUTORI)+Substr(EmiCte,4,2)+Substr(EmiCte,7,4)+"\"+Alltrim(oArqCto:CHAVESEFAZ)+"-ProcCTe.xml" 

Por:

LocXml := "d:\ChavedoarquivoCTe.xml"

e no usuario e senha usei o de homologação 

ai executando com o debug para na linha onde o retorno é:

scGoCBd.png

Alguém sabe auxiliar no q estou errando?

Link to comment
Share on other sites

segue o meu codigo

que  consegui fazer funcionar

 

function envianovo(mUsuario,mSenha,mArqxml)
LOCAL hquery
TRY
   oUrl = TUrl():New( 'http://www.averbeporto.com.br/websys/php/conn.php' )
CATCH
   CurSorArrow()
   MsgInfo('Erro ao criar a conexão','Erro')
   RETURN(.F.)
END
IF !EMPTY( oUrl )
   oCli = TIPClientHttp():New( oUrl )
   IF !EMPTY( oCli )
      oCli:nConnTimeout = -1
      IF oCli:Open()
         hQuery := hb_hash() // Reseto a variavel            
         hQuery["mod"]   := "login"         
         hQuery["comp"]  := "5"         
         hQuery["user"]  := mUsuario && "XXXXX"
         hQuery["pass"]  := mSenha && "xxxx"
         oCli:cUserAgent:='Mozilla/3.0 (compatible; Indy Library)'
         IF !oCli:PostMultiPart(hQuery) 
            CurSorArrow()
            MsgInfo(oCli:lastErrorMessage,'Erro')
         ELSE
            cNFSeResp :=oCli:ReadAll()
            RespC     := oCli:GetCookies() // Captura cookie
         ENDIF
      ENDIF
   ENDIF
ENDIF

If Alltrim(cNFSeResp) == '{"success":1,"logout":1}'
   CurSorArrow()
   oCli:Close()
   MsgBeep()
   MsgAlert("Não foi possível conectar ao site de averbação!","Atenção")
   Return("")
Endif

//" Faz o upload do xml para averbação
oCli:Close()
oCli = TIPClientHttp():New( oUrl )   
IF !EMPTY( oCli )
   oCli:nConnTimeout = -1
   IF oCli:Open()
      ocli:SetCookie( respc )
      hQuery := hb_hash() // Reseto a variavel      
      hQuery["comp"]   := "5"         
      hQuery["mod"]    := "Upload"
      hQuery["path"]   := "eguarda/php/"
      hQuery["recipient"]   := ""
      LocXml := mArqXML
      If !File(LocXml)
         CurSorArrow()
         MsgBeep()
         MsgAlert("Xml do cte não localizado!","Atenção")
         oCli:Close()
         Return("")
      Endif                      
         
      ArqAtach := LocXml
      oCli:cUserAgent:='Mozilla/3.0 (compatible; Indy Library)'
      oCli:Attach("file",ArqAtach)

      IF !oCli:PostMultiPart(hQuery) 
         CurSorArrow()
         MsgInfo(oCli:lastErrorMessage,'Erro')
      ELSE
         Respchave:=oCli:ReadAll()
      ENDIF
   ENDIF
ENDIF

If Substr(Alltrim(Respchave),1,12) == '{"success":0'
   CurSorArrow()
   oCli:Close()
   MsgBeep()
   MsgAlert("Não foi possível fazer o upload do arquivo xml!","Atenção")
   MsgAlert(Repchave)
   Return("")
Endif

// Busca número do protocolo

RespPosi := At("prot",Respchave)
RespPosi := Respposi + 7
RespProt := Substr(Respchave,RespPosi,40)
oCli:Close()
CurSorArrow()
return(RespProt)

 

Link to comment
Share on other sites

  • 4 weeks later...

Edutek, podeis entrar em contato com este usuário, porfa:

 

Bom dia!
 
Muito obrigado pelo retorno.
 
Pois é, não consigo contato com esse usuário (EDUTEK).
Não consigo fazer meu cadastro lá no site.
 
Teria como você enviar meu e-mail e pedi para ele mandar uma mensagem?
 
Estamos precisando muito :(
 
Obg desde já!
 
Abs,
 
 
Obg. abs.
Link to comment
Share on other sites

 

Edutek, podeis entrar em contato com este usuário, porfa:

 

Bom dia!
 
Muito obrigado pelo retorno.
 
Pois é, não consigo contato com esse usuário (EDUTEK).
Não consigo fazer meu cadastro lá no site.
 
Teria como você enviar meu e-mail e pedi para ele mandar uma mensagem?
 
Estamos precisando muito :(
 
Obg desde já!
 
Abs,
 
 
Obg. abs.

meu email é edutek68@uol.com.br

Link to comment
Share on other sites

  • 4 years later...

#include "FiveWin.ch"
	STATIC oWnd
	FUNCTION Main()
	   LOCAL cSite
	   cSite := ( "https://wws.averbeporto.com.br/websys/?comp=5" )
	   //-> Invisibilizo a Janela
   DEFINE WINDOW oWnd FROM -10, -10 TO -5, -5
	   ACTIVATE WINDOW oWnd     ;
      ON INIT( ShellExecute(GetActiveWindow(),"OPEN",'"'+cSite+'"'), oWnd:End() )
	RETURN NIL

Regards, saludos.

Link to comment
Share on other sites

15 horas atrás, kapiaba disse:

 


#include "FiveWin.ch"
	STATIC oWnd
	FUNCTION Main()
	   LOCAL cSite
	   cSite := ( "https://wws.averbeporto.com.br/websys/?comp=5" )
	   //-> Invisibilizo a Janela
   DEFINE WINDOW oWnd FROM -10, -10 TO -5, -5
	   ACTIVATE WINDOW oWnd     ;
      ON INIT( ShellExecute(GetActiveWindow(),"OPEN",'"'+cSite+'"'), oWnd:End() )
	RETURN NIL

 

Regards, saludos.

Desta forma funciona manualmente, vc transmite o arquivo e tem que lançar o nro da averbação manualmente em cada CTe, ou baixar um aquivo txt csv, e ler este arquivo. Mais  quero continuar a fazer por API.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...