Created
September 6, 2016 01:59
-
-
Save acras/c4ee98f141b08fc2539adc341c7dc648 to your computer and use it in GitHub Desktop.
Exemplo de envio de NFSe utilizando a API do Focus Lojas em Ruby
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
# encoding: utf-8 | |
require 'net/http' | |
require 'yaml' | |
# Você deve definir isso globalmente para sua aplicação | |
host = 'homologacao.acrasnfe.acras.com.br' | |
token = "SEU_TOKEN_DE_ACESSO" | |
nfse = { | |
'data_emissao' => '2013-05-31T12:00:00', | |
'incentivador_cultural' => false, | |
'natureza_operacao' => '1', | |
'optante_simples_nacional' => false, | |
'regime_especial_tributacao' => '1', | |
'status' => '1', | |
'prestador' => { | |
'cnpj' => 'SEU_CNPJ', | |
'inscricao_municipal' => '1234', | |
'codigo_municipio' => '4106902', | |
}, | |
'servico' => { | |
'aliquota' => 0.05, | |
'base_calculo' => 200.0, | |
'discriminacao' => 'SUPORTE TECNICO, MANUTENCAO E OUTROS SERVICOS EM TECNOLOGIA DA INFORMACAO', | |
'iss_retido' => false, | |
'item_lista_servico' => '1.07', | |
'valor_iss' => 10.0, | |
'valor_liquido' => 200.0, | |
'valor_servicos' => 200.0, | |
'valor_deducoes' => 0, | |
'valor_pis' => 0, | |
'valor_cofins' => 0, | |
'valor_inss' => 0, | |
'valor_ir' => 0, | |
'valor_csll' => 0, | |
'valor_iss_retido' => 0, | |
'outras_retencoes' => 0, | |
'desconto_incondicionado' => 0, | |
'desconto_condicionado' => 0, | |
'codigo_tributario_municipio' => '6209100', | |
'codigo_municipio' => '4106902', | |
}, | |
'tomador' => { | |
'cpf' => '03055054911', | |
'razao_social' => 'Egon Hilgenstieler', | |
'endereco' => { | |
'bairro' => 'Centro', | |
'cep' => '80000000', | |
'codigo_municipio' => '4106902', | |
'logradouro' => 'Rua Emiliano Perneta', | |
'numero' => '845', | |
'uf' => 'PR' | |
} | |
} | |
} | |
puts "==> Teste de envio" | |
# A referência é uma string que identifica univocamente uma NFSe e | |
# será usada para consultas posteriores | |
ref = '123' | |
res = Net::HTTP.start(host, 80) do |http| | |
http.post("/nfse?token=#{token}&ref=#{ref}", nfse.to_yaml) | |
end | |
puts res.code, res.body | |
# O processo de envio de NFSe é assíncrono, e pode ser necessário | |
# aguardar até que a nota seja processada | |
sleep 10 | |
puts "==> Teste de consulta" | |
res = Net::HTTP.start(host, 80) do |http| | |
http.get("/nfse/#{ref}?token=#{token}") | |
end | |
puts res.code, res.body | |
puts "==> Teste de cancelamento" | |
res = Net::HTTP.start(host, 80) do |http| | |
http.delete("/nfse/#{ref}?token=#{token}") | |
end | |
puts res.code, res.body | |
# após o cancelamento, devemos fazer uma nova consulta para verificar | |
# se houve sucesso | |
sleep 10 | |
res = Net::HTTP.start(host, 80) do |http| | |
http.get("/nfse/#{ref}?token=#{token}") | |
end | |
puts res.code, res.body |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment