|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Accueil → WINDEV 25 → Como Adicionar uma Chave de API no Cabeçalho de um Webservice SOAP Usando WLanguage - Webservice com Token no cabecalho |
Como Adicionar uma Chave de API no Cabeçalho de um Webservice SOAP Usando WLanguage - Webservice com Token no cabecalho |
Débuté par Boller, 04 fév. 2025 17:21 - Aucune réponse |
| |
| | | |
|
| |
Membre enregistré 3 769 messages |
|
Posté le 04 février 2025 - 17:21 |
Como Adicionar uma Chave de API no Cabeçalho de um Webservice SOAP Usando WLanguage
Os Webservices SOAP continuam populares em ambientes corporativos devido à sua estrutura robusta e compatibilidade com diversos sistemas. No entanto, diferentemente das APIs REST, adicionar uma chave de API no cabeçalho HTTP de um Webservice SOAP pode parecer mais complicado. Vamos detalhar como fazer isso no WinDev, WebDev e WinDev Mobile com exemplos práticos.
Passo 1: Criar um Webservice SOAP que Lê e Valida a Chave de API
No lado do servidor, você pode usar a função WebserviceLitEntêteHTTP para ler a chave de API enviada no cabeçalho da requisição.
Exemplo de Código no Servidor:
// Definindo a chave API esperada sChaveEsperada is string = "MinhaChaveAPI123"
// Lendo a chave API recebida no cabeçalho sChaveRecebida is string = WebserviceLitEntêteHTTP("apikey")
// Validando a chave recebida IF sChaveRecebida <> sChaveEsperada THEN ExceptionDéclenche(exceptionError, "Unauthorized - Chave API inválida") END
O que está acontecendo aqui? • WebserviceLitEntêteHTTP("apikey"): Lê a chave chamada "apikey" do cabeçalho HTTP. • Validação: Se a chave não bater com a esperada, o Webservice retorna um erro claro usando ExceptionDéclenche.
Passo 2: Configurar o Cabeçalho HTTP no Cliente (Projeto Consumidor)
Para enviar a chave de API, você precisa configurar uma variável do tipo wsRequête, que gerencia os cabeçalhos HTTP das chamadas SOAP.
Exemplo de Configuração no Cliente:
// Criando a requisição SOAP com o cabeçalho da API wsRequisicaoSOAP is wsRequête wsRequisicaoSOAP.EntêteHTTP["apikey"] = "MinhaChaveAPI123"
Dica: A propriedade EntêteHTTP permite adicionar qualquer cabeçalho personalizado, como tokens de autenticação, informações de sessão, entre outros.
Passo 3: Adaptar a Chamada do Webservice para Incluir o Cabeçalho
Quando você adiciona cabeçalhos HTTP personalizados, precisa ajustar a chamada da função SOAP para incluir a variável wsRequête como o primeiro parâmetro.
Exemplo de Chamada SOAP:
Chamada Tradicional (sem autenticação):
Resultado is string = ConsultaDados(param1, param2)
Chamada com Cabeçalho HTTP (autenticação via API):
Resultado is string = ConsultaDados(wsRequisicaoSOAP, param1, param2)
Outras Aplicações Práticas 1. Integração com Gateways de Pagamento: Use essa abordagem para integrar com APIs de pagamento que exigem segurança adicional, como PagSeguro, Cielo, ou Stripe. 2. Serviços de Logística: APIs de rastreamento de encomendas como Correios, FedEx ou DHL geralmente utilizam Webservices SOAP com autenticação via chave. 3. Plataformas de Telecomunicação: Integração com APIs de envio de SMS, verificação de saldo ou consulta de número em operadoras de telecomunicações.
Melhorando a Segurança • Uso de HTTPS: Garanta que o Webservice esteja protegido via SSL/TLS para criptografar a transmissão dos dados. • Rotatividade de Chaves: Implemente um sistema para que as chaves de API expirem após determinado período ou número de acessos. • Validação por IP: Restrinja o uso da chave a IPs específicos, aumentando a segurança contra acessos não autorizados.
Resumo Final
Adicionar uma chave de API no cabeçalho de um Webservice SOAP usando WinDev, WebDev ou WinDev Mobile é simples com os passos corretos: 1. No servidor: Use WebserviceLitEntêteHTTP para ler e validar a chave API. 2. No cliente: Configure uma variável wsRequête para incluir o cabeçalho na requisição. 3. Na chamada da função: Inclua a variável de requisição como o primeiro parâmetro da função SOAP.
Com essa configuração, você garante que suas integrações SOAP sejam seguras e compatíveis com boas práticas de autenticação.
Não consegui acessar diretamente o conteúdo do link fornecido, mas posso te ajudar com o tema de como adicionar uma chave de API no cabeçalho de um Webservice SOAP, especialmente usando WLanguage.
O que é uma Chave de API em Webservices SOAP?
Uma chave de API é uma credencial usada para autenticar solicitações em APIs, garantindo que apenas usuários autorizados possam acessar os serviços. No contexto de Webservices SOAP, essa chave geralmente é inserida nos cabeçalhos da solicitação SOAP para garantir a segurança da comunicação.
Exemplo de como adicionar a chave de API no cabeçalho SOAP usando WLanguage (Windev/Webdev)
Vamos criar um exemplo prático que mostra como adicionar essa chave em um Webservice SOAP usando o WLanguage.
1. Definindo o Webservice e a Chave de API
// Definindo o endpoint do Webservice sURLWebService is string = "https://exemploapi.com/servico.wsdl"
// Definindo a chave da API sAPIKey is string = "SEU_TOKEN_DE_API"
2. Criando o Cabeçalho SOAP com a Chave da API
Para incluir a chave no cabeçalho, usamos a função SOAP.AddHeader:
// Criando o cabeçalho SOAP sHeaderAPI is string = [ <soapenv:Header> <auth:APIKey xmlns:auth="http://exemploapi.com/auth"> [sAPIKey] </auth:APIKey> </soapenv:Header> ]
// Adicionando o cabeçalho à requisição SOAP SOAP.AddHeader(sHeaderAPI)
3. Fazendo a Chamada ao Webservice
Após definir o cabeçalho, fazemos a chamada ao método desejado no Webservice:
// Inicializando o Webservice SOAPInit(sURLWebService)
// Chamada ao método 'ConsultarDados' resposta is string = SOAPRun("ConsultarDados", "parametro1", "parametro2")
// Exibindo o resultado Info(resposta)
Aplicações Práticas 1. Integração com Sistemas Financeiros: Muitos sistemas de pagamento utilizam Webservices SOAP com autenticação via chave de API, como integração com PagSeguro ou Cielo. 2. Serviços de Logística: APIs de transportadoras como Correios ou DHL utilizam Webservices SOAP para rastreamento de encomendas e cálculo de fretes. 3. Sistemas de Telecomunicação: Para integração de serviços como envio de SMS ou consulta de saldo em plataformas de telecom.
Segurança Adicional 1. Criptografia SSL/TLS: Garanta que o Webservice use HTTPS para proteger a transmissão da chave de API. 2. Validação de IP: Algumas APIs permitem restringir o uso da chave a determinados IPs. 3. Limitação de Taxa (Rate Limiting): Controle o número de chamadas para evitar abuso.
Vamos adaptar esses exemplos para WLanguage, utilizando os produtos WinDev, WebDev e WinDev Mobile. Vou te mostrar como integrar com o eSocial (exemplo governamental) e um sistema de pagamentos do varejo usando Webservices SOAP com chaves de API.
Exemplo 1: Integração com o eSocial (Governo Brasileiro)
O eSocial é uma plataforma que centraliza o envio de informações fiscais, previdenciárias e trabalhistas. A comunicação é feita via Webservices SOAP com autenticação baseada em certificados digitais ou tokens.
Passo 1: Ler e Validar a Chave de API no Webservice (Servidor)
Se você está desenvolvendo o Webservice para integrar com o eSocial ou outros serviços governamentais, é necessário validar a chave API enviada no cabeçalho da requisição.
// Definindo a chave esperada sChaveEsperada is string = "MinhaChaveAPI_eSocial"
// Lendo a chave recebida no cabeçalho da requisição sChaveRecebida is string = WebserviceLitEntêteHTTP("apikey")
// Validando a chave API IF sChaveRecebida <> sChaveEsperada THEN ExceptionDéclenche(exceptionError, "Acesso não autorizado - Chave API inválida.") END
Passo 2: Consumir o Webservice do eSocial (Cliente)
Para consumir o Webservice SOAP do eSocial, você deve configurar o cabeçalho com a chave API ou o token de autenticação.
// Definindo o endpoint do Webservice do eSocial sURLWebService is string = "https://webservices.producaorestrita.esocial.gov.br/servicos/empregador/enviarloteeventos/WsEnviarLoteEventos.svc"
// Criando a requisição SOAP com o cabeçalho da API wsRequisicao is wsRequête wsRequisicao.EntêteHTTP["apikey"] = "MinhaChaveAPI_eSocial"
// Fazendo a chamada ao método do Webservice SOAPInit(sURLWebService) sResposta is string = SOAPRun(wsRequisicao, "EnviarLoteEventos", "param1", "param2")
// Exibindo a resposta Info(sResposta)
Exemplo 2: Integração com Sistemas de Pagamento no Varejo
Agora, vamos para um exemplo comum no varejo: integrar com uma API de operadora de cartões que utiliza Webservices SOAP.
Passo 1: Criar o Webservice SOAP para Validar a Chave de API (Servidor)
Aqui, o servidor irá validar se a chave de API enviada é correta antes de processar a transação.
// Definindo a chave API esperada para a operadora de pagamento sChaveEsperada is string = "ChaveAPI_Operadora123"
// Lendo a chave recebida no cabeçalho da requisição sChaveRecebida is string = WebserviceLitEntêteHTTP("apikey")
// Verificando se a chave é válida IF sChaveRecebida <> sChaveEsperada THEN ExceptionDéclenche(exceptionError, "Chave API inválida - Transação não autorizada.") END
// Processando o pagamento se a chave for válida Resultado is string = "Pagamento aprovado!" RESULT Resultado
Passo 2: Configurar o Cliente para Enviar a Chave de API
No cliente (aplicativo ou sistema), você deve configurar a requisição SOAP com a chave da API para autenticar a transação.
// Definindo o endpoint do Webservice da operadora de pagamento sURLWebService is string = "https://api.operadorapagamento.com.br/servicoTransacao"
// Criando a requisição SOAP com o cabeçalho de autenticação wsRequisicao is wsRequête wsRequisicao.EntêteHTTP["apikey"] = "ChaveAPI_Operadora123"
// Inicializando o Webservice SOAP SOAPInit(sURLWebService)
// Realizando a transação com os parâmetros necessários sResposta is string = SOAPRun(wsRequisicao, "ProcessarTransacao", "100.00", "BRL")
// Exibindo o resultado da transação Info(sResposta)
Melhorias e Segurança 1. Criptografia: Use HTTPS para garantir que os dados e a chave API estejam protegidos durante a transmissão. 2. Rotatividade de Chaves: Gere chaves de API com validade limitada, forçando a renovação periódica e aumentando a segurança. 3. Controle de Acesso: Limite o uso da chave API a IPs ou dispositivos específicos. 4. Logs e Auditoria: Implemente logs para monitorar o uso das chaves de API e detectar possíveis abusos.
Resumo Final • No Servidor: Use WebserviceLitEntêteHTTP para ler e validar a chave de API enviada no cabeçalho. • No Cliente: Configure a variável wsRequête para incluir o cabeçalho com a chave API e chame o Webservice com SOAPRun. • Segurança: Sempre use HTTPS e boas práticas de segurança para proteger os dados.
Esses exemplos podem ser adaptados para qualquer outro serviço governamental ou comercial que utilize Webservices SOAP. Se precisar de mais detalhes específicos para um serviço, é só avisar!
Vamos agora explorar outro exemplo prático e relevante para o setor varejista: integração com o Webservice da SEFAZ (Secretaria da Fazenda) para emissão de Notas Fiscais Eletrônicas (NF-e).
Exemplo 3: Integração com a SEFAZ para Emissão de NF-e
A NF-e é uma nota fiscal eletrônica obrigatória para documentar operações de circulação de mercadorias no Brasil. A integração com a SEFAZ é feita através de Webservices SOAP que exigem autenticação com certificados digitais, mas também podemos usar chaves de API para autenticações adicionais em sistemas internos ou intermediários.
Passo 1: Criar o Webservice SOAP Interno para Validação da NF-e (Servidor)
Imagine que você tem um sistema intermediário que valida a NF-e antes de enviá-la para a SEFAZ. Esse sistema pode exigir uma chave de API para garantir que apenas usuários autorizados enviem notas.
// Definindo a chave de API esperada para o sistema de emissão de NF-e sChaveEsperada is string = "ChaveAPI_SistemaNFe_123"
// Lendo a chave API recebida no cabeçalho da requisição sChaveRecebida is string = WebserviceLitEntêteHTTP("apikey")
// Validando a chave de API antes de processar a nota fiscal IF sChaveRecebida <> sChaveEsperada THEN ExceptionDéclenche(exceptionError, "Chave API inválida - Emissão de NF-e não autorizada.") END
// Se a chave for válida, processa os dados da nota fiscal nNumeroNota is int = 12345 Resultado is string = "NF-e número " + nNumeroNota + " validada com sucesso!"
RESULT Resultado
Passo 2: Consumir o Webservice de Emissão de NF-e (Cliente)
Agora, o cliente do sistema precisa enviar as notas para o Webservice interno, autenticando com a chave de API antes de seguir para a SEFAZ.
// Definindo o endpoint do Webservice de emissão de NF-e sURLWebService is string = "https://api.seusistemaemissao.com.br/servicoEmissaoNFe"
// Criando a requisição SOAP com o cabeçalho da chave de API wsRequisicao is wsRequête wsRequisicao.EntêteHTTP["apikey"] = "ChaveAPI_SistemaNFe_123"
// Inicializando o Webservice SOAPInit(sURLWebService)
// Enviando os dados da NF-e (exemplo simplificado com número e valor) sNumeroNota is string = "12345" sValorNota is string = "1500.00"
// Chamada do método do Webservice para emitir a NF-e sResposta is string = SOAPRun(wsRequisicao, "EmitirNotaFiscal", sNumeroNota, sValorNota)
// Exibindo o retorno da SEFAZ Info("Resposta da SEFAZ: " + sResposta)
Aplicações Práticas 1. Emissão de NF-e e NFC-e: Este exemplo pode ser adaptado para Notas Fiscais do Consumidor (NFC-e) em sistemas de ponto de venda no varejo. 2. Integração com Sistemas ERP: Muitas empresas usam APIs internas para conectar diferentes módulos do ERP à emissão fiscal, adicionando camadas de segurança com chaves de API. 3. Controle de Acesso Multiusuário: Em sistemas onde vários usuários ou filiais precisam emitir NF-e, as chaves de API podem ser usadas para diferenciar o acesso de cada unidade.
Considerações de Segurança 1. Uso de Certificados Digitais: A comunicação com a SEFAZ sempre exige um certificado digital A1 ou A3 para autenticar a assinatura da nota fiscal. 2. Validação em Tempo Real: Além da chave de API, implemente validações em tempo real, como verificação de CNPJ e dados do emissor. 3. Controle de Logs: Registre todas as tentativas de emissão de NF-e para auditoria, incluindo sucessos e falhas de autenticação.
Resumo Final • Servidor: Valide a chave de API com WebserviceLitEntêteHTTP antes de processar a NF-e. • Cliente: Configure o cabeçalho da requisição com wsRequête e chame o Webservice usando SOAPRun. • Segurança: Utilize certificados digitais e boas práticas de segurança para proteger as informações fiscais.
Este exemplo cobre uma aplicação bastante comum em empresas brasileiras e pode ser expandido para incluir mais funcionalidades, como cancelamento de NF-e, inutilização de números e envio de eventos para a SEFAZ.
Se precisar de mais exemplos ou quiser adaptar para um cenário específico, é só avisar!
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|