Tutorial completo de integração do Focus NFe com a linguagem ASP.NET.
Nosso cliente Felipe Freitas além de integrar o seu sistema com o nosso em poucas horas, ainda reservou um tempinho para escrever um tutorial completo de como integrar um sistema escrito em ASP.NET com o Focus NFe. Muito obrigado Felipe pela sua contribuição! Segue o texto do Felipe:
Para emitirmos uma NFe usando ASP.NET MVC com C#, precisaremos de uma biblioteca para fazer a serialização, um objeto em YAML, que é um dos formatos que a API do Focus NFe aceita. (Site da biblioteca: http://www.aaubry.net/page/YamlDotNet)
Vamos abrir o Visual Studio e criar um projeto. Para este exemplo irei utilizar a versão 2013 Ultimate.
1 - Vá para a guia File > New Project Na lista de Templates escolha Visual C# > Web e escolha o template ASP.NET Web Application e dê um nome de sua preferência ao projeto, no nosso caso usaremos FocusNFeApi. Clique em OK e escolha a opção MVC e clique em OK novamente.
3 – O Primeiro passo será instalar a biblioteca, que está disponível como um pacote NuGet. Abra o Package Manager Console e digite: Install-Package YamlDotNet
2 - Abra a View Index.cshtml do Controller Home e deixe-a dessa maneira:
@{ ViewBag.Title = "Home Page"; } @ViewBag.Retorno @using (Html.BeginForm("EmitirNFe", "Home")){ @:REF: @Html.TextBox("referencia") ; } @using (Html.BeginForm("ConsultarStatusNFe", "Home")){ @:REF: @Html.TextBox("referencia") } Caminho DANFE: @ViewBag.caminhoDanfe Caminho XML: @ViewBag.caminhoXML Chave NFe: @ViewBag.chaveNFe Mensagem SEFAZ: @ViewBag.mensagemSefaz Numero NFe: @ViewBag.numeroNFe Status: @ViewBag.status Código Status: @ViewBag.codigoStatus
3 – Abra o HomeController.cs e defina as seguintes variáveis globalmente dentro do Controller:
static string focusToken = "token_recebido_do_suporte"; static string ambienteFocus = "homologacao"; //homologacao ou producao static string autorizarNFe = "http://" + ambienteFocus + ".acrasnfe.acras.com.br/nfe2/autorizar?token=" + focusToken + "&ref="; static string consultarStatusNFe = "http://" + ambienteFocus + ".acrasnfe.acras.com.br/nfe2/consultar?token=" + focusToken + "&ref=";
4 – Crie a primeira Action com atributo HttpPost que vai receber uma string com a referência da NFe que estamos emitindo. Nesse caso para exemplificação criamos apenas um TextBox onde digitaremos manualmente essa referência.
Passaremos as informações contidas na nota fiscal todas manualmente, nessa altura você já deverá ter essas informações no seu banco de dados para que possa recuperá-las e inserir cada dado em sua posição, inclusive o número de referência que deverá ficar salvo para podermos consultar o resultado de retorno da NFe na API futuramente. Para nosso exemplo deixe sua Action desta Maneira (lembre-se de considerar tratamentos de erro, pois não implementamos em nosso exemplo):
[HttpPost] public ActionResult EmitirNFe(int referencia){ var dadosNFe = new{ //Dados NFe natureza_operacao = "Venda", forma_pagamento = "0", data_emissao = DateTime.Now.ToString("yyyy-MM-dd"), tipo_documento = "1", finalidade_emissao = "1", //Dados emitente cnpj_emitente = "SEU_CNPJ", nome_emitente = "RAZÃO SOCIAL DO EMITENTE", logradouro_emitente = "RUA COELHO LISBOA", numero_emitente = "501", bairro_emitente = "TATUAPÉ", municipio_emitente = "SÃO PAULO", uf_emitente = "SP", cep_emitente = "03323040", telefone_emitente = "11999999999", inscricao_estadual_emitente = "SUA_INSCRICAO_ESTADUAL", regime_tributario_emitente = "1", //Dados destinatário cpf_destinatario = "", cnpj_destinatario = "CNPJ _DESTINATARIO", inscricao_estadual_destinatario = "INSCRICAO_ESTADUAL_DESTINATARIO", nome_destinatario = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL", logradouro_destinatario = "AV PAULISTA", numero_destinatario = "1000", bairro_destinatario = "1159", municipio_destinatario = "SÃO PAULO", codigo_municipio_destinatario = "3550308", uf_destinatario = "SP", cep_destinatario = "01310100", pais_destinatario = "BRASIL", telefone_destinatario = "11988888888", email_destinatario = "email@email.com.br", //O sistema FocusNFe enviará a nota fiscal para o e- mail passado aqui //Totais icms_base_calculo = "0.00", icms_valor_total = "0.00", icms_base_calculo_st = "0.00", icms_valor_total_st = "0.00", valor_produtos = "100.10", valor_frete = "0.00", valor_seguro = "0.00", valor_desconto = "0.00", valor_total_ii = "0.00", valor_ipi = "0.00", valor_pis = "0.00", valor_cofins = "0.00", valor_outras_despesas = "0.00", valor_total = "100.10", modalidade_frete = "1", informacoes_adicionais_contribuinte = "DOCUMENTO EMITIDO POR ME OU EPP OPTANTE PELO SIMPLES NACIONAL", items = new List