PHSYS API

Conceito

O sistema PHSYS é baseado em um modelo de requisições REST, permitindo receber requisições de diversas formas. Ele foi desenvolvido utilizando sessões, o que significa que é necessário fornecer um identificador de sessão (semelhante a um token ou secret key) para cada requisição direta ao sistema.

Uma integração REST é uma forma de comunicação entre sistemas que segue os princípios arquiteturais da web. Ela permite que diferentes sistemas se conectem e troquem informações de forma eficiente e padronizada.

Portanto, para enviar requisições ao servidor, é necessário primeiro solicitar um ID de sessão. Com esse ID de sessão, será possível realizar solicitações e enviar dados para o servidor.

A comunicação é baseada em requisições utilizando um formato JSON padronizado.

Estrutura do JSON de Requisição

As requisições devem ser enviadas via método POST. Para identificação de qual processo o servidor deve executar, é necessário informar qual a classe e qual o procedimento será executado. Dados como ID, empresa e parâmetros são opcionais, mas devem ser informados dependendo do processo que será executado pelo servidor.

Os parâmetros a serem enviados abrangem nove tipos distintos, é importante observar a formatação esperada por cada um deles. Esses tipos são:

  • string
  • integer
  • largeint
  • stream
  • boolean [ true | false ]
  • time [ hh:mm:ss ]
  • date [ yyyy-mm-dd ]
  • datetime [ yyyy-mm-dd hh:mm:ss ]
  • float [ 0.00000000 ]

Sendo assim, O formato do JSON no corpo (body) da requisição deve possuir a seguinte estrutura:

{"Classe": "TPHSPedido",
 "Procedimento": "Imprimir",
 "ID": 20,
 "Empresa": 1,
 “Parametros”:[
        {
        "Nome": "Texto",
     	"Tipo": "string",
     	"Valor": "Isso é um teste"
   	 },
   	{
        "Nome": "Numero",
     	"Tipo": "integer",
     	"Valor": 1
        }
 ]
}

Parâmetros:

  • Classe: Nome da classe a ser invocada no servidor, classe pode ser enviada no parametros também. Exemplo {"Parametros": [{“Classe”:”TPHSPedido”}]}.
  • Procedimento: Nome do procedimento a ser executado na classe, procedimento pode ser enviada no parametros também. Exemplo {"Parametros": [{“Procedimento”:”Imprimir”}]}.
  • ID (Opcional): Identificador único associado à requisição.
  • Empresa (Opcional): Identificador da empresa relacionada à requisição.
  • Parametros (Opcional): Informações adicionais resultantes do processamento.
  • Nome (Obrigatório quando Parametros): Identificação do parâmetro.
  • Tipo (Obrigatório quando Parametros): Tipo de dado associado ao parâmetro.
  • Valor (Obrigatório quando Parametros): Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo").

Estrutura do JSON de Resposta

O servidor responderá com um JSON, contendo todos os parâmetros processados, caso seja solicitado um arquivo como PDF, o servidor responderá com um parâmetro STREAM, contendo em Base64 todo o conteúdo do PDF. O JSON segue a seguinte estrutura:

{"Parametros": [
   {
     "Nome": "Parametros",
     "Tipo": "string",
     "Valor": ""
   },
   {
     "Nome": "Filtro",
     "Tipo": "string",
     "Valor": ""
   },
   {
     "Nome": "Arquivo",
     "Tipo": "stream",
     "Valor": "JVBERi0xLjcNCiXi48/....."
   }
 ]
}

Parâmetros:

  • Parametros: Informações adicionais resultantes do processamento.
  • Nome: Identificação do parâmetro.
  • Tipo: Tipo de dado associado ao parâmetro.
  • Valor: Valor do parâmetro, podendo ser uma string ou um stream (no caso do parâmetro "Arquivo").

GetSessao e GetMetodo

A comunicação entre o cliente e o servidor é estabelecida por meio da operação GetSessao. Esta operação é essencial para criar uma sessão dedicada ao usuário que está solicitando a requisição. A sessão é automaticamente encerrada e destruída se não houver requisições ao servidor dentro de uma hora.

https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha.

O corpo da resposta do servidor ao GetSessao contém o código da sessão, o qual deve ser armazenado para uso futuro. Este código será posteriormente adicionado à requisição GetMetodo.

Exemplo de Requisição GetSessao:

GET https://localhost:211/GetSessao?Usuario=usuario@BaseDados&SENHA=Senha


Exemplo de Resposta do Servidor para o GetSessao:

{
 "SessaoID": "1234567890abcdef1234567890abcdef"
}

Por meio da operação GetMetodo, é possível acionar diversas funcionalidades do sistema, como imprimir um pedido ou liberar um pedido para aprovação. No entanto, é imperativo que esta requisição seja feita utilizando uma sessão válida, obtida previamente por meio do GetSessao. Caso contrário, uma mensagem de erro será retornada, solicitando a obtenção de uma nova sessão.

https://localhost:211/GetMetodo?SessaoID=1234567890abcdef1234567890abcdef

Exemplo de Requisição GetMetodo:

GET https://localhost:211/GetMetodo?SessaoID=1234567890abcdef1234567890abcdef

Em resumo, a operação GetSessao é o ponto inicial para estabelecer uma comunicação, criando uma sessão que é posteriormente utilizada na requisição GetMetodo para executar funcionalidades do sistema.

Exemplos

1 - Liberação de Pedido de Venda

2 - Emissão de NF-e

3 - Leitura de Registro de Pessoa

4 - Gravação de Registro de Pessoa