Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Consumir Webservices WSDL Senior [ ERP Sapiens] Bom pessoal, Passei por uma situação onde precisei consumir webservices do ERP Senior(Sapiens), então depois de muito pesquisar e testar consegui chegar em um resultado positivo. Espero que o conteúdo abaixo seja util pra outros desenvolvedores tal como foi pra mim. Então vamos lá... No portal de documentação contem todo o material sobre o webservice como, tipo de execução, autentic...
JP
Consumir Webservices WSDL Senior [ ERP Sapiens]  
Bom pessoal,
Passei por uma situação onde precisei consumir webservices do ERP Senior(Sapiens), então depois de muito pesquisar e testar consegui chegar em um resultado positivo. Espero que o conteúdo abaixo seja util pra outros desenvolvedores tal como foi pra mim. Então vamos lá...

No portal de documentação contem todo o material sobre o webservice como, tipo de execução, autenticação, wsdl etc ... no exemplo abaixo usei o Web service Com.senior.g5.co.ger.cad.clientes.

A função acessada foi a obterCliente, abaixo as propriedades para a requisição.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.senior.com.br"> <soapenv:Body> <ser:obterCliente> <user>String</user> <password>String</password> <encryption>Integer</encryption> <parameters> <codigoEmpresa>Integer</codigoEmpresa> <codigoFilial>Integer</codigoFilial> <codigoCliente>Integer</codigoCliente> </parameters> </ser:obterCliente> </soapenv:Body> </soapenv:Envelope>


No framework ficou o seguinte:
  1. <?php
  2. #Instanciando o SoapClient com o WSDL o qual vamos acessar
  3. $client = new SoapClient('http://servidor:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_ger_cad_clientes?wsdl');
  4.  #Operação a ser executada
  5. $function 'obterCliente';
  6. #Montando o payload de requisição
  7. $parameters = array(
  8.                 'user'            => 'usuario',
  9.                 'password'        => 'senha',
  10.                 'encryption'      => 0,
  11.                 'parameters'      => array(
  12.                 'codigoEmpresa'   => 9997,
  13.                 'codigoFilial'    => 1,
  14.                 'codigoCliente'   => 6
  15.                 ));
  16.  #Sobrescrevendo endpoint do serviço
  17. $arguments = array('obterCliente' => array( $parameters));
  18.                         
  19. $options = array('location' => 'http://services.senior.com.br');
  20.  
  21. #Chamada do serviço
  22. $result $client->__soapCall($function$parameters);
  23.  
  24. echo 'Response: ';
  25. print_r($result->nomeCliente);
  26. ?>


Me ajudou e muito e espero que ajude alguém!

Jussimar Pereira
PIRUM SOLUÇÔES
pirum.com.br

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (11)


LK

Excelente, Jussimar! Me ajudou demais! Obrigado!
RD

Boa tarde, Jussimar!

Eu faço todo esse processo, porém sou barrado pelo CORS. Como você conseguiu passar por este problema?
FF

Boa tarde Rafel, consegue compartilhar um print do erro/problema que está enfrentando?
A Disposição!

Jussimar Pereira
PIRUM Soluções
3F-TI Tecnogia
pirum.com.br
RD

Boa tarde, Jussimar!

Obrigado pelo retorno.

Segue o erro:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from '100.0.0.239:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_ger : failed to load external entity "100.0.0.239:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_ger in /home/g44dk9edj5dc/public_html/consumirWsSenior.php:15 Stack trace: #0 /home/g44dk9edj5dc/public_html/consumirWsSenior.php(15): SoapClient->SoapClient('100.0.0....') #1 {main} thrown in /home/g44dk9edj5dc/public_html/consumirWsSenior.php on line 15


Meu código:

  1. <?php
  2.             //Instanciando o SoapClient com o WSDL o qual vamos acessar
  3.             $client = new SoapClient ('http://100.0.0.239:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_ger_cad_clientes?wsdl');
  4.             
  5.             //Operação a ser executada
  6.             $function 'obterCliente';
  7.             
  8.             //Montando o payload de requisição
  9.             $parameters = array('user'            => 'rafael.silva',
  10.                                 'password'        => '123456',
  11.                                 'encryption'      => 0,
  12.                                 'parameters'      => array('codigoEmpresa'   => 1,
  13.                                                            'codigoFilial'    => 1,
  14.                                                            'codigoCliente'   => 1010));
  15.             //Sobrescrevendo endpoint do serviço
  16.             $arguments = array('obterCliente' => array( $parameters));
  17.                                     
  18.             $options = array('location' => 'http://100.0.0.239:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_ger_cad_clientes');
  19.             
  20.             //Chamada do serviço
  21.             $result $client->__soapCall($function$parameters,$options);
  22.              
  23.             echo 'Response: ';
  24.             print_r($result->nomeCliente);
  25. ?>


Estou há um tempão tentando resolver, sem sucesso.

Desde já, agradeço!
FF

Sua linha 18 ta errada. Troque o "100.0.0.239:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_ger por "services.senior.com.br" e veja se passa.
Sigo a disposição.

Jussimar Pereira
PIRUM Soluções
3F-TI Tecnogia
pirum.com.br
RD

Bom dia, Jussimar!

Obrigado pelo retorno. Então, eu já havia testado desta forma, conforme o exemplo que você postou. Mas continua com a mesma mensagem de erro. Será que preciso fazer alguma liberação no ConfigCenter do ERP?
FF

Bom dia!
Olha de fato precisa configurar o sistema terceiro para consumir os WS, mas isso é no ERP. Quanto ao seu codigo, na chamada de serviço da linha 21, não entendi o porque passa o "$options" como parametro, não entendi. O erro diz ser algo na linha 15 do programa "consumirWsSenior", que se no caso for o codigo que compartilhou, é apenas uma linha comentada, então recomendo da uma verificada no array como ele está montado.
Recomendo copiar o codigo que eu postei mantendo o wsdl trocando apenas o codemp, codfil e codcli. Na pagina que vai chamar para testar de apenas um vardump pra ver se traz algo. Lembre-se que o middleware precisar estar no ar e que os ws existam no glassfish.

Jussimar Pereira
PIRUM Soluções
3F-TI Tecnogia
pirum.com.br
RD

Eu havia copiado seu código, mas como estava dando este erro, eu alterei algumas coisas para ver se dava certo. Mas, pelo que você disse, nunca vai dar certo, pois não configurei nada no ERP.
Vou tentar efetuar as parametrizações no ERP e verificar se consigo.
Muito obrigado pelas dicas, Jussimar.
LK

Bom dia, Pessoal.

Um excelente programador que trabalha comigo fez uma biblioteca para consumir os webservices da Senior no PHP. Instala via composer e a documentação está bem clara.

https://github.com/paulosscruz/senior-g5-php

Sugiro que analisem se ajuda vocês.

Abraços!
PC

Que pasta eu salvo a função para acessar (obterCliente) os serviços SOAP do sistema Senior?
LK

Pedro, depois que você executa o mapeamento do webservice com o comando php vendor/paulosscruz/senior-g5-php/bin/generator --wsdl example.com/g5-senior-services/sapiens_Synccom_senior_g5_co_ger_cad_ --serviceName Clientes --outputDir senior/services, a biblioteca cria uma pasta na sua aplicação. [caminho da sua aplicação]SeniorServiceswebservice_senior.