Árvore de páginas

Objetivo

Facilitar a integração entre produtos protheus com a plataforma TAE

Descrição

Classe criada especialmente para atender aos produtos do segmento de serviços, mas pode ser utilizada por qualquer produto protheus, com a versão mais atual do programa tectae.prw, disponibilizado na espedição de release do protheus, ou em pacotes de expedição contínua do módulo 28. 

INSTANCIANDO A CLASSE

New

SINTAXE
 Local oTAE := TecTAE():New(<baseURL>) 

 Parâmetros

NomeTipoDescriçãoObrigatórioDefault
baseURLcaractareURL base, utilizada na integração
https://totvssign.staging.totvs.app

AUTENTICANDO

defUser

SINTAXE
  oTAE:defUser(<cUser>)

Parâmetros

NomeTipoDescriçãoObrigatórioDefault
cUsercaractareDefine o usuário que será fará a autenticação na plataforma TAEX

defPw

SINTAXE
  oTAE:defPw(<password>)

Parâmetros

NomeTipoDescriçãoObrigatórioDefault
passwordcaractareDefine senha para autenticação na plataforma TAEX

auth()

SINTAXE
  oTAE:auth()

EXEMPLO DE AUTENTICAÇÃO

EXEMPLO DE AUTENTICAÇÃO
//Cria uma instância de TECTAE e realiza a autenticação do objeto da integração
Static Function conTAE()
    Local cUser     := SUPERGETMV('MV_USRTAE') 
    Local cPsWrd    := SUPERGETMV('MV_PWTAE')
    Local cBaseUrl  := SUPERGETMV('MV_TAEBASE',,"https://totvssign.staging.totvs.app")
    Local oTAE      := TecTAE():New(cBaseUrl) 
    
//Definição de usuário e senha de autenticação do objeto
    oTAE:defUser(cUser)
    oTAE:defPw(cPsWrd)
    oTAE:auth() 

//Retorno do objeto autenticado
Return oTAE

REALIZANDO UPLOADO DE DOCUMENTOS

uploadFile

SINTAXE
  oTAE:uploadFile(<cFileContent>, <cFileName>, <envName>, <response>, <msgErr>, <endPoint>, <type>) 


Parâmetros

NomeTipoDescriçãoObrigatórioDefault
cFileContentbase64Conteúdo do arquivoX
cFileNamecaractereNome do arquivoX
envNamecaractereNome do envelope.X
responsecaractere

Resposta da requisição na plataforma TAE, obtido através de variável passada por referência.



msgErrcaractereRetorno de mensagens de erro, obtido através de variável passada por referência

endPointcaractereEndpoint para upload de arquivos. 
/documents/v1/envelopes/upload
typecaractereTipo do documento. Tipos aceitos: .pdf, .doc, .docx
.pdf
EXEMPLO DE UPLOAD DE ARQUIVO
Static Function uploadFileTAE()
	Local oTAE      := conTAE()
	Local oFile     := Nil
	Local cPathFile := ""
	Local cNomeFile := "Nome do arquivo"
	Local oRequest  := Nil
	Local cMsgErr   := ""
	Local nIdEnv	:= 0
	
	//Criando um arquivo de teste e retornando o caminho para cPathFile
 	cPathFile := genFileTeste(cNomeFile+".PDF")

	//Obtendo o arquivo de teste que será enviado 
	oFile := tecFOPEN(cFile) 
	
	lUpload := oTAE:uploadFile(oFile,cNomeFile+".PDF", "documento teste para integracao com o TAE", @oRequest, @cMsgErr)
	If lUpload
		//Código do envelope que deverá ser utilizado no método publicar
  		nIdEnv := oRequest:data
	EndIf
Return nIdEnv  

//Realiza leitura de um arquivo
Static Function tecFOPEN(cPath)
    Local cBuffer := ""
    Local cResult := ""
    Local nHandle := 0
    Local nBytes  := 0

	nHandle := FOPEN(cPath) 
	If nHandle > -1
		While (nBytes := FREAD(nHandle, @cBuffer, 524288)) > 0 
			cResult += cBuffer
		EndDo

		FCLOSE(nHandle)
	EndIf
