Last active
August 27, 2015 17:30
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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