API para envio de NFSe: exemplo em PHP

Integração NFe - DocumentaçãoPara poder emitir uma NFSe usando a linguagem PHP você precisa de apenas duas extensões PECL, que são:

  1. 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
  2. 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
<?php

# Você deve definir isso globalmente para sua aplicação
$SERVER = "http://producao.acrasnfe.acras.com.br";
$TOKEN = "token_recebido_do_suporte";

$nfse = array(
  "data_emissao" => '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.

 

Base de conhecimento: http://ajuda.acras.com.br/hc/pt-br/articles/206353143

 

O post API para envio de NFSe: exemplo em PHP apareceu primeiro em Acras.