Skip to content

Instantly share code, notes, and snippets.

@acras
Last active August 27, 2015 17:30
Show Gist options
  • Save acras/a59a014866337597b00d to your computer and use it in GitHub Desktop.
Save acras/a59a014866337597b00d to your computer and use it in GitHub Desktop.
Este código mostra como enviar uma NFSe através da API do Focus NFe
# coding=utf-8
import json
import requests
import ast
##########################################################################################
# Exemplo de envio de NFSe no município de Sâo Paulo pela API do Focus NFe
#
# https://focusnfe.com.br/api
# Documentação: https://focusnfe.com.br/api-documentacao
#
# IMPORTANTE
# * Os dados aqui contidos devem ser alterados pelo token enviado pelo suporte técnico
# * A ref precisa ser alterada a cada nova requisição
#
##########################################################################################
#CONSTANTES da empresa e do acesso à API
url_servico = 'http://homologacao.acrasnfe.acras.com.br/nfse.json' #Para produção alterar a URL
token = '************************' #Informe o Token recebido do suporte
cnpj = "99999999999999" #Informe o CNPJ correto do emitente
inscricao_municipal = "99999999" #Informe a IM do emitente
codigo_municipio = "3550308" #Código IBGE do município de SP
#Reference é a identificação utilizada para encontrar esta nota em consultas
#posteriores, não pode se repetir, aqui está como constante mas deve ser
#utilizada alguma identificação interna do sistema
ref = 'py0008'
#montar os dados em um Hash
data = {}
# Informações gerais da nota
data["data_emissao"] = "2015-07-28"
# Informações do prestador do serviço
data["prestador"] = {}
data["prestador"]["cnpj"] = cnpj
data["prestador"]["inscricao_municipal"] = inscricao_municipal
data["prestador"]["codigo_municipio"] = codigo_municipio
# informações do tomador do serviço
data["tomador"] = {}
data["tomador"]["cnpj"] = "07504505000132"
data["tomador"]["razao_social"] = "Acras Tecnologia da Informação LTDA"
data["tomador"]["email"] = "contato@acras.com.br"
data["tomador"]["endereco"] = {}
data["tomador"]["endereco"]["logradouro"] = "Rua Dias da Rocha Filho"
data["tomador"]["endereco"]["numero"] = "250"
data["tomador"]["endereco"]["complemento"] = "Sala 02"
data["tomador"]["endereco"]["bairro"] = "Alto da Rua XV"
data["tomador"]["endereco"]["codigo_municipio"] = "3550308"
data["tomador"]["endereco"]["cep"] = "80045130"
# Informações do serviço
data["servico"] = {}
data["servico"]["aliquota"] = 0.02
data["servico"]["discriminacao"] = "Nota fiscal referente a serviços prestados"
data["servico"]["iss_retido"] = False
data["servico"]["item_lista_servico"] = "02798"
data["servico"]["valor_servicos"] = 633.55
#Transforma os dados montados em um objeto JSON, pronto para ser enviado para a API
json_data = json.dumps(data)
#Realiza a requisição HTTP e envia a nota para a API
print 'Enviando a Nota ref.: ' + ref
r = requests.post(url_servico + "?ref="+ ref +"&token=" + token, data=json_data)
if r.status_code == 202:
print "Nota Aceita, realizar a consulta à mesma ref para obter o resultado"
else:
print "..Erro no envio da nota: código HTTP: " + str(r.status_code) + ', mensagem: ' + r.reason
results = ast.literal_eval(r.content)
erros = results["erros"]
print " Detalhes dos erros"
for e in erros:
print " * " + e["codigo"] + ": " + e["mensagem"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment