Envio de NFSe (RPS) Prefeitura de SP

1,838 views
Skip to first unread message

ronaldoma...@gmail.com

unread,
Feb 27, 2014, 7:43:39 AM2/27/14
to nfe...@googlegroups.com
Pessoal, preciso de uma ajuda, li muitos tópicos e vi mensagens de pessoas que realmente ajudam os iniciantes.
 
Eu não sei nada sobre PHP (programo em ASP), comecei lendo sobre as class (NFSeSP.class e NFeRPS.class) e mesmo não sabendo nada, fiz um avanço bem representativo para meu trabalho.
 
Tentei fazer tudo da NFSe por ASP, mas sem sucesso, então fiz uma junção e uma coisa e outra kkkk
 
eu gero o XML (em anexo) com ASP, depois assino ele (com PHP) com o certificado digital, porém meu problema agora esta no envio.
 
usando a função sendRPS, percebi que ele também criava o XML (o que já tinha feito anteriormente), também tentei usar a função sendRPSBatch, mas não deu, por fim, então, resolvi usar apenas como referencia e dar continuidade, mas não estou tendo êxito.
 
//Aqui eu pego as strings que vem do PHP que assina
$idaluno   = $_GET['idaluno'];
$idmensalidade  = $_GET['idmensalidade'];
$NomeArquivo  = $_GET['NomeArquivo'];
//carregue as classes
require_once('ToolsNFeS.php');
require_once('ToolsNFeSRPS.php');
//escolha o xml a ser lido
$arqxml = 'nfe/xml/'.$NomeArquivo.'-ass.xml';
//verifique se o xml existe
if ( is_file($arqxml) ) {
    //leio o XML e coloco ele na variável rps (já dei um echo nela e esta tudo ok)
    $nfefile = file_get_contents($arqxml);
    $rps = $nfefile;
 
    $nfse = new NFSeSP();
    //aqui carrego a xmlDoc com o XML
    $xmlDoc = $rps;
    $operation = 'EnvioLoteRPS';
    //aqui basicamente peguei tudo o que preciso das class
    $soapver = SOAP_1_2;
    $params = array(
      'local_cert'    => 'CAMINHOCOMPLETODOARQUIVO.pem',
      'passphrase'    => 'SENHADOCERTIFICADO',
      'connection_timeout'  => 300,
      'encoding'    => 'UTF-8',
      'verifypeer'      => false,
      'verifyhost'      => false,
      'soap_version'    => $soapver,
      'trace'           => true,
      'cache_wsdl'    => WSDL_CACHE_NONE
    );
    //aqui para o envio
    try {
       $this->connectionSoap = new SoapClient( $wsdl, $params );
    } catch (SoapFault $e ) {
      error_log( 'Exception UM: ' . $e->getMessage() );
      echo "erro de conexão soap. Tente novamente mais tarde !<br>\n";
      echo $e->getMessage();
      return false;
    }

    $params = array(
      'VersaoSchema' => 1,
      'MensagemXML' => $xmlDoc->saveXML()
    );
    try {
      $result = $this->connectionSoap->$operation( $params );
    } catch( SoapFault $e ) {
      error_log( 'Exception DOIS: ' . $e->getMessage() );
      echo "erro soap ".$e->getMessage();
      return false;
    }

    return new SimpleXMLElement( $result->RetornoXML );
 
} else {
 echo "XML Não encontrado <br />";
}//fim file existe
justamente na linha em vermelho da o erro:
 
NFSeSP::__construct: Certificado OK! PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL' : failed to load external entity "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL" in E:\xml-envio.php on line 107 Exception UM: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL' : failed to load external entity https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL
 
coloquei o erro SOAP-ERROR Parsing WSDL no Google e fui até a página 10 sem pular um resultado e para minha decepção, não encontrei muita coisa para resolver, uns dizem sobre um tal provedor na Alemanha que não fez uma atualização, outras dizem para usar cUrl para envio (já fiz isso e não saio do lugar), enfim preciso enviar esse RPS e pegar o XML retorno que deverá vir automático.
 
Já fiz de tudo, inclusive como não conheço muito acabei bagunçando tudo e tive que baixar novamente as class (coisa de iniciante em PHP kkk)
 
Alguém poderia me ajudar ? Obrigado.
XML-para-envio.xml

Alessander Maia

