BPe nao aceita cancelamento nem outros eventos

38 views
Skip to first unread message

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 15, 2025, 4:15:40 PM (6 days ago) Sep 15
to nfe...@googlegroups.com
boa tarde alguem ja implantou o BPe estou com todo modulo implantado ja aprovando tudo certinho so q pra cancelamento, evento de adicionar poltrona e nao embarque da erro de comunicação estou testando aqui no paraná em homologacao, será que tem algo diferente na comunicacao com eventos do que com o envio normal do BPe, se alguem puder me ajudar so faltar isso pra eu finalizar um projeto. 

Roberto Machado

unread,
Sep 15, 2025, 4:25:05 PM (6 days ago) Sep 15
to nfe...@googlegroups.com
Se você puder me mandar o certificado do emitente e os dados eu posso testar aqui no fim de semana e ajustar o que está dando erro.
Eu mesmo não tenho nenhum emitente de BPe autorizado para fazer esse teste.

Roberto

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 15, 2025, 4:34:50 PM (6 days ago) Sep 15
to nfe...@googlegroups.com
blz tava tentando aqui estudar melhor pra envio do BPe nao precisa dos arquivos pem pelo q vi ai ja pros eventos acho q precisa qual pasta é gerado esses .pem temporarios so pra me achar melhor 

--
--
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órios: https://github.com/nfephp-org
---
You received this message because you are subscribed to the Google Groups "NFePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nfephp+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/nfephp/CAEj7DHnLyMOeSWg%3DvrBg5%3Dk1DuTdc4%2B0EriN2-_r5j_5SgiseA%40mail.gmail.com.

Roberto Machado

unread,
Sep 15, 2025, 4:51:38 PM (6 days ago) Sep 15
to nfe...@googlegroups.com
tmp



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

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 16, 2025, 8:42:20 AM (6 days ago) Sep 16
to nfe...@googlegroups.com
Bom dia Roberto tentei de todas as formas ontem os eventos de cancelamento e os outros da mesmo erros ativei o log de erro e ta me retornando esse erro será que to fazendo errado alguma coisa, pra aprovação segue normal no PR pros eventos da esse erro de comunicação, tô achando que é algo no webservice deles mesmo e nao na biblioteca em si.  pq troquei o filediretorio pra outro caminho some esse alertas ai mais continua dando erro de comunicação.  lembrando que estou mandando em homologacao e tenho Bpe ja aprovados pela biblioteca normal.



 e esse log de erro dai   


ERRO     "status": "erro",
    "xMotivo": "Erro de comunicação via soap,  Erro interno do SERVIDOR"
}<br/>
<b>Warning</b>
:  file_exists(): open_basedir restriction in effect. File(certs/KiweImf6Cj.pem) is not within the allowed path(s): (/home/parceiro/:/tmp/:/var/tmp/:/opt/alt/php74/usr/share/pear/:/dev/urandom:/usr/local/php74/lib/:/usr/local/php74/lib/:/usr/local/php56/lib/:/usr/local/lib/php/) in <b>/home/parceiro/domains/emissor.portalnfeweb.com.br/public_html/nfe/sped-bpe/vendor/nfephp-org/sped-common/src/Files.php</b>
on line <b>76</b>
<br/>
<br/>
<b>Warning</b>
:  file_exists(): open_basedir restriction in effect. File(certs/afDf4ZU1hF.pem) is not within the allowed path(s): (/home/parceiro/:/tmp/:/var/tmp/:/opt/alt/php74/usr/share/pear/:/dev/urandom:/usr/local/php74/lib/:/usr/local/php74/lib/:/usr/local/php56/lib/:/usr/local/lib/php/) in <b>/home/parceiro/domains/emissor.portalnfeweb.com.br/public_html/nfe/sped-bpe/vendor/nfephp-org/sped-common/src/Files.php</b>
on line <b>76</b>
<br/>
<br/>
<b>Warning</b>
:  file_exists(): open_basedir restriction in effect. File(certs/CERkKbHZ0z.pem) is not within the allowed path(s): (/home/parceiro/:/tmp/:/var/tmp/:/opt/alt/php74/usr/share/pear/:/dev/urandom:/usr/local/php74/lib/:/usr/local/php74/lib/:/usr/local/php56/lib/:/usr/local/lib/php/) in <b>/home/parceiro/domains/emissor.portalnfeweb.com.br/public_html/nfe/sped-bpe/vendor/nfephp-org/sped-common/src/Files.php</b>
on line <b>76</b>
<br/>

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 16, 2025, 9:07:50 AM (6 days ago) Sep 16
to nfe...@googlegroups.com
um complemento pro PR pra ambiente de homologação pode qualquer empresa fazer os teste indiferente do cnae diferente dos outros estados que precisa se credenciar  

