NFePHP\NFe\ToolsNFe::zPutQRTag PHP Méthode

zPutQRTag() protected méthode

zPutQRTag Monta a URI para o QRCode e coloca a tag no xml já assinado
protected zPutQRTag ( NFePHP\Common\Dom\Dom $dom, $saveFile ) : string
$dom NFePHP\Common\Dom\Dom
Résultat string NOTA: O Campo QRCode está habilitado para uso a partir de 01/10/2015 homologação 03/11/2015 Produção
    protected function zPutQRTag(Dom $dom, $saveFile)
    {
        //pega os dados necessários para a montagem da URI a partir do xml
        $nfe = $dom->getNode('NFe');
        $ide = $dom->getNode('ide');
        $dest = $dom->getNode('dest');
        $icmsTot = $dom->getNode('ICMSTot');
        $signedInfo = $dom->getNode('SignedInfo');
        $chNFe = $dom->getChave('infNFe');
        $cUF = $dom->getValue($ide, 'cUF');
        $tpAmb = $dom->getValue($ide, 'tpAmb');
        $dhEmi = $dom->getValue($ide, 'dhEmi');
        $cDest = '';
        if (!empty($dest)) {
            //pode ser CNPJ , CPF ou idEstrageiro
            $cDest = $dom->getValue($dest, 'CNPJ');
            if ($cDest == '') {
                $cDest = $dom->getValue($dest, 'CPF');
                if ($cDest == '') {
                    $cDest = $dom->getValue($dest, 'idEstrangeiro');
                }
            }
        }
        $vNF = $dom->getValue($icmsTot, 'vNF');
        $vICMS = $dom->getValue($icmsTot, 'vICMS');
        $digVal = $dom->getValue($signedInfo, 'DigestValue');
        $token = $this->aConfig['tokenNFCe'];
        $idToken = $this->aConfig['tokenNFCeId'];
        $versao = '100';
        /*
         *Pega a URL para consulta do QRCode do estado emissor,
         *essa url está em nfe_ws3_mode65.xml, em tese essa url
         *NÃO É uma WebService, é simplismente uma página para
         *consulta do QRCode via parametros GET, percebe-se que
         *em todas as SEFAZ o endereço de consulta do QRCode se
         *difere do padrão de endereço das WS.
         *Esse é um serviço para ser utilizado pelo consumidor...
         *NOTA: Sem o endereço de consulta não é possível gerar o QR-Code!!!
         */
        //carrega serviço
        $servico = 'NfeConsultaQR';
        $siglaUF = $this->zGetSigla($cUF);
        $this->zLoadServico('nfe', $servico, $siglaUF, $tpAmb);
        if ($this->urlService == '') {
            $this->errors[] = "A consulta por QRCode não está disponível na SEFAZ {$siglaUF}!!!";
            return $dom->saveXML();
        }
        $url = $this->urlService;
        //usa a função zMakeQRCode para gerar a string da URI
        $qrcode = $this->zMakeQRCode($chNFe, $url, $tpAmb, $dhEmi, $vNF, $vICMS, $digVal, $token, $cDest, $idToken, $versao);
        if ($qrcode == '') {
            return $dom->saveXML();
        }
        //inclui a TAG NFe/infNFeSupl com o qrcode
        $infNFeSupl = $dom->createElement("infNFeSupl");
        $nodeqr = $infNFeSupl->appendChild($dom->createElement('qrCode'));
        $nodeqr->appendChild($dom->createCDATASection($qrcode));
        $signature = $dom->getElementsByTagName('Signature')->item(0);
        $nfe->insertBefore($infNFeSupl, $signature);
        $dom->formatOutput = false;
        $xmlSigned = $dom->saveXML();
        //salva novamente o xml assinado e agora com o QRCode
        if ($saveFile) {
            $anomes = date('Ym', DateTime::convertSefazTimeToTimestamp($dhEmi));
            $filename = "{$chNFe}-nfe.xml";
            $this->zGravaFile('nfe', $tpAmb, $filename, $xmlSigned, 'assinadas', $anomes);
        }
        //retorna a string com o xml assinado e com o QRCode
        return $xmlSigned;
    }