Bom dia! Estou Criando a primeira URL para receber informaçoes VIA webhook. Vou integrar a SRA- Protheus com a GUPY. Alguem teria um modelo desta api para compartilhar? Obrigado!
Bom dia! Estou Criando a primeira URL para receber informaçoes VIA webhook. Vou integrar a SRA- Protheus com a GUPY. Alguem teria um modelo desta api para compartilhar? Obrigado!
Qual a sua necessidade?
Enviar dados ou receber? Ao meu ver, o melhor seria você desenvolver um WS REST. Isso para que eles consumam informação ou voce desenvolver rotinas para consumir um WS deles para o envio de informações e busca de retornos.
o Protheus vai receber as informaçoes para popular a SRA, via webhook
— Marcos Godoi 17 de Jul de 2024Não conheço nenhuma API disponível pronto para isso, acredito que você terá que desenvolver uma própria. Primeiro configurar o servidor Protheus para receber request URL/WS. Para o webhook você precisará criar um WS e disponibilizar a URL para a outra plataforma fazer as requisições.
Exemplo de WS de para utilizar webhook que fiz. no caso essa função analisar ele só gravar em uma tabela customiza o ID e operação(atualização/inclusão/exclusão), para depois utilizar esse ID para fazer os tratamento necessário consumindo a API do outro sistema que fez o envio da requisição no meu webhook.
#INCLUDE "TOTVS.CH"
#INCLUDE "RESTFUL.CH"
WSRESTFUL tray DESCRIPTION "Integracao webhook"
WSDATA count AS INTEGER
WSDATA startIndex AS INTEGER
WSDATA CODE as String
WSMETHOD POST DESCRIPTION "Webhook" WSSYNTAX "/notif"
END WSRESTFUL
//====================================================================================================
/*
WSMETHOD GET WSRECEIVE startIndex, count WSSERVICE tray
Local i
conout(FWTimeStamp(1,DATE(),TIME())+"-Chamado GET em ORDER API integracao ANY")
// define o tipo de retorno do método
::SetContentType("application/json")
// verifica se recebeu parametro pela URL
// exemplo: http://localhost:8080/order/1
If Len(::aURLParms) > 0
// insira aqui o código para pesquisa do parametro recebido
// exemplo de retorno de um objeto JSON
::SetResponse('{"id":' + ::aURLParms[1] + ', "name":"order"}')
Else
// as propriedades da classe receberão os valores enviados por querystring
// exemplo: http://localhost:8080/order?startIndex=1&count=10
DEFAULT ::startIndex := 1, ::count := 5
// exemplo de retorno de uma lista de objetos JSON
::SetResponse('[')
For i := ::startIndex To ::count + 1
If i > ::startIndex
::SetResponse(',')
EndIf
::SetResponse('{"id":' + Str(i) + ', "name":"order"}')
Next
::SetResponse(']')
EndIf
Return .T.
*/
//====================================================================================================
// O metodo POST pode receber parametros por querystring, por exemplo:
WSMETHOD POST WSSERVICE tray
Local lPost := .T.
Local cBody
Local cRetAnalise := '200'
conout(FWTimeStamp(1,DATE(),TIME())+"-Chamado POST em tray API integracao Tray via webhook")
// Exemplo de retorno de erro
//If Len(::aURLParms) > 0
// SetRestFault(400, "Não é possível receber parametro do metodo POST")
// lPost := .F.
//Else
// recupera o body da requisição
cBody := ::GetContent()
// insira aqui o código para operação inserção
// exemplo de retorno de um objeto JSON
If AnalisaDados(cBody, @cRetAnalise)
conout(FWTimeStamp(1,DATE(),TIME())+"-before analisadados")
::setStatus(200)
::SetResponse(cRetAnalise)
Else
SetRestFault(400, cRetAnalise)
lPost := .F.
Endif
//EndIf
Return lPost