Ambiente de homologação (ambiente de testes) – sem validade jurídica:

  • Por ato de ofício da Secretaria da Fazenda, estarão automaticamente credenciados ao ambiente de homologação, independentemente de prévia autorização de uso de sistema emissor de documento fiscal, todos os estabelecimentos ativos inscritos no Cadastro de Contribuintes do ICMS – CAD/ICMS, com código de regime tributário que contemple emissão de documento fiscal.

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 16, 2025, 4:39:05 PM (5 days ago) Sep 16
to nfe...@googlegroups.com
boa tarde Roberto de tanto me bater a cabeça descobri o erro

esse é meu debug

DEBUG SOAPCURL
HTTP CODE: 500
CURL ERROR: NULL

ou seja ta se conectando com servidor mais a sefas ta retornando 500 por causa que

Você está mandando o SOAP body assim:

<bpeDadosMsg xmlns="http://www.portalfiscal.inf.br/bpe/wsdl/BPeRecepcaoEvento">
   <eventoBPe xmlns="http://www.portalfiscal.inf.br/bpe" versao="1.00">
       ...
   </eventoBPe>
</bpeDadosMsg>

⚠️ Errado:
O bpeDadosMsg não pode usar o namespace do WSDL (.../wsdl/BPeRecepcaoEvento).
Esse namespace é só para o WSDL.
O conteúdo que vai dentro precisa estar no namespace raiz do BPe:


Correto seria:

<bpeDadosMsg xmlns="http://www.portalfiscal.inf.br/bpe">
   <eventoBPe versao="1.00" xmlns="http://www.portalfiscal.inf.br/bpe">
       ...
   </eventoBPe>
</bpeDadosMsg>


Segundo o Manual de Orientação do BPe (MOBPe), o serviço de Recepção de Evento espera um lote de eventos, não apenas o <eventoBPe> isolado.


<bpeDadosMsg xmlns="http://www.portalfiscal.inf.br/bpe">
   <envEventoBPe versao="1.00">
      <idLote>123456</idLote>
      <eventoBPe versao="1.00">
         ... teu evento assinado aqui ...
      </eventoBPe>
   </envEventoBPe>
</bpeDadosMsg>




Segue o sefazEvento corrigido

/**
     * Send event to SEFAZ
     * @param string $uf
     * @param string $chave
     * @param int $tpEvento
     * @param int $nSeqEvento
     * @param string $tagAdic
     * @return string
     */
    protected function sefazEvento(
        $uf,
        $chave,
        $tpEvento,
        $nSeqEvento = 1,
        $tagAdic = ''
    ) {
        $ignore = false;
        $servico = 'BPeRecepcaoEvento';
        $this->servico(
            $servico,
            $uf,
            $this->tpAmb,
            $ignore
        );

        $cnpj = $this->config->cnpj;
        $dt = new \DateTime();
        $dhEvento = $dt->format('Y-m-d\TH:i:sP');
        $sSeqEvento = str_pad($nSeqEvento, 2, "0", STR_PAD_LEFT);
        $eventId = "ID".$tpEvento.$chave.$sSeqEvento;
        $cOrgao = UFList::getCodeByUF($uf);

        // monta evento
        $evento = "<eventoBPe xmlns=\"http://www.portalfiscal.inf.br/bpe\" versao=\"$this->urlVersion\">"
            . "<infEvento Id=\"$eventId\">"
            . "<cOrgao>$cOrgao</cOrgao>"
            . "<tpAmb>$this->tpAmb</tpAmb>"
            . "<CNPJ>$cnpj</CNPJ>"
            . "<chBPe>$chave</chBPe>"
            . "<dhEvento>$dhEvento</dhEvento>"
            . "<tpEvento>$tpEvento</tpEvento>"
            . "<nSeqEvento>$nSeqEvento</nSeqEvento>"
            . "<detEvento versaoEvento=\"$this->urlVersion\">"
            . "$tagAdic"
            . "</detEvento>"
            . "</infEvento>"
            . "</eventoBPe>";

        // assinatura do evento
        $eventoAssinado = Signer::sign(
            $this->certificate,
            $evento,
            'infEvento',
            'Id',
            $this->algorithm,
            $this->canonical
        );
        $eventoAssinado = Strings::clearXmlString($eventoAssinado, true);

        // validação
        $this->isValid($this->urlVersion, $eventoAssinado, 'eventoBPe');

        // monta o lote de eventos
        $idLote = str_pad(1, 15, '0', STR_PAD_LEFT);
        $envEventoBPe = "<envEventoBPe xmlns=\"http://www.portalfiscal.inf.br/bpe\" versao=\"1.00\">"
            . "<idLote>$idLote</idLote>"
            . $eventoAssinado
            . "</envEventoBPe>";

        // monta corpo SOAP
        $body = "<bpeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/bpe\">"
            . $envEventoBPe
            . "</bpeDadosMsg>";

        // salva último request
        $this->lastRequest = $eventoAssinado;

        // envia para SEFAZ
        $this->lastResponse = $this->sendRequest($body);

        return $this->lastResponse;
    }


Espero ter colaborado ai com a biblioteca depois de bater a cabeça aqui por uma semana kkk.

Roberto Machado

unread,
Sep 16, 2025, 4:41:31 PM (5 days ago) Sep 16
to nfe...@googlegroups.com
HTTP code 500 é erro interno do servidor da SEFAZ, e normalmente nada tem haver com o código da biblioteca.

Roberto

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 16, 2025, 4:45:51 PM (5 days ago) Sep 16
to nfe...@googlegroups.com
Aí q tá agora tá cancelando normalmente com ajuste aí q fiz o erro 500 e pq a Sefaz estava recebendo um soap body diferente do esperado ajustando o body o cancelamento acontece .

Em ter., 16 de set. de 2025, 17:41, Roberto Machado <linu...@gmail.com> escreveu:
HTTP code 500 é erro interno do servidor da SEFAZ, e normalmente nada tem haver com o código da biblioteca.

Roberto

--
--
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órios: https://github.com/nfephp-org
---
You received this message because you are subscribed to the Google Groups "NFePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nfephp+un...@googlegroups.com.

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 16, 2025, 4:47:02 PM (5 days ago) Sep 16
to nfe...@googlegroups.com
Espero ter ajudado

TEK CLICK SOLUÇÕES PARA EMPRESAS

unread,
Sep 16, 2025, 4:52:47 PM (5 days ago) Sep 16
to nfe...@googlegroups.com
Outra sugestão aí ali no send()

onde vc tem isso aqui ele nao pega o erro real

if ($httpcode != 200) { $msg = $this->getCodeMessage($httpcode); if ((int) $httpcode == 0) { $httpcode = 52; } elseif ((int) $httpcode == 500) { $httpcode = 89; } throw SoapException::soapFault($msg, $httpcode); }


pra quem quiser pegar realmente o erro no send()

da pra usar


if ($httpcode != 200) {
    $msg  = $this->getCodeMessage($httpcode);
    $err  = curl_error($ch);
    $info = curl_getinfo($ch);

    echo "<h3>DEBUG SOAPCURL</h3><pre>";
    echo "HTTP CODE: " . $httpcode . "\n";
    echo "CURL ERROR: " . $err . "\n";
    var_dump($info);
    echo "</pre>";

    if ((int) $httpcode == 0) {
        $httpcode = 52;
    } elseif ((int) $httpcode == 500) {
        $httpcode = 89;
    }

    throw SoapException::soapFault(
        $msg . " | CURL: " . $err,
        $httpcode
    );
}

Reply all
Reply to author
Forward
0 new messages