Integração
Exemplo de código em PHP
Hoje o PHP é uma das linguagens mais utilizadas no Brasil para o desenvolvimento de aplicações Web, variando desde pequenos Web Sites até ERPs completos. Desenvolvedores utilizam o PHP puro ou, mais usualmente, em conjunto com frameworks.
A emissão de NFe, NFSe ou NFCe utilizando PHP pode ser feita de forma direta através da comunicação sem intermediários com as receitas estaduais ou prefeituras, porém existem inúmeras vantagens em utilizar uma API de terceiros para esta emissão.
A Focus NFe possui uma API simples e completa para emissão destes documentos fiscais, abaixo você irá encontrar exemplos funcionais de código-fonte em PHP utilizando a nossa API.
<?php
/* Você deve definir isso globalmente para sua aplicação.
Para ambiente de produção utilize e a variável abaixo:
$server = "https://api.focusnfe.com.br"; */
$server = "https://homologacao.focusnfe.com.br";
// Substituir a variável, ref, pela sua identificação interna de nota.
$ref = "12345";
$login = "token obtido no cadastro da empresa";
$password = "";
$nfe = array (
"natureza_operacao" => "Remessa",
"data_emissao" => "2017-11-30T12:00:00",
"data_entrada_saida" => "2017-11-3012:00:00",
"tipo_documento" => "1",
"finalidade_emissao" => "1",
"cnpj_emitente" => "51916585000125",
"nome_emitente" => "ACME LTDA",
"nome_fantasia_emitente" => "ACME LTDA",
"logradouro_emitente" => "R. Padre Natal Pigato",
"numero_emitente" => "100",
"bairro_emitente" => "Santa Felicidade",
"municipio_emitente" => "Curitiba",
"uf_emitente" => "PR",
"cep_emitente" => "82320030",
"inscricao_estadual_emitente" => "101942171617",
"nome_destinatario" => "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL",
"cpf_destinatario" => "51966818092",
"telefone_destinatario" => "1196185555",
"logradouro_destinatario" => "Rua S\u00e3o Janu\u00e1rio",
"numero_destinatario" => "99",
"bairro_destinatario" => "Crespo",
"municipio_destinatario" => "Manaus",
"uf_destinatario" => "AM",
"pais_destinatario" => "Brasil",
"cep_destinatario" => "69073178",
"valor_frete" => "0.0",
"valor_seguro" => "0",
"valor_total" => "47.23",
"valor_produtos" => "47.23",
"modalidade_frete" => "0",
"items" => array(
array(
"numero_item" => "1",
"codigo_produto" => "1232",
"descricao" => "Cartu00f5es de Visita",
"cfop" => "6923",
"unidade_comercial" => "un",
"quantidade_comercial" => "100",
"valor_unitario_comercial" => "0.4723",
"valor_unitario_tributavel" => "0.4723",
"unidade_tributavel" => "un",
"codigo_ncm" => "49111090",
"quantidade_tributavel" => "100",
"valor_bruto" => "47.23",
"icms_situacao_tributaria" => "400",
"icms_origem" => "0",
"pis_situacao_tributaria" => "07",
"cofins_situacao_tributaria" => "07"
)
),
);
// Inicia o processo de envio das informações usando o cURL.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server."/v2/nfe?ref=" . $ref);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($nfe));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$body = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// As próximas três linhas são um exemplo de como imprimir as informações de retorno da API.
print($http_code."\n");
print($body."\n\n");
print("");
curl_close($ch);
?>
<?php
// Você deve definir isso globalmente para sua aplicação
// Para ambiente de produção use a variável abaixo:
// $server = "https://api.focusnfe.com.br";
$server = "https://homologacao.focusnfe.com.br";
// Substituir pela sua identificação interna da nota
$ref = "12345";
$login = "token obtido no cadastro da empresa";
$password = "";
$nfse = array (
"data_emissao" => "2017-12-27T17:43:14-3:00",
"incentivador_cultural" => "false",
"natureza_operacao" => "1",
"optante_simples_nacional" => "false",
"prestador" => array(
"cnpj" => "51916585000125",
"inscricao_municipal" => "12345",
"codigo_municipio" => "4119905"
),
"tomador" => array(
"cnpj" => "07504505000132",
"razao_social" => "Acras Tecnologia da Informação LTDA",
"email" => "contato@focusnfe.com.br",
"endereco" => array(
"bairro" => "Jardim America",
"cep" => "81530900",
"codigo_municipio" => "4119905",
"logradouro" => "Rua ABC",
"numero" => "16",
"uf" => "PR"
)
),
"servico" => array(
"discriminacao" => "Exemplo Servi\u00e7o",
"iss_retido" => "false",
"item_lista_servico" => "106",
"codigo_cnae" => "6319400",
"valor_servicos" => "1.00"
),
);
// Inicia o processo de envio das informações usando o cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server."/v2/nfse?ref=" . $ref);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($nfse));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$body = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//as três linhas abaixo imprimem as informações retornadas pela API, aqui o seu sistema deverá
//interpretar e lidar com o retorno
print($http_code."\n");
print($body."\n\n");
print("");
curl_close($ch);
?>
<?php
/* Você deve definir isso globalmente para sua aplicação.
Para ambiente de produção utilize e a variável abaixo:
$server = "https://api.focusnfe.com.br"; */
$server = "https://homologacao.focusnfe.com.br";
// Substituir a variável, ref, pela sua identificação interna de nota.
$ref = "12345";
$login = "token obtido no cadastro da empresa";
$password = "";
$nfe = array (
"cnpj_emitente" => "51916585000125",
"data_emissao" => "2017-12-07T12:40:10",
"indicador_inscricao_estadual_destinatario" => "9",
"modalidade_frete" => "9",
"local_destino" => "1",
"presenca_comprador" => "1",
"natureza_operacao" => "VENDA AO CONSUMIDOR",
"itens" => array(
array(
"numero_item" => "1",
"codigo_ncm" => "62044200",
"quantidade_comercial" => "1.00",
"quantidade_tributavel" => "1.00",
"cfop" => "5102",
"valor_unitario_tributavel" => "1.00",
"valor_unitario_comercial" => "1.00",
"valor_desconto" => "0.00",
"descricao" => "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL",
"codigo_produto" => "251887",
"icms_origem" => "0",
"icms_situacao_tributaria" => "102",
"unidade_comercial" => "un",
"unidade_tributavel" => "un",
"valor_total_tributos" => "1.00"
)
),
"formas_pagamento" => array(
array(
"forma_pagamento" => "03",
"valor_pagamento" => "1.00",
"nome_credenciadora" => "Cielo",
"bandeira_operadora" => "02",
"numero_autorizacao" => "R07242"
)
),
);
// Inicia o processo de envio das informações usando o cURL.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server."/v2/nfce?ref=" . $ref);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($nfe));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$body = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// As próximas três linhas são um exemplo de como imprimir as informações de retorno da API.
print($http_code."\n");
print($body."\n\n");
print("");
curl_close($ch);
?>
<?php
// Para ambiente de produção use a variável abaixo:
// $server = "https://api.focusnfe.com.br/";
$server = "https://homologacao.focusnfe.com.br";
// Substituir pela sua identificação interno do CTe.
$ref = "12345";
$login = "Token_obtido_no_cadastro_da_empresa";
$password = "";
$cte = array (
"bairro_emitente" => "S\u00e3o Cristov\u00e3o",
"bairro_tomador" => "Bacacheri",
"cep_emitente" => "99880077",
"cep_tomador" => "88991188",
"cfop" => "5353",
"cnpj_emitente" => "51916585000125",
"cnpj_tomador" => "51966818092777",
"codigo_municipio_emitente" => "2927408",
"codigo_municipio_envio" => "5200050",
"codigo_municipio_fim" => "3100104",
"codigo_municipio_inicio" => "5200050",
"codigo_municipio_tomador" => "4106902",
"codigo_pais_tomador" => "1058",
"complemento_emitente" => "Andar 19 - sala 23",
"data_emissao" => "2018-06-18T09:17:00",
"descricao_servico" => "Descricao do seu servico aqui",
"documentos_referenciados" => array(
array (
"data_emissao" => "2018-06-10",
"numero" => "1",
"serie" => "1",
"subserie" => "1",
"valor" => "1.00"
)
),
"funcionario_emissor" => "Nome do funcionario que fez a emissao",
"icms_aliquota" => "17.00",
"icms_base_calculo" => "1.00",
"icms_situacao_tributaria" => "00",
"icms_valor" => "0.17",
"indicador_inscricao_estadual_tomador" => "9",
"inscricao_estadual_emitente" => "12345678",
"logradouro_emitente" => "Aeroporto Internacional de Salvador",
"logradouro_tomador" => "Rua Jo\u00e3o Dalegrave",
"modal" => "02",
"municipio_emitente" => "Salvador",
"municipio_envio" => "Abadia de Goi\u00e1s",
"municipio_fim" => "Abadia dos Dourados",
"municipio_inicio" => "Abadia de Goi\u00e1s",
"municipio_tomador" => "Curitiba",
"natureza_operacao" => "PREST. DE SERV. TRANSPORTE A ESTAB. COMERCIAL",
"nome_emitente" => "ACME LTDA",
"nome_fantasia_emitente" => "ACME",
"nome_fantasia_tomador" => "Nome do tomador do servico aqui",
"nome_tomador" => "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL",
"numero_emitente" => "S/N",
"numero_fatura" => "1",
"numero_tomador" => "1",
"pais_tomador" => "BRASIL",
"quantidade" => "1.00",
"seguros_carga" => array(
array (
"nome_seguradora" => "Nome da seguradora aqui",
"numero_apolice" => "12345",
"responsavel_seguro" => 4
)
),
"telefone_emitente" => "4133336666",
"tipo_documento" => 0,
"tipo_servico" => 6,
"uf_emitente" => "BA",
"uf_envio" => "GO",
"uf_fim" => "MG",
"uf_inicio" => "GO",
"uf_tomador" => "PR",
"valor_desconto_fatura" => "0.00",
"valor_inss" => "0.10",
"valor_liquido_fatura" => "1.00",
"valor_original_fatura" => "1.00",
"valor_receber" => "1.00",
"valor_total" => "1.00",
"valor_total_tributos" => "0.00"
);
// Inicia o processo de envio das informações usando o cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server."/v2/cte?ref=" . $ref);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($cte));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$body = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//As três linhas abaixo imprimem as informações retornadas pela API, aqui o seu sistema devera interpretar e lidar com o retorno.
print($http_code."\n");
print($body."\n\n");
print("");
curl_close($ch);
?>
Faça parte você também
Junte-se à comunidade de desenvolvedores que deu adeus à burocracia das notas fiscais.