Jump to content
wolfphw

NUSOAP consulta WS WSDL da Receita Federal com certificado

Recommended Posts

Bom dia caros amigos,

 

estou precisando fazer uma consulta em um WS da Receita Federal mas estou me batendo com algumas dúvidas.

 

Instalei o certificado que eles me passaram na minha máquina e pelo navegador quando colo a URL do WS ele mostra tudo correto os tipos de consultas e tal, meu problema está no desenvolvimento do client para fazer essa consulta, eu preciso instalar algum Certificado localmente?

 

E como devo fazer a conexão da minha aplicação com esse WS?

 

Estou tentando assim:

<?php
    require("biblioteca/nusoap.php");
	
    $wsdl = "https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl";

    $formaBusca = "listarEmpPorCPF";
    
    $ListaDeCPF = "12345678910";
    $CPFUsuario = "12345678910";
    
    $sslcertfile = 'certificado.pem';
    $sslkeyfile = 'key.pem';
    $passphrase = 'senha';
    
    $param = array('CPFUsuario' => $CPFUsuario, 'ListaDeCPF' => $ListaDeCPF);

    $soap = new nusoap_client($wsdl, 'wsdl');

    $soap->setCredentials("", "",
        'certificate',
        array(
            'sslcertfile' => $sslcertfile,
            'sslkeyfile' => $sslkeyfile,
            'passphrase' => $passphrase,
            'verifypeer' => 0,
            'verifyhost' => 0
        )
    );

    if($err = $soap->getError()) {
        die('Error: '.$err);
    }
    
    $result = $soap->call($formaBusca, array('parameters' => $param), '', '', false, true);

    if($soap->fault) {
        echo 'Fault! <pre>';
        var_dump($result);
        echo '</pre>';
    } else {
        if($err = $soap->getError()) {  
            die('Error: '.$err);
        } else {
            echo '<pre>';
            var_dump($result);
            die('</pre>');
        }
    }
?>

E está me dando o seguinte erro:

 

Error: wsdl error: Getting https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl - HTTP ERROR: cURL ERROR: 58: could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By vmmh
      Alguma alma caridosa que me possa ajudar ?
      há dias que ando com este problema e não consigo resolver. Ficaria eternamente grato se alguém pudesse ajudar
       
      o codigo abaixo em localhost funciona na perfeição , mas em produção , no lado do servidor , nada... HTTP error 500.
      o pedido que estou a fazer está noutro dominio com porta 81 e no meu dominio uso certificado de segurança. Será por aí?
      de qualquer forma o wsdl está   aqui:
       
       
      $client = new SoapClient('https://dekrainspecoes.pt/acp/PROD_CustomUI_ACP_Member_Validation_WS.WSDL');
      $result = $client->QueryByNumCartao(array('N_Cartao' => "705684011673122085"));
      if (!empty($result->QueryByNumCartao_Output->Cartao_Ativo)) {
       
          echo 'The userId : '.$result->QueryByNumCartao_Output ->Pessoa_ID;
      }
       
      $JSON = json_encode($result);
    • By jotapems
      Bom dia,
      estou tentando criar uma integração a um webservice utilizando o seguinte link do serviço:
      https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl
       
      Para tanto, fiz o seguinte código-teste:
       
      <?php $client = new SoapClient("https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl"); $function = "consultarProcesso"; $arguments = array ( "idConsultante" => "xxx", "senhaConsultante" => "xxx", "numeroProcesso" => "50243604120198130702", "movimentos" => true ); $result = $client->__soapCall($function, $arguments); print $result; ?>  
      Contudo, ao executar o código, recebo o seguinte erro:
      Fatal error: Uncaught SoapFault exception: [soap:Client] Message part param1 was not recognized. (Does it exist in service WSDL?) in C:\xampp\htdocs\wstest\test.php:13 Stack trace: #0 C:\xampp\htdocs\wstest\test.php(13): SoapClient->__soapCall('consultarProces...', Array) #1 {main} thrown in C:\xampp\htdocs\wstest\test.php on line 13  
      Se alguém puder me ajudar, agradeço muito!!
    • By peterhall
      Preciso consumir um web service soap (wsdl) com certificado digital mas não estou a conseguir.
      Testei através do SoapUI e resultou sem erros, mas na hora de aplicar num script de php, não estou a conseguir que funcione.
      O que fiz até ao momento: converti o certificado digital de .pfx para .pem com chave privada incluída e procurei executar o script com os parâmetros de conexão e xsd de saída.
      Na documentação consta este xsd de saída:
       
      A resposta, se com erro, deverá ser:
       
      Resposta sem erro:
       
      O meu script:
      <?php date_default_timezone_set("America/Fortaleza"); $time = new DateTime; $data = $time->format(DateTime::ATOM); $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl'; $endpoint = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo'; $certificate = "certificado.pem"; $password = 'senha'; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE, array('versao' => '1.12', 'dataHora' => $data, 'ambiente' => '2', 'codigoServentia' => '000123', 'nomePessoa' => 'Nome de Teste', 'tipoDocumento' => '1', 'idSolicitacaoSelo' => '1', 'sequencial' => '1', 'codigo' => '6', 'quantidade' => '10' ) ); try { $soapClient = new SoapClient($wsdl, $options); } catch(Exception $e) { var_dump($e); }  
      O erro que tenho recebido:
       
      Onde estarei errando?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.