Exemplo de código em PHP
Sobre o 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
O 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.
Envio de uma NFe
"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);
?>
Envio de uma NFSe
"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);
?>
Envio de uma NFCe
"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);
?>
Envio de uma CTe
"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);
?>
Manifesto do Destinatário
"confirmacao");
// Para ambiente de Produção, utilize a URL: https://api.focusnfe.com.br/.
$server = "https://homologacao.focusnfe.com.br/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server."v2/nfes_recebidas/".$chave."/manifesto");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($tipo));
/* Métodos para realizar a autenticação básica do HTTP.
Não é necessário informar campo senha, apenas o campo login. */
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login");
$body = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Mostra na tela o HTTP Code da sua requisição.
print($http_code);
// Mostra na tela a mensagem de retorno da API.
print($body);
curl_close($ch);
?>
A integração com nossa API é simples e rápida e nossa documentação aberta e objetiva. Tudo isso pensando na sua economia de tempo.
Deseja testar nossa API?
Solicite um contato comercial e teremos prazer em ajudar.