yagosenhorini / client-ruby

Official NFe.io API Client for Ruby

Home Page:http://nfe.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

NFe.io para Ruby

Instalação

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

Exemplos de uso

Emitir nota fiscal

# 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: 'nfe-io@mailinator.com', # 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))

Download da Nota Fiscal

# 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')

Cancelar Nota Fiscal

# 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"

Como validar o Webhook?

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

Contribuir

Envio de bugs e pull requests são muito bem vindos no https://github.com/nfe/client-ruby.

Como atualizar o pacote

  • 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

License

Originalmente criado pela equipe da Pluga.

Esta gem é open source sob os termos da Licença MIT.

About

Official NFe.io API Client for Ruby

http://nfe.io

License:MIT License


Languages

Language:Ruby 99.6%Language:Shell 0.4%