unread,
Jul 29, 2014, 12:54:04 PM7/29/14
to nfe...@googlegroups.com
Bom dia Ronaldo,

Estou com o mesmo problema, sou programador PHP mas na minha função está dando o mesmo erro e não sei o porque. Você conseguiu resolver esse problema?

Agradeço desde já!

Guilherme Calabria Filho

unread,
Jul 29, 2014, 2:16:14 PM7/29/14
to NFePHP
OI,
   Estou sem tempo para fornecer mais detalhes ou diretrizes. Mas se procurarem em tópicos antigos, talvez encontrem respostas. Eu participei de um tópicos, pois como vocês, também encontrei problemas para NFSe de São Paulo.

Guilherme Filho


--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você recebeu essa mensagem porque está inscrito no grupo quot;NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Alessander Maia

unread,
Jul 29, 2014, 3:46:04 PM7/29/14
to nfe...@googlegroups.com
Guilherme, obrigado pela dica, mas já revirei tudo aqui e não encontrei nada para me dar uma luz.

Edilson Belluomini

unread,
Jul 29, 2014, 4:07:31 PM7/29/14
to nfe...@googlegroups.com
Alessander,

Qual o erro exato que esta ocorrendo ?

Desculpe perguntar, mas voce editou o arquivo libs/NFSeSP.class.php com os dados da sua empresa e certificado digital ?

Verificou o exemplo em https://github.com/nfephp-org/nfephp/blob/master/exemplos/NFSeSP/exemploEnviaNFSe.php ?

Eu uso essa classe sem problemas desde 2012

Alessander Maia

unread,
Jul 29, 2014, 4:32:34 PM7/29/14
to nfe...@googlegroups.com
Olá Edilson,

O erro exato é o seguinte:

erro de conexão soap. Tente novamente mais tarde !
SOAP-ERROR: Parsing WSDL: Couldn't find in 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL'
Fatal error: Call to a member function EnvioRPS() on a non-object in /home/espacoia/public_html/painel/NFePHPaulista-master/libs/NFSeSP.class.php on line 196

A conexão SOAP está dando erro nesse trecho:

  public function start()
  {
    //versão do SOAP
    $soapver = SOAP_1_2;


    $params = array(
      'local_cert' => $this->key,
      'passphrase' => $this->passphrase,
      'connection_timeout' => 300,
      'encoding' => 'UTF-8',
      'verifypeer'    => false,
      'verifyhost'    => false,
      'soap_version'  => $soapver,
      'trace'         => true,
      'cache_wsdl' => WSDL_CACHE_NONE
    );

    try {
       $this->connectionSoap = new SoapClient( $wsdl, $params );
    } catch (SoapFault $e ) {
      error_log( 'Exception: ' . $e->getMessage() );
      echo "erro de conexão soap. Tente novamente mais tarde !<br>\n";
      echo $e->getMessage();
      return false;
    }
  }


E a respeito do arquivo NFSeSP, eu alterei com as informações da empresa, sendo elas: $cnpjPrestador, $ccmPrestador, $passphrase, $pkcs12 e $certDir. Tem outra informação que preciso alterar no arquivo além dessas variáveis?

Obrigado desde já.

Rodrigo Wanderley de Melo Cardoso

unread,
Jul 29, 2014, 4:37:30 PM7/29/14
to nfe...@googlegroups.com
Você já tentou acessar o site https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL através do seu navegador?
--
Rodrigo Wanderley de Melo Cardoso
PHP Web Developer - Bacharel em Matemática Aplicada e Computacional - UFRRJ
Estudante MBA - Engenharia de Softwares Orientada para Serviços - Veris IBTA Metrocamp

Alessander Maia

unread,
Jul 29, 2014, 4:45:05 PM7/29/14
to nfe...@googlegroups.com
Sim, carrega um xml após eu autenticar com o certificado instalado na maquina(o mesmo que está com o .pfx e .pem no NFSeSP).

Edilson Belluomini

unread,
Jul 29, 2014, 4:51:48 PM7/29/14
to nfe...@googlegroups.com
Não sei se é o caso, mas aconteceu comigo uma vez que renovei o certificado (*.pfx) e me esqueci de apagar os arquivos *.pem para que o PHP criasse novos arquivos.

Tenta apagar os arquivos *.pem

Só mais uma coisa, no meu caso que uso CentOS tive de instalar o pacote php-soap

