Erro enviando XML para Receita

1. Erro enviando XML para Receita

Daniel
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 &#258;&#350;xito */
$senha = "10570144";
if ( is_resource( $curl ) ){
curl_setopt( $curl , CURLOPT_HEADER, 1); //retorna o cabe&#258;&sect;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;



}






?>


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts