Webhook acessando soap

Ola pessoal, eu preciso realizar consultas em um ambiente onde a aplicação é SOAP

Sabem me dizer como eu posso fazer este tipo de conversão na consulta?

Olá, @Torres. Existem formas nativas e não-nativas de consumir API. A forma nativa é usando APIs do tipo REST, com retorno em JSON. Porém também é possível integrar com APIs SOAP ou GRAPHQL de forma não-nativa, para isso:

Para usar o retorno de uma API Soap na Weni plataforma, será preciso usar um serviço terceiro, como Back4app (serviço de nuvem que pode hospedar um código Node JS), criando um código Node JS para converter esse retorno XML para JSON usando uma função Javascript.

Sendo assim, nos fluxos você deverá consumir a API do Back4app para ter seu retorno em JSON. É uma solução normalmente considerada complexa, pois é necessário que você tenha conhecimento Javascript para criar esse código.

Vou te deixar um código de exemplo aqui e você pode personalizar e até mesmo usar o ChatGPT para te ajudar a criar um código caso você tenha dificuldades:

Parse.Cloud.define(“conversao”, async function (request, response) {
try {
//Importações
const axios = require(‘axios’)
const parseString = require(‘xml2js’).parseStringPromise;

// Variáveis da chamada
const { user, senha } = request.params

// Dados da chamada
const data = `CORPO DA REQUISIÇÃO SOAP`

// Opções da chamada
const options = {
  method: 'post',
  url: 'URL DA REQUISIÇÃO SOAP',
  headers: { 'Content-Type': 'text/xml' },
  data: data
};

// Chama a API e aguarda a resposta
const apiResponse = await axios.request(options)

// Converte a resposta da API para um objeto JS
const result = await parseString(apiResponse.data)

// Extrai o valor do BOLETO
const boleto = result['soap:Envelope']['soap:Body'][0].ObterBoletoHomepayResponse[0].RetornoBoleto[0].BOLETO

// Retorna o valor do BOLETO
response.success(boleto)

} catch (error) {
console.log(error);
response.error(error)
}
})

const boleto é um exemplo, você precisará navegar no retorno SOAP para encontrar o parâmetro que deseja

Outro detalhe é que se você for usar o Back4app, você deve configurar o servidor com essas especificações:

App Settings > Server Settings > Core Settings > Settings > Parse Version 2.8.4

Te ajudei? Se sim, marca como solução :slight_smile:

1 curtida