Edilson Belluomini

unread,
Jul 29, 2014, 5:03:34 PM7/29/14
to nfe...@googlegroups.com
Alessander,

Fiz uma pesquisa no Google, e vi que algumas pessoas que tinham problemas parecidos com o seu não estão com o SSL ativado no PHP.

Apenas por desencargo de consciência, cria um script:

<?php
phpinfo();
?>

E verifica se o SSL esta ativado.


Em terça-feira, 29 de julho de 2014 17h32min34s UTC-3, Alessander Maia escreveu:

Alessander Maia

unread,
Jul 29, 2014, 5:12:59 PM7/29/14
to nfe...@googlegroups.com
Edilson,

Segue informação do phpinfo:

openssl

OpenSSL supportenabled
OpenSSL Library VersionOpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL Header VersionOpenSSL 1.0.1e-fips 11 Feb 2013

será que preciso de uma versão mais recente?

apaguei os arquivos .pem mas nao deu na mesma coisa. mas estou usando CentOS também, nao sei se tenho o pacote php-soap instalado. 

meu SOAP esta assim no phpinfo:

soap

Soap Clientenabled
Soap Serverenabled

DirectiveLocal ValueMaster Value
soap.wsdl_cache11
soap.wsdl_cache_dir/tmp/tmp
soap.wsdl_cache_enabled11
soap.wsdl_cache_limit55
soap.wsdl_cache_ttl8640086400

preciso instalar o pacote php-soap?

Obrigado novamente.

Edilson Belluomini

unread,
Jul 29, 2014, 5:41:33 PM7/29/14
to nfe...@googlegroups.com
Bom, voce esta com o SSL ativado e o SOAP ativado.

Vamos ver se seu CentOS esta entendendo o seu certificado.

Baixa o arquivo https://github.com/nfephp-org/nfephp/archive/master.zip

Descompacta ele e copia o arquivo do certificado para a pasta certs

Roda o install.php

Atualiza as informações do seu certificado, salva e verifica se aparece a mensagem "Certificado Valido"

Alessander Maia

unread,
Jul 29, 2014, 7:18:41 PM7/29/14
to nfe...@googlegroups.com
Fiz o teste e ele diz: "Certificado válido (+363 dias)".

Guilherme Calabria Filho

unread,
Jul 31, 2014, 8:26:46 AM7/31/14
to NFePHP
Bom dia.
 Eu lembro que resolvi fazendo debug. Pelo que eu lembro, a class não estava configurada corretamente. 
 A dica que posso dar é fazer a impressão(dos dados) a cada passo do processo.

Guilherme

Alessander Maia

unread,
Jul 31, 2014, 12:38:39 PM7/31/14
to nfe...@googlegroups.com
Bom dia,

A principio o problema realmente parece ser a conexão SOAP na função start da classe.

  public function start()
  {
    //versão do SOAP
    $soapver = SOAP_1_2;


    $params = array(
      'local_cert' => $this->key,
      'passphrase' => $this->passphrase,
      'connection_timeout' => 300,
      'encoding' => 'UTF-8',
      'verifypeer'    => false,
      'verifyhost'    => false,
      'soap_version'  => $soapver,
      'trace'         => true,
      'cache_wsdl' => WSDL_CACHE_NONE
    );

    try {
       $this->connectionSoap = new SoapClient( $wsdl, $params );
    } catch (SoapFault $e ) {
      error_log( 'Exception: ' . $e->getMessage() );
      echo "erro de conexão soap. Tente novamente mais tarde !<br>\n";
      echo $e->getMessage();
      return false;
    }
  }

Parece estar tudo configurado certo, mas a função não conecta e me da essa mensagem: SOAP-ERROR: Parsing WSDL: Couldn't find in 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL'.

Alguém sabe o que pode ser?

Edilson Belluomini

unread,
Jul 31, 2014, 1:12:41 PM7/31/14
to nfe...@googlegroups.com
Alessander,

Podemos fazer mais dois testes?

1 - Roda o seguinte script:

<?php

require_once('libs/NFSeSP.class.php');
$nfse = new NFSeSP;
echo $nfse->certDaysToExpire;

?>

2 - Verificar se o CentOS esta conseguindo acesso ao site da Prefeitura.

No prompt de comando (xterm, etc) execute:

elinks https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL

Alessander Maia