Return cResult

//Gerar documento de teste
Static Function genFileTeste(cNmFile)

    Local cFile             := ""
    Local cPathLocal        := GetSrvProfString("StartPath","") //'\system\'
    Local lAdjustToLegacy   := .T.    
    Local lDisableSetup     := .T.   
    Local lViewPDF          := .T.

    oPrint := FWMSPrinter():New(cNmFile/*cRelNome*/,IMP_PDF,lAdjustToLegacy,cPathLocal,lDisableSetup,,,,,,,lViewPDF)

    cFile := cPathLocal+cNmFile
    File2Printer( cFile, "PDF" )
    oPrint:cPathPDF:= cPathLocal

    oFont20 := TFont():New("Arial",9,20,.T.,.T.,5,.T.,5,.T.,.F.)

    oPrint:StartPage()
    nRow1 := 1

    oPrint:Line(nRow1+100,100,nRow1+0100,1400)
    
    oPrint:Say(nRow1+0080,100,"Arquivo para teste de integração com o TAE ",oFont20 ) 
    nRow1++
    
    oPrint:Preview()

    cFile := cPathLocal+cNmFile 

Return cFile

REALIZANDO PUBLICAÇÃO DE DOCUMENTOS

publicar

SINTAXE
  oTAE:publicar(<nIdEnv>,<aDest>,<aObserv>,<cPapel>,<cExpDate>,<cAssunto>,<cMsgTAE>,<cResponse>)

Parâmetros

NomeTipoDescriçãoObrigatórioDefault
nIdEnvnuméricoId do envelope, obtido ao utilizar o método uploadFilex
aDestarray

Array com dados dos destinatários, com os dados nome, email, cpf para cada pessoa


x
aObservarrayArray com os emails dos observadores. 

cPapelcaractere

Papel dos assinantes, conforme cadastros da plataforma TAE. Exemplo: "como contratante"

x
cExpDatecaractereData de expiração do documento, no formato: 'yyyy-mm-dd'. A data deve ser maior que a data atual do sistema. x
cAssuntocaractereAssunto do documento que será assinado.

cMsgTAEcaractereMensagem que será enviado pelo TAE aos assinantes

cResponsecaractereResposta da api do TAE, passado via referência. 

EXEMPLO DE PUBLICAÇÃO DE DOCUMENTO
static function publicarTAE(oTAE, nIdEnv)
    Local lRet      := .F.
    Local aDest     := {}
    Local aObserv   := {}
    //Data de expiração do documento > data atual
    Local cExpDate  := '2025-01-01'
    Local cPapel    := 'como contratante'
    Local cAssunto  := "Documento contrato xpto "
    Local cMsgTAE   := "Documento teste para ser assinado digitalmente."
    Local cResponse := ""
    
    aAdd(aDest,{"[email protected]","Assinante1","000.000.000-00"}) //Email, Nome, cpf (cpf válido)
    aAdd(aDest,{"[email protected]","Assinante2","000.000.000-02"}) //Email, Nome, cpf (cpf válido)

    aAdd(aObserv,'[email protected]')
    aAdd(aObserv,'[email protected]')

    lRet := oTAE:publicar(nIdEnv,aDest,aObserv,cPapel,cExpDate,cAssunto,cMsgTAE,@cResponse)

Return lRet

OBTENDO STATUS DE PUBLICAÇÃO

detailPub

SINTAXE
Local nStatus := oTAE:detailPub(<nEnvId>)

//0 = erro
//1 = pendente
//2 = finalizado
//5 = cancelado
NomeTipoDescriçãoObrigatórioDefault
nEnvIdnuméricoId do envelope, obtido ao utilizar o método uploadFilex

CANCELAMENTO DE PUBLICAÇÃO

pubCancel

SINTAXE
oTAE:pubCancel(<nEnvId>)
NomeTipoDescriçãoObrigatórioDefault
nIdEnvnuméricoId do envelope, obtido ao utilizar o método uploadFilex

ASSUNTOS RELACIONADOS