Integracao Touch Comp ERP Terceiros (API/Endpoints)
A Touch Comp possibilita diversas integrações com terceiros através de Web Services com o conceito de API.
Os aplicativos de terceiros integram-se através de webservices do tipo Rest (https://www.devmedia.com.br/introducao-a-web-services-restful/37387). A autenticação em si, dependerá do webservice em questão, bem como as limitações do Software Terceiro. Normalmente, a autenticação se dá por usuário, senha e empresa, onde é disponibilizado um token (bearer token) ao integrador para se integrar aos demais serviços.
Nos casos em que o Touch Comp ERP está instalado no servidor do cliente, é necessário um mapeamento NAT para comunicação externa. Veja o link Case_Wildfly e Manual_Instalacao_ERP#Acesso_Externo_-_WEB para detalhes de configuração para acesso externo.
Documentação Swagger
Para cada webservice e integração, poderá haver variações estruturais. Logo consulte a documentação disponibilizada sobre a integração em questão, para detalhes, limitações e informações conforme o serviço que deseja integrar.
A Touch Comp fornece API's para todos os seus serviços, desde que a empresa em que você prestará serviços, libere pra você. Disponibilizamos de forma online e integrada com a nossa API a documentação de todas as API's e endpoints disponíveis, acesse a API de nosso cliente:
http://{endereco_servidor}:{porta_comunicacao}/touch-erp/swagger-ui/index.html
Premissas
Alguns entendimentos devem estar claros antes de você continuar:
- Você somente poderá acessar as API's se autenticado
- Você deve possuir Usuario/Login, Senha e Token de autenticação a ser disponibilizado pelo nosso cliente. É o nosso cliente que configura estes dados, criando um usuário para você em 54_Usuarios
- Você somente poderá acessar recursos/API/Endpoints se possuir permissões para tal. Estas permissões são realizadas no recurso 53_Grupo_Usuarios. Ou seja, se irá integrar com API's do recurso de 1180_Pedido_Clientes, no grupo de usuários do usuário de integração deve estar liberado este recurso.
- Após autenticado, será disponibilizado um Token(Bearer Token) que você utilizará em todas as requisições realizadas.
- Este token possuirá uma validade, configurada por nosso cliente. Você deve combinar com o cliente, a validade desta autenticação e bem como se preparar para autenticar novamente no futuro quando o token expirar.
- Todos os Endpoints são do tipo REST
- Todas as solicitações por put, post e afins são encapsuladas no arquivo json, bem como as respostas. Principalmente sobre as respostas, você deve sempre verificar o código de resposta, a fim de verificar por erros(Veja a seção Encapsulamento).
- A maioria das mensagens trocadas, é utilizado o tipo de arquivo json.
Encapsulamento
As mensagens enviadas e retornadas são enviadas encapsuladas dentro do arquivo json. Este encasulamento se deve, para que informações e status adicionais sejam enviados junto a estas mensagens.
Observe a seção Autenticação e o retorno da requisição:
{ "@type": "WebDTOResult", "status": "SUCESSO", "messages": [], "result": { }, "countOf": 1, "name": null, "message": null, "detailMessage": null }
O resultado da consulta está em "result". Todos os demais dados são adicionais:
- "status": SUCESSO ou ERRO
- "messages": mensagens adicionais, em formato de lista, a serem exibidos ao usuário, se necessário.
- "countOf": número de registros retornados
- "message": mensagem de erro resumida
- "detailMessage": mensagem de erro detalhada.
Autenticação
Nosso cliente em comum, deve criar um usuário para você em 54_Usuarios, onde deve ser definido seu grupo de usuários, com quais recursos, ou seja, API's que você poderá acessar. Após criado e em posse destes dados, prossiga.
Atenção: O token possui um tempo de expiração, onde você deve-se autenticar novamente após o tempo estabelecido. O cliente em questão pode configurar os tempos de timeout no cadastro do 54_Usuarios. Verifique com o cliente qual o melhor tempo de timeout de acordo com suas necessidades.
Para se autenticar, você precisa enviar as seguintes informações:
* username: nome do usuario/login; * password: senha; * userAccessToken: token de acesso; * company: identificador da empresa;
Estas informações serão enviadas para o seguinte endpoint:
http://{ip_servidor}:{porta}/touch-erp/noauth/authenticate
Exemplo:
{ "company": 1, "username": "admin", "password": "123", "userAccessToken":"8H@rm0@FXiD@m2hRs5Xj" }
Todos estes dados serão disponibilizados por nosso cliente. Após autenticado, será retornado os seguintes dados:
{ "@type": "WebDTOResult", "status": "SUCESSO", "messages": [], "result": { "token": "XXXXX", "dataEmissaoToken": "28-03-2022 16:44:12.296", "dataValidadeToken": "29-03-2022 02:44:12.296", "usuario": { "identificador": 9, "loginLogin": "adm", "empresas": [ { "identificador": 43, "nomeEmpresa": null }, { "identificador": 44, "nomeEmpresa": null } ], "pessoaIdentificador": 55, "pessoaNome": "USUARIO", "codigoRegistro": "17254557000151/32/1222;", "tokenAcessoLogin": "xxxx", "grupo": { }, "idEmpresaLogada": 1, "nomeEmpresaLogada": "TOUCHCOMP SISTEMAS" } }, "countOf": 1, "name": null, "message": null, "detailMessage": null }
Tipos de Recursos/API
No Touch Comp ERP existem basicamente dois tipos de recursos disponibilizados na API:
- Recursos cadastros/CRUD. Nestes recursos são tratados entidades que são persistidas no banco de dados.
- Recursos de processamento. Nestes recursos são tratados processamentos, geração de relatórios, de arquivos fiscais, dentre outros.
Para melhor detalhamento, consulte este documento: Integracao_Touch_Comp_ERP_Terceiros_(API/Endpoints)/Tipos_Recursos_API
Tratamento de Erros
Você deve tratar dois tipos de erros/status/retorno da chamada a API.
Erros de regras de negócio, e esperados são retornados no json da mensagem, com o status "ERRO".
Porém, existem outros erros inesperados, seja pela aplicação ou até por problemas de conexão, internet e problemas no servidor. Estes erros são retornados nativamente pelo protocolo HTTP, o response code. Um dos mais famosos talvez seja o 404 - Not Found, que significa que o recurso solicitado não existe no servidor. Disponibilizamos uma tabela com todos estes códigos, disponível em: Case_Codigos_Erros_Web.
Trate estes erros e exiba ao usuário quando os mesmos ocorrerem.
Acesso Negado - Forbidden
O usuário deve estar autenticado, com um token valido, não expirado para poder acessar a API. Ele também deve possuir acesso ao recurso, vinculado a URL. Caso contrário, terá o acesso negado.
Testes
Para facilitar os testes e exemplificar a conexão, utilize o programa Postman(https://www.postman.com/), ou outro similar de sua preferência. Nele você pode simular chamadas, realizar testes sem a necessidade de desenvolvimento em si.
Sugerimos fortemente o uso prévio do Postman, para depois iniciar o desenvolvimento.
No Postman, siga este caminho:
- Autentique-se, para solicitar um Bearer Token
- Com o token, chame a API em questão, passando os parâmetros desejados.
API's Específicas
- Integracao_Touch_Comp_ERP_Terceiros_(API/Endpoints)/Pesquisa_Dados
- Integracao_Touch_Comp_ERP_Terceiros_(API/Endpoints)/API_Smart_Component
- Integracao_Touch_Comp_ERP_Terceiros_(API/Endpoints)/API_Pedido
- Integracao_Touch_Comp_ERP_Terceiros_(API/Endpoints)/Calculos_Valores_Acessorios(Frete_Desconto_Seguro_Despesas_Acessorias