public function teste() { /* * Exemplo de envio de Nfe já assinada e validada */ require_once 'nfephp/libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $modSOAP = '2'; //usando cURL //use isso, este é o modo manual voce tem mais controle sobre o que acontece $filename = 'nfephp/exemplos/xml/11101284613439000180550010000004881093997017-nfe.xml'; //obter um numero de lote $lote = substr(str_replace(',', '', number_format(microtime(true) * 1000000, 0)), 0, 15); // montar o array com a NFe $sNFe = file_get_contents($filename); //array vazio passado como referencia $aResp = array(); debug($nfe->autoriza($sNFe, $lote, $aResp)); //enviar o lote if ($resp = $nfe->autoriza($sNFe, $lote, $aResp)) { if ($aResp['bStat']) { echo "Numero do Recibo : " . $aResp['nRec'] . ", use este numero para obter o protocolo ou informações de erro no xml com testaRecibo.php."; } else { echo "Houve erro !! {$nfe->errMsg}"; } } else { echo "houve erro !! {$nfe->errMsg}"; } debug($nfe); echo '<BR><BR><h1>DEBUG DA COMUNICAÇÕO SOAP</h1><BR><BR>'; echo '<PRE>'; echo htmlspecialchars($nfe->soapDebug); echo '</PRE><BR>'; exit; }
function verifica($arquivo) { echo "---INICIANDO VERIFICACAO DE [{$arquivo}]\n"; $nfe = new ToolsNFePHP(); $result = $nfe->verifyNFe($arquivo); echo "--FUNCAO EXECUTADA: [{$result}]\n"; if (!$result) { echo "ERROR: [" . trim($nfe->errMsg) . "]\n"; } else { echo "NFe APROVADA e VÁLIDA"; } $nfe->errMsg = ""; echo "---FIM DA VERIFICACAO DE [{$arquivo}]\n"; }
<?php require_once dirname(__FILE__) . '/../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); header('Content-type: text/html; charset=UTF-8'); $sUF = 'AC;AL;AM;AP;BA;CE;DF;ES;GO;MA;MG;MS;MT;PA;PB;PE;PI;PR;RJ;RN;RO;RR;RS;SC;SE;SP;TO'; $sUF = 'SP'; //determina o ambiente 1-produção 2-homologação $tpAmb = '2'; $aUF = explode(';', $sUF); if ($tpAmb == 1) { $sAmb = 'Produção'; } else { $sAmb = 'Homologação'; } foreach ($aUF as $UF) { echo '<br><hr/><br>'; echo "{$UF} [ {$sAmb} ] ==> {$UF} <br>"; $resp = $nfe->statusServico($UF, $tpAmb, $retorno); echo print_r($retorno); echo '<br>'; echo $nfe->errMsg . '<br>'; echo '<pre>'; echo htmlspecialchars($nfe->soapDebug); echo '</pre><br>'; echo $UF . '[' . $sAmb . '] - ' . $retorno['xMotivo'] . '<br><br><hr/><br>'; flush(); } /* //Contignecia SVCAN $UF = 'SP';
/** * Exemplo de uso do método autoProtNFe() * Serão buscados os protocolos das NFes contidas na pasta "enviadas", * as NFe aprovadas terão o protocolo adicionado as mesmas e serão movidas para a pasta "enviadas/aprovadas", * as Denegadas terão o protocolo adicionado as mesmas e serão movidas para a pasta "enviadas/denegadas", * e as que retornarem erros serão movidas para a pasta "enviadas/reprovadas". * * ATENÇÃO: Este método somente obterá exito caso a nota tenha sido aprovada pela SEFAZ, * se foi reprovada um erro será retornado, tipo "A nota não consta da base de dados", * pois a mesma não foi aceita. * * As funções auto contidas na classe seguem uma determinada lógica * e movimentam as NFes pelos diretorios da estrutura. * * Estas são funções simplificadas que podem ser utilizadas em linha de comando com * o CRON para automatizar as tarefas de gestão das NFe. * * As funções auto não são muito adequadas para o tratamento de erros !!! * Portanto é desaconselhado seu uso em ambiente Produção, sem outras * ações que permitam o tratamento dos erros. * * Recomenda-se o teste e leitura atenta das mesmas antes de tentar por em uso. * */ error_reporting(E_ALL); require_once '../libs/AutoToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); if (!$nfe->autoProtNFe()) { echo $nfe->errMsg; }
<?php /** * Exemplo de uso do método autoValidNFe() * Serão validadas contra o XSD as NFe já assinadas contidas na pasta "assinadas", * caso a validação seja bem sucedida os arquivos serão movidos para a pasta "validadas", * caso contrario serão movidos para a pasta "rejeitadas". * * As funções auto contidas na classe seguem uma determinada lógica * e movimentam as NFes pelos diretorios da estrutura. * * Estas são funções simplificadas que podem ser utilizadas em linha de comando com * o CRON para automatizar as tarefas de gestão das NFe. * * As funções auto não são muito adequadas para o tratamento de erros !!! * Portanto é desaconselhado seu uso em ambiente Produção, sem outras * ações que permitam o tratamento dos erros. * * Recomenda-se o teste e leitura atenta das mesmas antes de tentar por em uso. * */ error_reporting(E_ALL); require_once '../libs/AutoToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); if (!$nfe->autoValidNFe()) { echo $nfe->errMsg; }
<?php /** * Exemplo de uso do método autoSignNFe() * Serão assinadas todas as NFe, em xml, que se encontrarem na pasta "entradas", com a terminação "*-nfe.xml", * caso a assinatura seja bem sucedida os xml serão movidos para a pasta "assinadas". * * As funções auto contidas na classe seguem uma determinada lógica * e movimentam as NFes pelos diretorios da estrutura. * * Estas são funções simplificadas que podem ser utilizadas em linha de comando com * o CRON para automatizar as tarefas de gestão das NFe. * * As funções auto não são muito adequadas para o tratamento de erros !!! * Portanto é desaconselhado seu uso em ambiente Produção, sem outras * ações que permitam o tratamento dos erros. * * Recomenda-se o teste e leitura atenta das mesmas antes de tentar por em uso. * */ error_reporting(E_ALL); require_once '../libs/AutoToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); if (!$nfe->autoSignNFe()) { echo $nfe->errMsg; }
<?php /** * Este é um exemplo para verificação da validade de uma NFe recebida de terceiros * esta NFe deve ter o seu protocolo anexado * O método irá verificar a aasinatura digital, o protocolo e o digest fornecido pela SEFAZ * através de uma consulta ao SEFAZ do estado do emissor */ header('Content-type: text/html; charset=UTF-8'); require_once '../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); //path para o arquivo da NFe recebida de terceiros que se quer verificar a validade $fileNFe = "../xml/35101158716523000119550010000000011003000000-nfe.xml"; if (!$nfe->verifyNFe($fileNFe)) { echo $nfe->errMsg; } else { echo "NFe APROVADA e VÁLIDA"; }
<?php require_once dirname(__FILE__) . '/../../libs/NFe/ToolsNFePHP.class.php'; $arq = dirname(__FILE__) . '/../xml/11101284613439000180550010000004881093997017-nfe.xml'; $nfe = new ToolsNFePHP(); $docxml = file_get_contents($arq); //para NFe 3.10 //$xsdFile = '../../schemes/PL_008f/nfe_v3.10.xsd'; //para NFe 2.00 com protocolo $xsdFile = dirname(__FILE__) . '/../../schemes/PL_006u/procNFe_v2.00.xsd'; $aErro = array(); if (!$nfe->validXML($docxml, $xsdFile, $aErro)) { echo 'Estrutura do XML da NFe contêm erros --- <br>'; foreach ($aErro as $er) { echo $er . '<br>'; } } else { echo 'Estrutura do XML da NFe foi VALIDADO!'; }
<?php require_once '../libs/ToolsNFePHP.class.php'; $arq = 'xml/11101284613439000180550010000004881093997017-nfe.xml'; //$arq = './35120358716523000119550000000162421280334154-nfe.xml'; $nfe = new ToolsNFePHP(); $docxml = file_get_contents($arq); $xsdFile = '/var/www/nfephp2/schemes/PL_006j/nfe_v2.00.xsd'; $aErro = ''; $c = $nfe->validXML($docxml, $xsdFile, $aErro); if (!$c) { echo 'Houve erro --- <br>'; foreach ($aErro as $er) { echo $er . '<br>'; } } else { echo 'VALIDADA!'; }
<?php /** * não se esqueça de manter o config/nfe_ws3_mode55.xml atualizado */ require_once '../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $fonte = 'AN'; $tpAmb = '1'; $ultNSU = 0; $numNSU = 0; $aResp = array(); $descompactar = false; $resposta = $nfe->getDistDFe($fonte, $tpAmb, $ultNSU, $numNSU, $aResp, $descompactar); echo "<pre>"; echo htmlentities($resposta); echo "</pre>"; echo '<br><br><br>'; print_r($aResp); echo '<br><br><br>'; echo "<pre>"; echo htmlentities($nfe->soapDebug); echo "</pre>"; echo "";
<?php /** * Exemplo de uso do método autoTXTtoXML() * Serão convertidas para xml todas os arquivos txt da pasta "entradas" nomeados como "*-nfe.txt", * caso a conversão seja bem sucedida os arquivos txt serão movidos para a pasta "temporarias". * * As funções auto contidas na classe seguem uma determinada lógica * e movimentam as NFes pelos diretorios da estrutura. * * Estas são funções simplificadas que podem ser utilizadas em linha de comando com * o CRON para automatizar as tarefas de gestão das NFe. * * As funções auto não são muito adequadas para o tratamento de erros !!! * Portanto é desaconselhado seu uso em ambiente Produção, sem outras * ações que permitam o tratamento dos erros. * * Recomenda-se o teste e leitura atenta das mesmas antes de tentar por em uso. * */ error_reporting(E_ALL); require_once '../libs/AutoToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); if (!$nfe->autoTXTtoXML()) { echo $nfe->errMsg; }
/** * __construct * Método construtor da classe * Este método utiliza o arquivo de configuração localizado no diretorio config * para montar os diretórios e várias propriedades internas da classe, permitindo * automatizar melhor o processo de comunicação com o SEFAZ. * * Este metodo pode estabelecer as configurações a partir do arquivo config.php ou * através de um array passado na instanciação da classe. * * @version 1.00 * @package NFePHP * @author Roberto L. Machado <linux.rlm at gmail dot com> * @param array $aConfig Opcional dados de configuração * @param number $mododebug Opcional 1-SIM ou 0-NÃO (0 default) * @return boolean true sucesso false Erro */ function __construct($aConfig = '', $mododebug = 0) { //passa os parâmetros para a classe base parent::__construct($aConfig, $mododebug); }
<?php header('Content-Type: text/html; charset=utf-8'); if (isset($_POST['conteudoArquivo']) || strlen(trim($_POST['conteudoArquivo'])) > 0) { require_once '../../libs/NFe/ToolsNFePHP.class.php'; $xsdFile = '../../schemes/PL_008f/nfe_v3.10.xsd'; if (!is_file($xsdFile)) { echo 'ERRO: Arquivo não encontrando [' . $xsdFile . ']'; die; } $nfe = new ToolsNFePHP(); $aErro = array(); if (!$nfe->validXML($_POST['conteudoArquivo'], $xsdFile, $aErro)) { echo 'ERRO: Estrutura do XML da NFe contêm erros | '; echo 'Verifique se o arquivo XSD confrontado é o mais atual! | '; foreach ($aErro as $er) { echo $er . ' | '; } } else { echo 'Estrutura do XML da NFe foi VALIDADO!'; } die; } echo 'ERRO: O conteúdo está vazio!';
<?php /* * Exemplo de solicitação da situação da NFe atraves do numero do * recibo de uma nota enviada e recebida com sucesso pelo SEFAZ */ require_once '../libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $modSOAP = '2'; //usando cURL $recibo = '351000598839931'; //este é o numero do seu recibo mude antes de executar este script $chave = ''; $tpAmb = '2'; //homologação header('Content-type: text/html; charset=UTF-8'); if ($aResp = $nfe->getProtocol($recibo, $chave, $tpAmb, $modSOAP)) { //houve retorno mostrar dados print_r($aResp); } else { //não houve retorno mostrar erro de comunicação echo "Houve erro !! {$nfe->errMsg}"; }
public function statusSefaz() { //COLETA STATUS DA RECEITA require_once '../nfe/libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $st = $nfe->statusServico('SP', '1'); if ($st['cStat'] == '107') { $status_receita = '<img src="../image/nfe_check_ok.png" style="margin:-4px 2px -5px 0px;" title="' . $st['xMotivo'] . '"/>'; } else { $status_receita = '<img src="../image/nfe_check_off.png" style="margin:-4px 2px -5px 0px;" title="' . $st['xMotivo'] . '"/>'; } return $status_receita; }
<?php require_once dirname(__FILE__) . '/../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $file = dirname(__FILE__) . '/../xml/35101158716523000119550010000000011003000000-nfe.xml'; $arq = file_get_contents($file); if ($xml = $nfe->signXML($arq, 'infNFe')) { file_put_contents($file, $xml); } else { echo $nfe->errMsg; }
<?php /** * Exemplo de uso do método autoPrintSend() * Todas as NFes contidas na pasta "enviadas/aprovadas" terão o DANFE impresso na impressora definida, * e será enviado um email contendo a NFe em xml e o Danfe em pdf ao destinatario com email indicado na NFe, * em caso de sucesso as NFe serão colocadas em um subdiretório denominado com "YYYYMM", * sendo "YYYY" igual o ano de emissao da NFe e "MM" o mes de emissão. * * ATENÇÃO: Este método somente obterá exito caso o pear Mail esteja instalado e o sistema possa * acessar a impressora estabelecida. * * As funções auto contidas na classe seguem uma determinada lógica * e movimentam as NFes pelos diretorios da estrutura. * * Estas são funções simplificadas que podem ser utilizadas em linha de comando com * o CRON para automatizar as tarefas de gestão das NFe. * * As funções auto não são muito adequadas para o tratamento de erros !!! * Portanto é desaconselhado seu uso em ambiente Produção, sem outras * ações que permitam o tratamento dos erros. * * Recomenda-se o teste e leitura atenta das mesmas antes de tentar por em uso. * */ error_reporting(E_ALL); require_once '../libs/AutoToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); if (!$nfe->autoPrintSend()) { echo $nfe->errMsg; }
<?php /* * Exemplo de envio de Nfe já assinada e validada */ require_once dirname(__FILE__) . '/../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $modSOAP = '2'; //usando cURL //use isso, este é o modo manual voce tem mais controle sobre o que acontece $filename = dirname(__FILE__) . '/../xml/35101158716523000119550010000000011003000000-nfe.xml'; //obter um numero de lote $lote = substr(str_replace(',', '', number_format(microtime(true) * 1000000, 0)), 0, 15); // montar o array com a NFe $sNFe = file_get_contents($filename); //array vazio passado como referencia $aResp = array(); //enviar o lote if ($resp = $nfe->autoriza($sNFe, $lote, $aResp)) { if ($aResp['bStat']) { echo "Numero do Recibo : " . $aResp['nRec'] . ", use este numero para obter o protocolo ou informações de erro no xml com testaRecibo.php."; } else { echo "Houve erro !! {$nfe->errMsg}"; } } else { echo "houve erro !! {$nfe->errMsg}"; } echo '<br><br><h1>DEBUG DA COMUNICAÇÕO SOAP</h1><br><br>'; echo '<pre>'; echo htmlspecialchars($nfe->soapDebug); echo '</pre><br>';
<?php header('Content-Type: text/html; charset=utf-8'); if (isset($_POST['conteudoArquivo']) || strlen(trim($_POST['conteudoArquivo'])) > 0) { require_once '../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); if ($xml = $nfe->signXML($_POST['conteudoArquivo'], 'infNFe')) { echo trim($xml); } else { echo 'ERRO: ' . $nfe->errMsg; } die; } echo 'ERRO: O conteúdo está vazio!';
<?php /* * Exemplo de solicitação da situação da NFe atraves do numero do * recibo de uma nota enviada e recebida com sucesso pelo SEFAZ */ require_once '../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $chave = ''; $xCorrecao = 'NFe emitida em Ambiente de Homologação'; $nSeq = 1; $tpAmb = '2'; //homologação header('Content-type: text/xml; charset=UTF-8'); if ($aResp = $nfe->envCCe($chave, $xCorrecao, $nSeq, $tpAmb, $retorno)) { //houve retorno mostrar dados print_r($aResp); } else { //não houve retorno mostrar erro de comunicação echo "Houve erro !! {$nfe->errMsg}"; }
<?php /** * testaCancelaEvent * * Rotina de teste de cancelamento por evento * * Corrija os dados para o cancelamento antes de testar */ require_once '../libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $chNFe = "<ID da NFe>"; $nProt = "<ID do protocolo de aprovação>"; $xJust = "<descrição do motivo de cancelamento>"; $tpAmb = '2'; $modSOAP = '2'; if ($resp = $nfe->cancelEvent($chNFe, $nProt, $xJust, $tpAmb, $modSOAP)) { header('Content-type: text/xml; charset=UTF-8'); echo $resp; } else { header('Content-type: text/html; charset=UTF-8'); echo '<BR>'; echo $nfe->errMsg . '<BR>'; echo '<PRE>'; echo htmlspecialchars($nfe->soapDebug); echo '</PRE><BR>'; }
<?php //ATENÇÃO o intervalo mínimo entre cada chamada desse script é de no mínimo 1 hora //caso ocorram chamadas em tempo menores o sistema da SEFAZ irá parar de responder. // //a pesquisa sempre inicia do ultNSU consultado e registrado no xml config/numNSU.xml //e portanto as NFe retornadas são apenas as recebidas após essa última consulta. // //É recomendável que o usuário não tenha acesso a essa chamada e que a mesma seja //feita periódicamente (usando um agendador) por exemplo 3 ou 4 vezes ao dia no //máximo. require_once '../libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP('', 1, false); $modSOAP = '2'; //usando cURL $tpAmb = '1'; //usando produção $indNFe = '0'; $indEmi = '0'; $ultNSU = ''; $AN = true; $retorno = array(); $indCont = 1; $limite = 1; $nxm = '<?xml version="1.0" encoding="utf-8"?><root>'; while ($indCont != 0) { if (!($xml = $nfe->getListNFe($AN, $indNFe, $indEmi, $ultNSU, $tpAmb, $modSOAP, $retorno))) { echo "Houve erro !! {$nfe->errMsg}"; echo '<br><br><PRE>'; echo htmlspecialchars($nfe->soapDebug); echo '</PRE><BR>';
<?php //ATENÇÃO o intervalo mínimo entre cada chamada desse script é de no mínimo 1 hora //caso ocorram chamadas em tempo menores o sistema da SEFAZ irá parar de responder. // //a pesquisa sempre inicia do ultNSU consultado e registrado no xml config/numNSU.xml //e portanto as NFe retornadas são apenas as recebidas após essa última consulta. // //É recomendável que o usuário não tenha acesso a essa chamada e que a mesma seja //feita periódicamente (usando um agendador) por exemplo 3 ou 4 vezes ao dia no //máximo. error_reporting(E_ALL); ini_set('display_errors', 'On'); require_once '../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP('', 1, false); $modSOAP = '2'; //usando cURL $tpAmb = '1'; //usando produção $indNFe = '0'; $indEmi = '0'; $ultNSU = ''; $ambNac = true; $retorno = array(); $indCont = 1; $limite = 1; $nxm = '<?xml version="1.0" encoding="utf-8"?><root>'; while ($indCont != 0) { if (!($xml = $nfe->getListNFe($ambNac, $indNFe, $indEmi, $ultNSU, $tpAmb, $retorno))) { echo "Houve erro !! {$nfe->errMsg}"; echo '<br><br><PRE>';
<?php /* * Exemplo de solicitação de Inutilização de faixa de numeros * da NFe (modelo 55) */ require_once dirname(__FILE__) . '/../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP('', 2, false); $nAno = '13'; //ano atual com 2 digitos $nSerie = '1'; //numero da serie da NFe que será inutilizada $nIni = '4'; // numero inicial da faixa que será inutilizada $nFin = '6'; // numero final da faixa que será inutilizada $xJust = 'Falha na gravação da base de doas do ERP'; // entre 15 e 255 dígitos $tpAmb = '2'; //homologação $modSOAP = '2'; //usando cURL header('Content-type: text/html; charset=UTF-8'); if ($xml = $nfe->inutNF($nAno, $nSerie, $nIni, $nFin, $xJust, $tpAmb, $modSOAP)) { //houve retorno mostrar dados echo '<br>'; echo '<pre>'; echo htmlspecialchars($nfe->soapDebug); echo '</pre>'; echo '<br>'; echo 'Retorno da Solicitação de Inutilização';
<?php require_once '../libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP('', 1, false); $modSOAP = '2'; //usando cURL $tpAmb = '2'; //usando produção $chNFe = '<chave de 44 digitos>'; /* $tpEvento = '210200';//Confirmacao da Operacao //confirma a operação e o recebimento da mercadoria (para as operações com circulação de mercadoria) //Após a Confirmação da Operação pelo destinatário, a empresa emitente fica automaticamente impedida de cancelar a NF-e $tpEvento = '210210'; //Ciencia da Operacao //encrenca !!! Não usar //O evento de “Ciência da Operação” é um evento opcional e pode ser evitado //Após um período determinado, todas as operações com “Ciência da Operação” deverão //obrigatoriamente ter a manifestação final do destinatário declarada em um dos eventos de //Confirmação da Operação, Desconhecimento ou Operação não Realizada $tpEvento = '210220'; //Desconhecimento da Operacao //Uma empresa pode ficar sabendo das operações destinadas a um determinado CNPJ //consultando o “Serviço de Consulta da Relação de Documentos Destinados” ao seu CNPJ. //O evento de “Desconhecimento da Operação” permite ao destinatário informar o seu //desconhecimento de uma determinada operação que conste nesta relação, por exemplo $tpEvento = '210240'; //Operacao nao Realizada //não aceitação no recebimento que antes se fazia com apenas um carimbo na NF */ $tpEvento = '210200'; $resp = ''; if (!($xml = $nfe->manifDest($chNFe, $tpEvento, '', $tpAmb, $modSOAP, $resp))) {
<?php /* * Exemplo de solicitação da situação da NFe atraves do numero do * recibo de uma nota enviada e recebida com sucesso pelo SEFAZ */ require_once dirname(__FILE__) . '/../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $modSOAP = '2'; //usando cURL $recibo = ''; //este é o numero do seu recibo mude antes de executar este script $chave = '41140806161494000172550010000000221324615473'; $tpAmb = '2'; //homologação header('Content-type: text/xml; charset=UTF-8'); if ($aResp = $nfe->getProtocol($recibo, $chave, $tpAmb, $retorno)) { //houve retorno mostrar dados print_r($aResp); } else { //não houve retorno mostrar erro de comunicação echo "Houve erro !! {$nfe->errMsg}"; }
<?php require_once '../../libs/NFe/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP('', 1); $UF = 'SP'; $CNPJ = '43651066000154'; $IE = ''; $CPF = ''; $tpAmb = '2'; $modSOAP = '2'; if ($resposta = $nfe->consultaCadastro($UF, $CNPJ, $IE, $CPF, $tpAmb, $modSOAP)) { print_r($resposta); echo '<PRE>'; echo htmlspecialchars($nfe->soapDebug); echo '</PRE><BR>'; } else { echo "Houve erro !! {$nfe->errMsg}"; echo '<PRE>'; echo htmlspecialchars($nfe->soapDebug); echo '</PRE><BR>'; }
<?php require_once '../libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $nfefile = $nfe->envDir . '35130471780456000160550010000000411000000410-nfe.xml'; $protfile = $nfe->temDir . '35130471780456000160550010000000411000000410-prot.xml'; if ($xml = $nfe->addProt($nfefile, $protfile)) { file_put_contents($nfe->aprDir . '35130471780456000160550010000000411000000410-procNfe.xml', $xml); }
/** * __contruct * @param array $aConfig * @param int $mododebug * @param boolean $exceptions * @param boolean $save_files : atributo que visa o salvamento automático das informações */ public function __construct($aConfig = '', $mododebug = 2, $exceptions = false, $save_files = true) { parent::__construct($aConfig, $mododebug, $exceptions); $sAmb = $this->tpAmb == 2 ? 'homologacao' : 'producao'; $url_servico = "https://{$sAmb}.ginfes.com.br/ServiceGinfesImpl"; /* - adequações de ambiente - */ $this->nfseDir = $this->arqDir . $sAmb . DIRECTORY_SEPARATOR . 'nfse' . DIRECTORY_SEPARATOR; $this->schemeVer = "NFSe/ginfes"; $this->save_files = $save_files; $this->__cria_estrutura_diretorios(); //--------------------------------------------------------------------------------------------------// //DEFINIÇÃO DAS CHAMADAS AO SERVIÇOS //--------------------------------------------------------------------------------------------------// $this->mURL['EnviarLoteRpsEnvio']['url'] = $url_servico; $this->mURL['EnviarLoteRpsEnvio']['version'] = 'v03'; $this->mURL['EnviarLoteRpsEnvio']['method'] = 'RecepcionarLoteRpsV3'; $this->mURL['EnviarLoteRpsEnvio']['xsd'] = 'servico_enviar_lote_rps_envio_v03.xsd'; $this->mURL['ConsultarLoteRpsEnvio']['url'] = $url_servico; $this->mURL['ConsultarLoteRpsEnvio']['version'] = 'v03'; $this->mURL['ConsultarLoteRpsEnvio']['method'] = 'ConsultarLoteRpsV3'; $this->mURL['ConsultarLoteRpsEnvio']['xsd'] = 'servico_consultar_lote_rps_envio_v03.xsd'; $this->mURL['ConsultarSituacaoLoteRpsEnvio']['url'] = $url_servico; $this->mURL['ConsultarSituacaoLoteRpsEnvio']['version'] = 'v03'; $this->mURL['ConsultarSituacaoLoteRpsEnvio']['method'] = 'ConsultarSituacaoLoteRpsV3'; $this->mURL['ConsultarSituacaoLoteRpsEnvio']['xsd'] = 'servico_consultar_situacao_lote_rps_envio_v03.xsd'; $this->mURL['ConsultarNfseRpsEnvio']['url'] = $url_servico; $this->mURL['ConsultarNfseRpsEnvio']['version'] = 'v03'; $this->mURL['ConsultarNfseRpsEnvio']['method'] = 'ConsultarNfsePorRpsV3'; $this->mURL['ConsultarNfseRpsEnvio']['xsd'] = 'servico_consultar_nfse_rps_envio_v03.xsd'; $this->mURL['ConsultarNfseEnvio']['url'] = $url_servico; $this->mURL['ConsultarNfseEnvio']['version'] = 'v03'; $this->mURL['ConsultarNfseEnvio']['method'] = 'ConsultarNfseV3'; $this->mURL['ConsultarNfseEnvio']['xsd'] = 'servico_consultar_nfse_envio_v03.xsd'; /* $this->mURL['CancelarNfseEnvio']['url'] = $url_servico; $this->mURL['CancelarNfseEnvio']['version'] = '3'; $this->mURL['CancelarNfseEnvio']['method'] = 'CancelarNfseV3'; $this->mURL['CancelarNfseEnvio']['xsd'] = 'servico_cancelar_nfse_envio_v03.xsd'; */ $this->mURL['CancelarNfseEnvio']['url'] = $url_servico; $this->mURL['CancelarNfseEnvio']['version'] = 'v02'; $this->mURL['CancelarNfseEnvio']['method'] = 'CancelarNfse'; $this->mURL['CancelarNfseEnvio']['xsd'] = 'servico_cancelar_nfse_envio_v02.xsd'; }
<?php /* * Exemplo de envio de Nfe já assinada e validada */ require_once '../libs/ToolsNFePHP.class.php'; $nfe = new ToolsNFePHP(); $modSOAP = '2'; //usando cURL //use isso, este é o modo manual voce tem mais controle sobre o que acontece $filename = './35101158716523000119550010000000011003000000-nfe.xml'; //obter um numero de lote $lote = substr(str_replace(',', '', number_format(microtime(true) * 1000000, 0)), 0, 15); // montar o array com a NFe $aNFe = array(0 => file_get_contents($filename)); //enviar o lote if ($aResp = $nfe->sendLot($aNFe, $lote, $modSOAP)) { if ($aResp['bStat']) { echo "Numero do Recibo : " . $aResp['nRec'] . ", use este numero para obter o protocolo ou informações de erro no xml com testaRecibo.php."; } else { echo "Houve erro !! {$nfe->errMsg}"; } } else { echo "houve erro !! {$nfe->errMsg}"; } echo '<BR><BR><h1>DEBUG DA COMUNICAÇÕO SOAP</h1><BR><BR>'; echo '<PRE>'; echo htmlspecialchars($nfe->soapDebug); echo '</PRE><BR>';