Integração NFe - Documentação

Para poder emitir uma NFSe usando a linguagem PHP você precisa de apenas duas extensões PECL, que são:

  • Parser do formato YAML: http://www.php.net/manual/en/book.yaml.php. Você irá precisar de apenas duas funções:
    yaml_emit($arr) – Devolve $arr convertido em uma string no formato YAML
    yaml_parse($str) – Devolve um array PHP a partir de uma string $str que está no formato YAML
  • Biblioteca para envio de requisições HTTP:  http://www.php.net/manual/en/book.http.php
  • Abaixo segue um exemplo de envio e consulta de NFSe usando estas bibliotecas. O formato do arquivo é único para todas as cidades. Algumas cidades podem exigir mais ou menos campos (consulte documentação). No exemplo abaixo consideramos os campos necessários para a cidade de São Paulo.

    Para executar o exemplo, salve em um arquivo “exemplo.php” no seu computador, instale as bibliotecas acima e altere o token de acesso no programa (variável $TOKEN). Em seguida, execute:

     
    php exemplo.php
     '2013-05-31T12:00:00-03:00',
      "natureza_operacao" => '1',
      "prestador" => array(
        "cnpj" => '06901848000133',
        "inscricao_municipal" => '080204613599',
        "codigo_municipio" => '4106902'
      ),
      "servico" => array(
        "aliquota" => '0.05',
        "base_calculo" => '1.0',
        "discriminacao" => "Servico de hospedagem de sites",
        "iss_retido" => "2",
        "item_lista_servico" => "06939",
        "valor_iss" => '0.5',
        "valor_liquido" => '1.0',
        "valor_servicos" => '1.0'
      ),
      "tomador" => array(
        "cpf" => '03055054912',
        "endereco" => array(
          "bairro" => 'Centro',
          "cep" => "80000000",
          "codigo_municipio" => "4106902",
          "logradouro" => "Rua Emiliano Perneta",
          "numero" => "845",
          "uf" => 'PR',
        ),
        "razao_social" => "Egon Hilgenstieler"
      )
    );
    
    print("=> Teste de envio\n");
    
    $r = new HttpRequest($SERVER."/nfse", HttpRequest::METH_POST);
    $r->addQueryData(array('token' => $TOKEN));
    # A referência é uma string que identifica univocamente uma NFSe e
    # será usada para consultas posteriores
    $r->addQueryData(array('ref' => '1234'));
    $yaml = yaml_emit($nfse);
    $r->addRawPostData($yaml);
    
    try {
        $r->send();
        $status = $r->getResponseCode();
        $body = $r->getResponseBody();
        print("Status = $status\n");
        print("Body = $body\n");
    } catch (HttpException $ex) {
        echo $ex;
    }
    
    print("=> Teste de consulta\n");
    
    # O processo de envio de NFSe é assíncrono, e pode ser necessário
    # aguardar até que a nota seja processada
    sleep(10);
    
    $r = new HttpRequest($SERVER."/nfse/1234", HttpRequest::METH_GET);
    $r->addQueryData(array('token' => $TOKEN));
    
    try {
        $r->send();
        $status = $r->getResponseCode();
        $body = $r->getResponseBody();
        print("Status = $status\n");
        print("Body = $body\n");
        $result = yaml_parse($body);
        var_dump($result);
    
    } catch (HttpException $ex) {
        echo $ex;
    }
    
    ?>
    
    

    Quer integrar seu sistema para emissão de NF-e? Clique aqui, acesse nossa documentação e saiba tudo o que você para fazer a integração do seu sistema com a noss API.