
		dpitta
		
		(usa Debian)
		
		Enviado em 27/10/2011 - 18:32h 
		Estou com um erro quando tendo enviar o xml para o webservice da Receita: 
ERRO: 
XMLsoap:VersionMismatchPossible SOAP version mismatch: Envelope namespace 
http://www.portalfiscal.inf.br/nfe was unexpected. Expecting 
http://www.w3.org/2003/05/soap-envelope. 
Segue Código: Obrigado 
Estou usando algun componentes do phpnfe 
$cert = "cert.pfx"; 
$key = file_get_contents($cert); 
openssl_pkcs12_read($key,$x509certdata,xxxxxx); 
$pub = $x509certdata['cert']; 
$key = $x509certdata['pkey']; 
file_put_contents('pubkey.pem',$x509certdata['cert']); 
file_put_contents('prikey.pem',$x509certdata['pkey']); 
file_put_contents('cert.pem',$x509certdata['pkey']."\r\n".$x509certdata['cert']); 
//Trata Certificado tirando INICIO -----BEGIN CERTIFICATE----- e FIM -----END CERTIFICATE----- 
$pub_tratado = explode('-----BEGIN CERTIFICATE-----',$pub); 
$pub_tratado = $pub_tratado['1']; 
$pub_tratado = explode('-----END CERTIFICATE-----',$pub_tratado); 
$pub_tratado = $pub_tratado['0']; 
//FIM Trata Certificado tirando INICIO -----BEGIN CERTIFICATE----- e FIM -----END CERTIFICATE----- 
/** 
* __validCerts 
* Validaçao do cerificado digital, alÊm de indicar 
* a validade, este metodo carrega a propriedade 
* mesesToexpire da classe que indica o numero de 
* meses que faltam para expirar a validade do mesmo 
* esta informacao pode ser utilizada para a gestao dos 
* certificados de forma a garantir que sempre estejam validos 
* 
* @name __validCerts 
* @version 1.00 
* @package NFePHP 
* @author Roberto L. Machado <linux> 
* @param string $cert Certificado digital no formato pem 
* @return array ['status'=>true,'meses'=>8,'dias'=>245] 
*/ 
$data = openssl_x509_read($pub); 
$cert_data = openssl_x509_parse($data); 
// reformata a data de validade; 
$ano = substr($cert_data['validTo'],0,2); 
$mes = substr($cert_data['validTo'],2,2); 
$dia = substr($cert_data['validTo'],4,2); 
//obtem o timeestamp da data de validade do certificado 
$dValid = gmmktime(0,0,0,$mes,$dia,$ano); 
// obtem o timestamp da data de hoje 
$dHoje = gmmktime(0,0,0,date("m"),date("d"),date("Y")); 
// compara a data de validade com a data atual 
if ($dValid <dHoje>certMonthsToExpire = $monthsToExpire; 
//$this->certDaysToExpire = $daysToExpire; 
// return array('status'=>$flagOK,'error'=>$errorMsg,'meses'=>$monthsToExpire,'dias'=>$daysToExpire); 
echo "<br>Dias para Expirar".$daysToExpire."<br>"; 
//fim __validCerts 
$pubKey = file_get_contents('pubkey.pem'); 
//inicializa variavel 
$dat = ''; 
//carrega o certificado em um array usando o LF como referencia 
$arCert = explode("\n", $pubKey); 
foreach ($arCert AS $curData) { 
//remove a tag de inicio e fim do certificado 
if (strncmp($curData, '-----BEGIN CERTIFICATE', 22) != 0 && strncmp($curData, '-----END CERTIFICATE', 20) != 0 ) { 
//carrega o resultado numa string 
$dat .= trim($curData); 
//echo $data; 
} 
} 
// return $data; 
$cnpj = "10570144000137"; 
$mensagem = '<xml> 
<enviNFe> 
<idLote>1</idLote> 
<NFe> 
<infNFe> 
<ide> 
<cUF>35</cUF> 
<cNF>518005127</cNF> 
<natOp>Venda a vista</natOp> 
<indPag>0</indPag> 
<mod>55</mod> 
<serie>1</serie> 
<nNF>1</nNF> 
<dEmi>2008-05-06</dEmi> 
<dSaiEnt>2008-05-06</dSaiEnt> 
<tpNF>0</tpNF> 
<cMunFG>3550308</cMunFG> 
<tpImp>1</tpImp> 
<tpEmis>1</tpEmis> 
<cDV>3</cDV> 
<tpAmb>2</tpAmb> 
<finNFe>1</finNFe> 
<procEmi>0</procEmi> 
<verProc>NF-eletronica.com</verProc> 
</ide> 
<emit> 
<CNPJ>'.$cnpj.'</CNPJ> 
<xNome>NF-e Associacao NF-e</xNome> 
<xFant>NF-e</xFant> 
<enderEmit> 
<xLgr>Rua Central</xLgr> 
<nro>100</nro> 
<xCpl>Fundos</xCpl> 
<xBairro>Distrito Industrial</xBairro> 
<cMun>3502200</cMun> 
<xMun>Angatuba</xMun> 
<UF>SP</UF> 
<CEP>17100171</CEP> 
<cPais>1058</cPais> 
<xPais>Brasil</xPais> 
<fone>1733021717</fone> 
</enderEmit> 
<IE>123456789012</IE> 
</emit> 
<dest> 
<CNPJ>00000000000191</CNPJ> 
<xNome>DISTRIBUIDORA DE AGUAS MINERAIS</xNome> 
<enderDest> 
<xLgr>AV DAS FONTES</xLgr> 
<nro>1777</nro> 
<xCpl>10 ANDAR</xCpl> 
<xBairro>PARQUE FONTES</xBairro> 
<cMun>5030801</cMun> 
<xMun>Sao Paulo</xMun> 
<UF>SP</UF> 
<CEP>13950000</CEP> 
<cPais>1058</cPais> 
<xPais>BRASIL</xPais> 
<fone>1932011234</fone> 
</enderDest> 
<IE> 
</dest> 
<det> 
<prod> 
<cProd>00001</cProd> 
<cEAN> 
<xProd>Agua Mineral</xProd> 
<CFOP>5101</CFOP> 
<uCom>dz</uCom> 
<qCom>1000000.0000</qCom> 
<vUnCom>1</vUnCom> 
<vProd>10000000.00</vProd> 
<cEANTrib> 
<uTrib>und</uTrib> 
<qTrib>12000000.0000</qTrib> 
<vUnTrib>1</vUnTrib> 
</prod> 
<imposto> 
<ICMS> 
<ICMS00> 
<orig>0</orig> 
<CST>00</CST> 
<modBC>0</modBC> 
<vBC>10000000.00</vBC> 
<pICMS>18.00</pICMS> 
<vICMS>1800000.00</vICMS> 
</ICMS00> 
</ICMS> 
<PIS> 
<PISAliq> 
<CST>01</CST> 
<vBC>10000000.00</vBC> 
<pPIS>0.65</pPIS> 
<vPIS>65000</vPIS> 
</PISAliq> 
</PIS> 
<COFINS> 
<COFINSAliq> 
<CST>01</CST> 
<vBC>10000000.00</vBC> 
<pCOFINS>2.00</pCOFINS> 
<vCOFINS>200000.00</vCOFINS> 
</COFINSAliq> 
</COFINS> 
</imposto> 
</det> 
<det> 
<prod> 
<cProd>00002</cProd> 
<cEAN> 
<xProd>Agua Mineral</xProd> 
<CFOP>5101</CFOP> 
<uCom>pack</uCom> 
<qCom>5000000.0000</qCom> 
<vUnCom>2</vUnCom> 
<vProd>10000000.00</vProd> 
<cEANTrib> 
<uTrib>und</uTrib> 
<qTrib>3000000.0000</qTrib> 
<vUnTrib>0.3333</vUnTrib> 
</prod> 
<imposto> 
<ICMS> 
<ICMS00> 
<orig>0</orig> 
<CST>00</CST> 
<modBC>0</modBC> 
<vBC>10000000.00</vBC> 
<pICMS>18.00</pICMS> 
<vICMS>1800000.00</vICMS> 
</ICMS00> 
</ICMS> 
<PIS> 
<PISAliq> 
<CST>01</CST> 
<vBC>10000000.00</vBC> 
<pPIS>0.65</pPIS> 
<vPIS>65000</vPIS> 
</PISAliq> 
</PIS> 
<COFINS> 
<COFINSAliq> 
<CST>01</CST> 
<vBC>10000000.00</vBC> 
<pCOFINS>2.00</pCOFINS> 
<vCOFINS>200000.00</vCOFINS> 
</COFINSAliq> 
</COFINS> 
</imposto> 
</det> 
<total> 
<ICMSTot> 
<vBC>20000000.00</vBC> 
<vICMS>18.00</vICMS> 
<vBCST>0</vBCST> 
<vST>0</vST> 
<vProd>20000000.00</vProd> 
<vFrete>0</vFrete> 
<vSeg>0</vSeg> 
<vDesc>0</vDesc> 
<vII>0</vII> 
<vIPI>0</vIPI> 
<vPIS>130000.00</vPIS> 
<vCOFINS>400000.00</vCOFINS> 
<vOutro>0</vOutro> 
<vNF>20000000.00</vNF> 
</ICMSTot> 
</total> 
<transp> 
<modFrete>0</modFrete> 
<transporta> 
<CNPJ>00000000000272</CNPJ> 
<xNome>Transportador XYZ</xNome> 
<IE>123456789012</IE> 
<xEnder>Rua Central 100 - Fundos - Distrito Industrial</xEnder> 
<xMun>SAO PAULO</xMun> 
<UF>SP</UF> 
</transporta> 
<veicTransp> 
<placa>BXI1717</placa> 
<UF>SP</UF> 
<RNTC>123456789</RNTC> 
</veicTransp> 
<reboque> 
<placa>BXI1818</placa> 
<UF>SP</UF> 
<RNTC>123456789</RNTC> 
</reboque> 
<vol> 
<qVol>10000</qVol> 
<esp>CAIXA</esp> 
<marca>LINDOYA</marca> 
<nVol>500</nVol> 
<pesoL>1000000000.000</pesoL> 
<pesoB>1200000000.000</pesoB> 
<lacres> 
<nLacre>XYZ10231486</nLacre> 
</lacres> 
</vol> 
</transp> 
<infAdic> 
<infAdFisco>Nota Fiscal de exemplo NF-eletronica.com</infAdFisco> 
</infAdic> 
</infNFe> 
<Signature> 
<SignedInfo> 
<CanonicalizationMethod> 
<SignatureMethod> 
<Reference> 
<Transforms> 
<Transform> 
<Transform> 
</Transforms> 
<DigestMethod> 
<DigestValue>XQ9rHwZSmw93oYIKCJ6Kc27e0nI=</DigestValue> 
</Reference> 
</SignedInfo> 
<SignatureValue>5tf6n4FLyTeGlbSRFOHCFUe1/GcXTAKFpfwzaYad/3jP9cz3V8nywk6EMlDmp2uf6UZRnis/67OxLjg8of47bsgk=</SignatureValue> 
<KeyInfo> 
<X509Data> 
<X509Certificate>'.$pub_tratado.'</X509Certificate> 
</X509Data> 
</KeyInfo> 
</Signature> 
</NFe> 
</enviNFe>'; 
/** * Iniciando CURL */ 
//echo $mensagem; 
$curl = curl_init(); 
/** * Verificamos se o recurso CURL foi criado com ĂŞxito */ 
$senha = "10570144"; 
if ( is_resource( $curl ) ){ 
curl_setopt( $curl , CURLOPT_HEADER, 1); //retorna o cabeçalho de resposta 
curl_setopt( $curl , CURLOPT_URL , 'https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRecepcao2.asmx' ); 
curl_setopt( $curl , CURLOPT_PORT , 443); 
curl_setopt( $curl , CURLOPT_SSLCERT,'pubkey.pem'); 
curl_setopt( $curl , CURLOPT_SSLKEY,'prikey.pem'); 
// curl_setopt( $curl , CURLOPT_SSLKEYPASSWD,'33333333'); 
//curl_setopt( $curl , CURLOPT_CAPATH,'AC_SERPRO_RFB.p7b'); 
curl_setopt( $curl , CURLOPT_HEADER , 0 ); 
curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0 ); 
curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 ); 
curl_setopt( $curl , CURLOPT_FOLLOWLOCATION , 1 ); 
curl_setopt( $curl , CURLOPT_SSLVERSION, 3 ); 
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0); 
//curl_setopt( $curl , CURLOPT_SSLCERTPASSWD, '10570144'); 
//curl_setopt( $curl , CURLOPT_POSTFIELDS, $data); 
curl_setopt( $curl , CURLOPT_POST , 1 ); 
curl_setopt( $curl , CURLOPT_POSTFIELDS , $mensagem ); 
$xml = curl_exec( $curl ); $ern = curl_errno( $curl ); $err = curl_error( $curl ); 
echo "XML".$xml; 
curl_close( $curl ); 
//curl_close($curl); 
// return $xml; 
} 
?>