object(SoapFault) ao consumir webservice soap-wsdl com certificado digital
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:
>
Citar
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.solicitacao.selodigital.tjce.jus.br/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Header/>
<soapenv:Body>
<ser:solicitaSelos>
<arg0>
<cabecalho>
<versao>1.12</versao>
<dataHora>2019-07-08T10:00:00.488-03:00</dataHora>
<ambiente>2</ambiente>
<serventia>
<codigoServentia>000123</codigoServentia>
</serventia>
</cabecalho>
<solicitante>
<nomePessoa>Nome de Teste</nomePessoa>
<documento>
<tipoDocumento>1</tipoDocumento>
</documento>
</solicitante>
<idSolicitacaoSelo>1</idSolicitacaoSelo>
<itens>
<!--1 or more repetitions:-->
<itemSolicitacao>
<sequencial>1</sequencial>
<codigoSelo>
<codigo>6</codigo>
</codigoSelo>
<quantidade>15</quantidade>
</itemSolicitacao>
</itens>
</arg0>
</ser:solicitaSelos>
</soapenv:Body>
</soapenv:Envelope>
A resposta, se com erro, deverá ser:
>
Citar
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns3:solicitaSelosResponse xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://service.solicitacao.selodigital.tjce.jus.br/" xmlns:ns4="http://www.tjce.jus.br/selodigital/schemas">
<return>
<codigoRetorno>
<codigo>MSG010</codigo>
<status>0</status>
<mensagem>Existe solicitação de selo pendente de ser atendido.</mensagem>
</codigoRetorno>
</return>
</ns3:solicitaSelosResponse>
</soap:Body>
</soap:Envelope>
Resposta sem erro:
>
Citar
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns3:solicitaSelosResponse xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://service.solicitacao.selodigital.tjce.jus.br/" xmlns:ns4="http://www.tjce.jus.br/selodigital/schemas">
<return>
<cabecalho>
<versao>1.12</versao>
<dataHora>2019-07-08T16:49:23.679-03:00</dataHora>
<ambiente>2</ambiente>
<serventia>
<codigoServentia>000123</codigoServentia>
</serventia>
</cabecalho>
<chave>0807201900000000</chave>
</return>
</ns3:solicitaSelosResponse>
</soap:Body>
</soap:Envelope>
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:
>
Citar
object(SoapFault)#3 (9) {
["message":protected]=> string(240) "SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl' : failed to load external entity "https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl" "
["string":"Exception":private]=> string(0) ""
["code":protected]=> int(0)
["file":protected]=> string(65) "/caminho_do_script/client.php"
["line":protected]=> int(98)
["trace":"Exception":private]=> array(1) {
[0]=> array(6) {
["file"]=> string(65) "/caminho_do_script/client.php"
["line"]=> int(98)
["function"]=> string(10) "SoapClient"
["class"]=> string(10) "SoapClient"
["type"]=> string(2) "->"
["args"]=> array(2) {
[0]=> string(78) "https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl"
[1]=> array(7) {
["location"]=> string(73) "https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo"
["keep_alive"]=> bool(true)
["trace"]=> bool(true)
["local_cert"]=> string(17) "certificado.pem"
["passphrase"]=> string(5) "senha"
["cache_wsdl"]=> int(0) [0]=> array(10) {
["versao"]=> string(4) "1.12"
["dataHora"]=> string(25) "2019-07-08T15:31:21-03:00"
["ambiente"]=> string(1) "2"
["codigoServentia"]=> string(6) "000123"
["nomePessoa"]=> string(13) "Nome de Teste"
["tipoDocumento"]=> string(1) "1"
["idSolicitacaoSelo"]=> string(1) "1"
["sequencial"]=> string(1) "1"
["codigo"]=> string(1) "6"
["quantidade"]=> string(2) "10"
}
}
}
}
}
["previous":"Exception":private]=> NULL
["faultstring"]=> string(240) "SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl' : failed to load external entity "https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl" "
["faultcode"]=> string(4) "WSDL"
}
Onde estarei errando?Discussão (1)
Carregando comentários...