Incluir essa linha no Gemfile da sua aplicação:
gem 'nfe-io'
E depois execute:
$ bundle
Ou instale diretamente via comando:
$ gem install nfe-io
# Define a API Key, conforme está no painel
Nfe.api_key('c73d49f9649046eeba36dcf69f6334fd')
# ID da empresa, você encontra no painel
Nfe::ServiceInvoice.company_id("55df4dc6b6cd9007e4f13ee8")
# Dados do Tomador dos Serviços
customer_params = {
borrower: {
federalTaxNumber: '191', # CNPJ ou CPF (opcional para tomadores no exterior)
name: 'BANCO DO BRASIL SA', # Nome da pessoa física ou Razão Social da Empresa
email: '[email protected]', # Email para onde deverá ser enviado a nota fiscal
# Endereço do tomador
address: {
country: 'BRA', # Código do pais com três letras
postalCode: '70073901', # CEP do endereço (opcional para tomadores no exterior)
street: 'Rua Do Cliente', # Logradouro
number: 'S/N', # Número (opcional)
additionalInformation: 'QUADRA 01 BLOCO G', # Complemento (opcional)
district: 'Asa Sul', # Bairro
city: { # Cidade é opcional para tomadores no exterior
code: 4204202, # Código do IBGE para a Cidade
name: 'Brasilia' # Nome da Cidade
},
state: 'DF'
}
}
}
# Dados da nota fiscal de serviço
service_params = {
cityServiceCode: '2690', # Código do serviço de acordo com o a cidade
description: 'Teste, para manutenção e suporte técnico.', # Descrição dos serviços prestados
servicesAmount: 0.1 # Valor total do serviços
}
# Emite a nota fiscal
invoice_create_result = Nfe::ServiceInvoice.create(customer_params.merge(service_params))
# Define a API Key, conforme está no painel
Nfe.api_key('c73d49f9649046eeba36dcf69f6334fd')
# ID da empresa, você encontra no painel
Nfe::ServiceInvoice.company_id("55df4dc6b6cd9007e4f13ee8")
# Os formatos suportados são :pdf e :xml, e o primeiro parâmetro é o ID da nota
invoice = Nfe::ServiceInvoice.download("59443a0e2a8b6806986d7a2d", :pdf)
# O conteúdo do PDF/XML pode ser acessado da seguinte forma
invoice.body
# Caso você esteja utilizando Rails, pode usar o método send_data para retornar
# o conteúdo da Nota Fiscal diretamente para o usuário
# Note que neste caso o arquivo é o PDF, mas poderia ser o XML, mude se necessário
send_data(invoice.body, filename: 'invoice.pdf', type: 'application/pdf')
# Define a API Key, conforme está no painel
Nfe.api_key('c73d49f9649046eeba36dcf69f6334fd')
# ID da empresa, você encontra no painel
Nfe::ServiceInvoice.company_id("55df4dc6b6cd9007e4f13ee8")
# O parâmetro é o ID da nota
invoice = Nfe::ServiceInvoice.cancel("59443a0e2a8b6806986d7a2d")
# A resposta são os dados da nota com a mudança de estado para "WaitingSendCancel"
def request_is_authentic?
body = request.body.read
signature = request.headers['X-NFEIO-Signature']
hash = 'sha1=' + Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), ENV.fetch("NFEIO_WEBHOOK_SECRET"), body))
ActiveSupport::SecurityUtils.secure_compare(hash, signature)
end
Envio de bugs e pull requests são muito bem vindos no https://github.com/nfe/client-ruby.
- Alterar versão do pacote no arquivo /lib/nfe/version.rb
- Comitar nova versão, com uma descrição como abaixo
git add lib/nfe/version.rb
git commit -m 'Bump version 0.3.0'
- Criar git tag
git tag 0.3.0
- Executar gem build, repare que um novo arquivo será criado, com a versão do pacote alterada acima
gem build nfe.gemspec
- Executar gem push do pacote gem criado
gem push nfe-io-0.3.0.gem
Originalmente criado pela equipe da Pluga.
Esta gem é open source sob os termos da Licença MIT.