Download do XML MDF-e

Boa tarde,

Estou tendo dificuldades em baixar o XML de um MDF-e, consigo baixar normalmente…

Ambiente de Homologação

ID = mdf_3a115057f7a94abf941a149adf7bd047

Segue código :

if (isset($_GET[“mdfe_id”])) {

//Buscando o TOKEN ----------------------
include_once '../db/funcoes.php';
include_once '../certificados/token.php';

//---------------------
$token = gerar_token();
//---------------------

$MDFE = $_GET["mdfe_id"];

if ( $token != '' ) {

    $headers = [
        'Authorization: Bearer '.$token,
        'Content-Type: application/json'
    ];
    
    $url = "https://api.sandbox.nuvemfiscal.com.br/mdfe/{$MDFE}/xml/manifesto";

    $ch2 = curl_init();
    curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers );
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch2, CURLOPT_URL, $url);
    $dados = curl_exec($ch2);
    curl_close($ch2);

    echo $url.''.$dados;
};

Desde já

Agradeço

Olá @w295416,

Não entendi. Consegue, ou não consegue baixar normalmente?

Qual é o problema que está tendo?

Só consigo baixar o PDF…

O XML não veem nada… código usado acima

Você está verificando o status code? Note que pode vir uma resposta de redirect, aí você tem que tratar (ou configurar o curl para fazer isso.

Segue tópicos correspondentes:

Olá Wagner,

O status code = 200 … usei no Postman e retornou 200 + não tive nada no response.

Bom dia, @w295416.

O XML do MDF-e autorizado (endpoint GET /mdfe/mdf_3a115057f7a94abf941a149adf7bd047/xml) também está com o mesmo problema?

Não…
Esse ID (mdf_3a115057f7a94abf941a149adf7bd047) já é do MDF-e autorizado, eu consigo baixar o PDF normalmente…

Apenas o XML que esta com essa bronca…

O código p baixar o PDF e XML são identico… penas muda o ENDPOINT…

Segue código usado :

$MDFE = $_GET["mdfe_id"];

if ( $token != '' ) {

    $headers = [
        'Authorization: Bearer '.$token,
        'Content-Type: application/json'
    ];
    
    $url = "https://api.sandbox.nuvemfiscal.com.br/mdfe/{$ID_MDFE}/xml/manifesto";

    $ch2 = curl_init();
    curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers );
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch2, CURLOPT_URL, $url);
    $dados = curl_exec($ch2);
    curl_close($ch2);

    echo $dados;
};

Você está fazendo a requisição para o endpoint:
GET /mdfe/{id}/xml/manifesto

O que acontece se você fazer a requisição para:
GET /mdfe/{id}/xml

Mesmo erro? Se sim, poderia enviar prints mostrando todos os dados relevantes (status code, cabeçalhos e conteúdo) da requisição e resposta feitas no Postman?

A mesma coisa

Estou te enviando o mesmo código p buscar a DANFE


Pelo que entendi, a requisição que está retornando status code 200 é a que o navegador faz para a sua aplicação. Onde está a requisição para a API da Nuvem Fiscal?

Amigo,

Acabei de teste no POSTMAN e dar certo…

Mas no PHP não vai…

Segue o código q estou usando

if (isset($_GET[“mdfe_id”])) {

if ( $token != '' ) {

    $headers = [
        'Authorization: Bearer '.$token,
        'Content-Type: application/json'
    ];
    
    $url = "https://api.sandbox.nuvemfiscal.com.br/mdfe/mdf_3a115057f7a94abf941a149adf7bd047/xml";

    $ch2 = curl_init();
    curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers );
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch2, CURLOPT_URL, $url);
    $dados = curl_exec($ch2);
    curl_close($ch2);

    var_dump($dados);
};

};

Qual o resultado do var_dump($dados)?

String vazia

Se faço a requisição direto pela javascript… sou barrado pelo CORS

Poderia rolar essa tela mais pra baixo e mostrar a seção “Request Headers” de forma completa? Manda também a aba “Response”, por favor.

@w295416

Não veio a seção “Request Headers” e nem a aba “Response”.

Poderia enviá-las?

Lembrando q essa é pelo JAVASCRIPT… ok

Segue código

            var token = '';
            $.ajax({
              type: "GET",
              url: 'https://api.sandbox.nuvemfiscal.com.br/mdfe/mdf_3a115057f7a94abf941a149adf7bd047/xml',
              contentType: "application/json",
              data:"1",
              headers: {'Authorization': 'Bearer '+token},
              success: function(dados) {
                // console.log(dados);
              },
              error: function(err) {
                console.log(err)
              }
            });

Token removido da mensagem, não publique seu token nem nenhuma outra credencial aqui na Central de Suporte.

Pelo JavaScript está mostrando erro 403, o que significa token inválido.