Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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?)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por marcelo.ourico
      Boa noite. Pessoal, mais uma vez aqui pedindo uma ajuda.

      Estou tentando enviar uma NFSe via SOAP.

      Estou recebendo o seguinte erro:

      Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] ERRO : cvc-complex-type.4: Attribute 'Algorithm' must appear on element 'ns2:CanonicalizationMethod'. in

      O meu Array está da seguinte forma:
      Array
      (
      [CanonicalizationMethod] => Array
      (
      [@attributes] => Array
      (
      [Algorithm] => http://www.w3.org/TR/2001/REC-xml-c14n-20010315
      )
      )

      Não entendi o porque desse erro, alguém sabe ajudar?
    • Por marcelo.ourico
      Estou precisando fazer o envio de um XML via webservice. Estou utilizando PHP 7.4 e nuSoap.

      Porém esse XML de envio possui várias tags com hífen. Por exemplo <tag-name></tag-name>.
       
      Esse hífen tem sido um problema, principalmente por que eu não posso enviar o XML como string. Apenas como objeto. Então imaginem isso:
       
      $objeto = simplexml_load_string($string_xml);  
      Se simplesmente eu tentar resgatar o valor da TAG já dá erro...
       
      $campo1= $objeto->tag-name;
      O erro ocorre em função de que o hífen é um caractere reservado do PHP... Então como resolver?

      Independente disso, quando eu tento fazer o envio via nuSoap, também recebo erro abaixo:
      wsdl->getTypeDef('tag-name', 'http://xyz.abr...')
      wsdl->serializeType('tag-name', 'tag-name', Object(SimpleXMLElement), '

      Alguém já passou por isso? Sabe como resolver? Pode dar uma dica?
    • Por 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);
    • Por Gustavo_Pereira
      Boa noite Prezados,
      estou com dúvida na montagem de uma tabela para um software que deverá trazer uma lista com todos os certificados de pessoas inscritas em cursos.
      usuário fará o cadastro usuário efetua login a home traz uma lista com todos os certificados dos cursos que o usuário participou  
      A tela deve trazer as colunas nome do curso, data, e o arquivo pdf para download.
       
      A dúvida então é que não sei bem se a montagem está correta e não sei como fazer o select para o objetivo supra.
       
      Desde já agradeço e aguardo ajuda!
       
       

    • Por 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?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.