unread,
Jul 31, 2014, 2:17:44 PM7/31/14
to nfe...@googlegroups.com
Edilson, obrigado pela ajuda, o certDaysToExpire respondeu "361".

O segundo teste estou providenciando com a administração do server, por que não tenho acesso.

Alessander Maia

unread,
Jul 31, 2014, 2:55:40 PM7/31/14
to nfe...@googlegroups.com
o segundo teste de a seguinte resposta: https://monosnap.com/image/MM14hOjnBhsL86zupsombeXtulKeNm#

Fábio Ananias

unread,
Jul 31, 2014, 9:17:46 PM7/31/14
to nfe...@googlegroups.com

O Edilson comentou sobre apagar os arquivos .pem, voce tentou? Estou perguntando por que nao vi ninguem mais tocarno assunto, e ja tive problemas com SOAP por ter arquivos .pem incorretos. Como eles sao gerados automaticamente, nao custa voce tentar apaga-los. Ficam no mesmo diretório dos certicados. Boa sorte (aguardamos seu retorno).

Alessander Maia

unread,
Jul 31, 2014, 9:29:09 PM7/31/14
to nfe...@googlegroups.com

Já tentei apagar os arquivos .pem mas ele criou os outros novos e persistiu o erro.

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/nfephp/uZn4BnsJOiU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para nfephp+un...@googlegroups.com.

Edilson Belluomini

unread,
Aug 1, 2014, 8:03:46 AM8/1/14
to nfe...@googlegroups.com
Realmente inexplicável....

Só me confirma se a mensagem de erro é
SOAP-ERROR: Parsing WSDL: Couldn't find in 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL'

ou

SOAP-ERROR: Parsing WSDL: Couldn't find <definitions> in 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL'

Falo isso porque analisei o código fonte do PHP, e o único local que encontrei a mensagem de erro tinha o termo "definitions", que e o que voce recebe do site da prefeitura se voce acessar pelo navegador com o uso do seu certificado.

Antes de dar esse erro ele executou a função soap_xmlParseFile onde indica que ele conseguiu acessar o site e carregou o xml de retorno. Ai ele procura pela tag definitions pelo metodo get_nod_ex, e se ele não encontrar ele gera o erro "Couldn't find <definitions> in '%s'"

Roberto Machado

unread,
Aug 1, 2014, 8:21:49 AM8/1/14
to nfe...@googlegroups.com
Srs.;

Tentem retirar o "?WSDL" da URL passada ao SOAP !!

Quando a URL contêm isso é uma requisição do arquivo WSDL que não é o caso no envio de uma mensagem.

Roberto

Alessander Maia

unread,
Aug 1, 2014, 10:43:56 AM8/1/14
to nfe...@googlegroups.com
Removi o ?WSDL mas o erro persistiu:

erro de conexão soap. Tente novamente mais tarde !
SOAP-ERROR: Parsing WSDL: Couldn't find in 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx'

Vi em alguns lugares falando a respeito de passar o usuário e senha através da string de conexão SOAP, mas nesse caso não temos usuário e senha, apenas o certificado né? 

Obrigado a todos pela ajuda

Alessander Maia

unread,
Aug 1, 2014, 10:57:31 AM8/1/14
to nfe...@googlegroups.com
Pessoal, estou anexando os arquivos, se alguém puder dar uma olhada e ver se fiz algo errado.

Obrigado novamente pela força!
exemploEnviaNFSe.php
NFeRPS.class.php
NFSeSP.class.php

Alessander Maia

unread,
Aug 4, 2014, 11:16:06 AM8/4/14
to nfe...@googlegroups.com
Ainda estou com o mesmo problema, não consigo acertar isso de jeito nenhum! 

Alguém tem ideia do que possa ser o erro? 

Obrigado

Alessander Maia

Alessander Maia

unread,
Aug 7, 2014, 10:15:33 PM8/7/14
to nfe...@googlegroups.com
Pessoal, finalmente consegui!!! para ajudar alguem posteriormente vou dizer o que fiz:

Li aqui no grupo muitas pessoas com problemas na conexão SOAP que conseguiram resolver fazendo o download do arquivo WSDL, subindo o mesmo para o servidor e apontando a string de endereço da conexão para lá. Exatamente isso que eu fiz e funcionou.

Mas agora estou com uma duvida em relação aos dados realmente obrigatórios, porque o email do tomador do serviço de acordo com a documentação não é obrigatório, mas se eu deixo em branco ("") o sistema da prefeitura me devolve um erro dizendo que aquele email não está no formato exigido! bom fica ai a pergunta, é ou não obrigatório, se não então como devo preencher o email para que não me retorne esse erro?

Obrigado a todos novamente!

Em quinta-feira, 27 de fevereiro de 2014 09h43min39s UTC-3, ronaldoma...@gmail.com escreveu:

Andre Gomes

unread,
Mar 3, 2015, 9:33:47 AM3/3/15
to nfe...@googlegroups.com
Bom dia man,

Estou com esse mesmo problema a alguns dias, tentei o q vc disse q todo o resto, porem nao obtive exito, parece q o certificado nao autentica com o SOAP.
Poderia me explicar ou me apontar o topico q vc usou para solucionar?

att,

Alessander Maia

unread,
Mar 3, 2015, 3:05:57 PM3/3/15
to nfe...@googlegroups.com
Amigo, boa tarde!

Para resolver o problema com a conexão eu fiz o download do WSDL e subi ele para o meu servidor aí na string de endereço coloquei o endereço do arquivo no meu server

At

Alessander Maia

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/nfephp/uZn4BnsJOiU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para nfephp+un...@googlegroups.com.

Andre Gomes

unread,
Apr 28, 2015, 1:17:54 PM4/28/15
to nfe...@googlegroups.com
No meu caso eh pior ainda..

Eu tenho 3 certificados diferentes, 1 funciona e os outros 2 nao.. o erro dos 2 eh exatamente esse, dai eu fiz o q vc tentou, e todos pararam de funcionar rs..

Eu acho que o problema esta no SOAP, vou fazer com curl e vamos ver o q vai dar..

Andre Gomes

unread,
Apr 28, 2015, 1:48:09 PM4/28/15
to nfe...@googlegroups.com
Bom,

Salvando o xml ele funciona o certificado que ja funcionava, porem os outros 2 ainda persistem no erro abaixo.

erro soap Forbidden<br />

Depois da erro no resto do codigo e nao gera a  nota la..
Alguem tem alguma sugestao? Ou ja trabalhou com mais de 1 certificado por aplicaçao?

Ja tirei os caches do SOAP, nao queria ter q mudar tudo pra curl =/

Angelo Rodrigues

unread,
May 7, 2015, 12:41:01 PM5/7/15
to nfe...@googlegroups.com
André, boa tarde,

Você ou alguém conseguiu evoluir nisso?

Estou voltando a verificar isso e se vocês já tiverem andado, já seria de boa ajuda.

Abraços,

Angelo

Angelo Rodrigues

unread,
May 7, 2015, 5:10:25 PM5/7/15
to nfe...@googlegroups.com
Pessoal, boa tarde,

Eu fiz um teste com vários certificados e consegui sucesso em quase todos com o código normal que está na Master e que já funcionava no meu sistema.

O que eu reparei que está fazendo dar o erro do Acesso Negado, é o certificado Digital.

Se eu roda isso na linha de comando:
curl -k -v "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL" --cert SEUCERTIFICADO_certKEY.pem  --key SEUCERTIFICADO_certKEY.pem

Vai aparecer:

NSS: client certificate from file
*     subject: CN=AMR SOLUCOES EM SOFTWARE LTDA:07470739000106,OU=RFB e-CNPJ A1,OU=ARCORREIOS,OU=Secretaria da Receita Federal do Brasil - RFB,O=ICP-Brasil,L=SAO PAULO,ST=SP,C=BR
*     start date: Abr 17 19:27:37 2015 GMT
*     expire date: Abr 16 19:27:37 2016 GMT
*     common name: AMR SOLUCOES EM SOFTWARE LTDA:07470739000106
*     issuer: CN=Autoridade Certificadora SERPRORFBv4,OU=Secretaria da Receita Federal do Brasil - RFB,O=ICP-Brasil,C=BR

Note que no CN (Common Name) está aparecendo como "AMR SOLUCOES EM SOFTWARE LTDA:07470739000106", ou seja, no certificado dos Correios (Serpro) está indo no Common Name a Razão Social e o CNPJ e nos outros certificados (que estão dando certo e são de outros fornecedores) não está indo assim, está indo somente com a Razão Social.

Estou entrando com contato com o pessoal dos Correios (Serpro) e com o Pessoal da Prefeitura para ver se tem alguma coisa que possa ser feita com isso e depois dou um retorno para vocês.

Isso ajuda vocês de alguma forma?

Abraços,

Angelo

Andre Gomes

unread,
May 8, 2015, 10:42:00 AM5/8/15
to nfe...@googlegroups.com
Bom dia

Consegui fazer dar certo.

O que fiz foi o seguinte, coloquei o certificado pfx no servidor e de la extrai um .PEM

openssl pkcs12 -in 00329397000160.pfx -out 00329397000160.pem


Dai usei o codigo abaixo e o WSDL veio sem problemas.


<?php
$url = "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL";
$cert_file = '/data/emergency/classes/lib/
NFP/certificados/CERTIFICADO.pem';
$cert_password = 'SENHA';

$ch = curl_init();


$options = array(
CURLOPT_RETURNTRANSFER => true,
//CURLOPT_HEADER         => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYHOST => '2',
CURLOPT_SSL_VERIFYPEER => '1',
CURLOPT_SSLCERT => $cert_file ,
CURLOPT_SSLCERTPASSWD => $cert_password ,
CURLOPT_VERBOSE        => '1',
CURLOPT_URL => $url ,
CURLOPT_SSLVERSION => 3 ,

CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4
);

curl_setopt_array($ch , $options);

$output = curl_exec($ch);

if(!$output)
{
echo "Curl Error : " . curl_error($ch);
}
else
{
echo htmlentities($output);
}


Versoes Usadas
curl 7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
PHP 5.3.10-1ubuntu3.13 with Suhosin-Patch (cli) (built: Jul  7 2014 18:52:09)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
OpenSSL 1.0.1 14 Mar 2012

Eu ia refatorar, porem eu fiz o acesso com o SOAP usando o certificado acima e funcionou tb, entao como ja estava tudo pronto, soh coloquei para rodar.

Mas tenho interesse de refatorar isso usando o cURL para voltar a classe para o repositorio do projeto, acredito q vai ajudar mais pessoas.

Veja se funciona para voce e me avise, senao acho q tenho outra coisa q vc pode tentar.

Roberto Machado

unread,
May 8, 2015, 10:45:53 AM5/8/15
to nfe...@googlegroups.com
André;

Alguns colegas estão entrando em contato para fazer a refatoração e eu disse o seguinte  :

Hoje não tem ninguem colaborando ou mantendo NFSe. Por esse motivo eu retirei as classes de exemplo da biblioteca e as coloquei na  pasta de exemplos.

Se estiver interessado em refatorar e manter uma ou mais dessas classes acredito que todos iriam agradecer, mas para isso teremos que fazer um hangout (eu e voce, e qualquer outro interessado) para eu lhe passar como poderia ser feito isso.

Mesmo que a  classe atende-se um único município, mas esteja em uma estrutura correta usando os principios SOLID e PSR-2, e fazendo uso das classes Common da API, já seria muito bom.

A ideia é que aos poucos sejam criadas as classes base para cada um dos quase 20 modelos existentes (Ginfes, Abrasf, etc.) e que sejam criadas as classes derivadas dessas para atender as particularidades de cada município que modifica o padrão (que são quase todos). Digamos que você somente trabalhe com um município poderia ficar como mantenedor da classe base desse padrão e da classe derivada feita para atender as particularidades do município apenas e não de tudo que teria que ser feito, pois é um trabalho de LOUCO devido a quantidade de padrões e variações.

Podemos marcar esse hangout quando quiser.

Abraço

Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)

Andre Gomes

unread,
May 8, 2015, 10:51:54 AM5/8/15
to nfe...@googlegroups.com
Bom dia Roberto,

Legal, podemos marcar na semana q vem, dai voce me explica, e confesso que nao conheço esses padroes, porem uma leitura no codigo e na documentação será o suficiente.

Ja chame os interessados e nos organizamos, horarios a partir das 17 sao sempre livres..

------------------------------------------------
André Gomes
<?PHP / Ruby Architect
aci...@gmail.com
www.kernelpanic.com.br
55 11 9 4849-4857

Angelo Rodrigues - Web Studio Brasil

unread,
May 8, 2015, 10:58:59 AM5/8/15
to nfe...@googlegroups.com
Andre, bom dia,

Conforme eu falei, o meu problema está no certificado dos Correios (Serpro), já que no mesmo sistema, outros certificados funcionam.

Eu já havia feito este teste e funciona para os outros certificados, mas para o dos Correios não funciona.

Já tentei com o Guzzle (Client Http em PHP - http://docs.guzzlephp.org/en/latest/) e o certificado dos Correios funciona, porém teria que adapta-lo para fazer a comunicação com a Prefeitura (não consegui de início, mas não é minha prioridade agora).

O correto é fazer o que o Roberto falou, ver se tem alguém disposto a Refatorar esta classe com o Curl nos mesmos moldes que está sendo refatorado o NFe.

Pena que eu somente posso ajudar efetuando testes, pois como eu já disse, isto não está nas nossas prioridades neste momento e só estou “brincando” com isso em alguns momentos “vagos”.


Qualquer Dúvida, favor entrar em contato,

Atenciosamente,


Web Studio Brasil 

Angelo M. Rodrigues 
Web Studio Brasil 

Cml: (11) 2762-6934 / (11) 3522-4073

Celular Vivo: (11) 963-773-186        Celular Nextel: (11) 947-773-911 
www.wsbrasil.com ang...@wsbrasil.com

MSN / Skype: ang...@wsbrasil.com
GTalk: angelomr...@gmail.com





Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.

Mauricio Matsuda

unread,
Jul 16, 2015, 2:36:49 PM7/16/15
to nfe...@googlegroups.com
Olá pessoal!

Nós acabamos de renovar o certificado pela Serpro e estávamos tendo o mesmo problema para nos comunicar com o site da prefeitura.

Descobrimos que houve uma atualização do certificado raiz de algumas autoridades certificadoras como foi o caso da Serpro.

Para resolver, baixei esse zip http://acraiz.icpbrasil.gov.br/credenciadas/CertificadosAC-ICP-Brasil/ACcompactado.zip e concatenei os três arquivos abaixo junto com o meu certificado.
  • AC_Serpro_RFB.crt 
  • AC_Serpro_RFB_v3.crt  
  • AC_Serpro_RFB_v4.crt
Pronto agora é só usar esse certificado concatenado na requisição Soap.

Espero que tenha ajudado!

Abraços,

Mauricio Matsuda

Mauricio Matsuda

unread,
Jul 16, 2015, 2:38:18 PM7/16/15
to nfe...@googlegroups.com


Mauricio Matsuda

On Friday, May 8, 2015 at 11:58:59 AM UTC-3, Angelo Rodrigues wrote:

Francisco Caserio

unread,
Jul 16, 2015, 4:33:32 PM7/16/15
to nfe...@googlegroups.com
Mauricio

Eu estou enfrentando o mesmo problema.
Voce consegue me explicar exatamente o que vc fez?
Voce interferiu na criação dos arquivos pem?
Como vc utilizou os arquivos do Serpro no certificado?

agradeço se voce puder me indicar o caminho

att

Francisco

Roberto Machado

unread,
Jul 17, 2015, 7:18:58 AM7/17/15
to nfe...@googlegroups.com

Mauricio Matsuda

unread,
Jul 21, 2015, 6:17:34 AM7/21/15
to nfe...@googlegroups.com
Olá Francisco!


Agora procure no zip os três certificados raiz da Serpro abaixo:
  • AC_Serpro_RFB.crt 
  • AC_Serpro_RFB_v3.crt  
  • AC_Serpro_RFB_v4.crt
Pegue o seu certificado .pem e abra em algum editor de texto

Abra também os certificados da Serpro e vá copiando cada certificado da Serpro para dentro do seu certificado.

Salve o seu certificado e use na requisição SOAP.

Abraços,

Mauricio Matsuda

Marco Aurélio Moreira dos Anjos

unread,
Oct 4, 2015, 9:25:00 AM10/4/15
to NFePHP
Olá galera, estou desenvolvendo uma integração usando o NFEPHP e descobri o que estava gerando este erro ( pelo menos p/ mim ).
O script de exemplo tenta criar os arquivos .pem mas a pasta não tinha permissão. O segredo em sí estava na variável "$this->certDir"
Eu colo quei o $this->certDir no __construct() e deixei: dirname(__FILE__) . '/certs'.
É importante ver se essa pasta está com permissão de escrita e setada com chown p/ www-data.

Espero que ajude vocês, abraço!

Fernando Bonfim Andrade

unread,
Apr 11, 2016, 10:22:25 AM4/11/16
to NFePHP
Bom dia a todos, estou com os mesmos problemas acima, ja vasculhei o Grupo e nao consigo resolver.
Alguém pode me ajudar?
Prefeitura de Sao Paulo.



Warning: SoapClient::SoapClient() [soapclient.soapclient]: SSL: connection timeout in C:\www\isolution\erp\NFSeSP.class.php on line 183

Warning: SoapClient::SoapClient() [soapclient.soapclient]: Failed to enable crypto in C:\www\isolution\erp\NFSeSP.class.php on line 183

Warning: SoapClient::SoapClient(https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL) [soapclient.soapclient]: failed to open stream: operation failed in C:\www\isolution\erp\NFSeSP.class.php on line 183

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL" in C:\www\isolution\erp\NFSeSP.class.php on line 183

Fatal error: Uncaught exception 'Exception' with message 'Erro ao carregar WSDL prefeitura:SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL' : failed to load external entity "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL" ' in C:\www\isolution\erp\NFSeSP.class.php:479 Stack trace: #0 C:\www\isolution\erp\exemploEnviaNFSe.php(55): NFSeSP->sendRPS(Object(NFeRPS)) #1 {main} thrown inC:\www\isolution\erp\NFSeSP.class.php on line 479

Francisco Caserio

unread,
Jun 1, 2017, 4:05:33 PM6/1/17
to NFePHP
Mauricio

Esse ano tive o mesmo problema com o mesmo cliente que renovou o certificado na mesma certificadora do ano passado.
Porem ao baixar os certificados raiz, nao consta o AC_SERPRO_RFB.crt
Tentei concatenar os outros 2 certificados, mas desta vez nao resolveu o problema.
So acontece com certificados da online-certificadora. Outros certificados em outros clientes funcionam normalmente.
Se voce tiver alguma orientacao que possa nos ajudar te agradeco

abs

Mauricio Matsuda

unread,
Jun 2, 2017, 7:39:07 AM6/2/17
to nfe...@googlegroups.com
Bom dia Francisco!

Eu não tive problema na renovação desse ano, mas a ideia seria a mesma, precisa concatenar os certificados da empresa certificadora. Pode ser que tenha algum certificado novo para ser concatenado.

Abraços,

--
Mauricio Kazuaki Matsuda

(11) 2537-1198 | (35) 3722-3776


Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/nfephp/uZn4BnsJOiU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para nfephp+unsubscribe@googlegroups.com.

Francisco Caserio

unread,
Jun 2, 2017, 7:47:20 AM6/2/17
to NFePHP
Obrigado, eu preciso do certificado para SEFAZ (aonde esta funcionando) e prefeitura de Sao Paulo (aonde nao funciona)
Voce sabe como eu faco pra descobrir qual seria a empresa certificadora da prefeitura?

abs

Mauricio Matsuda

unread,
Jun 2, 2017, 7:55:36 AM6/2/17
to nfe...@googlegroups.com
Eu não sei hein... da outra vez eu consegui referencias aqui no grupo, não tem ninguém no grupo tendo problema com certificado esse ano?

--
Mauricio Kazuaki Matsuda

(11) 2537-1198 | (35) 3722-3776


Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositório: https://github.com/nfephp-org/nfephp
---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/nfephp/uZn4BnsJOiU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para nfephp+unsubscribe@googlegroups.com.

Roberto Machado

unread,
Jun 2, 2017, 8:01:43 AM6/2/17
to nfe...@googlegroups.com
Da forma que estão alongando esse tópico realmente não conseguirão nenhuma ajuda real !!!

1 - assuntos diferentes devem ser iniciados em tópicos diferentes, não reaproveite tópicos que não tem relação 

2 - descreva com clareza o problema, dizer que não consegue conexão não significa NADA

3 - poste detalhes do acesso, funções, scripts e do erro encontrado, nós não sabemos o que vocês estão fazendo ai  

4 - tente o acesso pelo browser, pelo SOAPUI, pelo openssl e pelo cURL em linha de comando e analise e poste os resultados, ou seja INVESTIGUE a causa

Ficar batendo cabeça sem entender o problema não vai ajudar a encontrar a causa

Roberto

Reply all
Reply to author
Forward
0 new messages