Skip to content

Instantly share code, notes, and snippets.

@acras
Created July 19, 2016 13:22
Show Gist options
  • Save acras/6ab91400fcbf3b8da22684efc9e8cf99 to your computer and use it in GitHub Desktop.
Save acras/6ab91400fcbf3b8da22684efc9e8cf99 to your computer and use it in GitHub Desktop.
# encoding: utf-8
require 'net/http'
require 'json'
require 'yaml' # apenas se for usar o formato YAML
# Você deve definir isso globalmente para sua aplicação
# Servidor de homologação
server = "homologacao.acrasnfe.acras.com.br";
# Servidor de produção
# server = "producao.acrasnfe.acras.com.br";
# porta de comunicação
port = 80
# Altere pelo token recebido do suporte
token = "token_recebido_do_suporte";
nfe = {
"natureza_operacao" => 'Venda',
"forma_pagamento" => 0,
"data_emissao" => '2013-05-31T12:00:00-03:00',
"data_entrada_saida" => '2015-02-03',
"tipo_documento" => 1,
"finalidade_emissao" => 1,
"cnpj_emitente" => '001112220001333',
"nome_emitente" => 'Nome do seu cliente LTDA',
"nome_fantasia_emitente" => 'Fantasia do Emitente',
"logradouro_emitente" => 'Rua Pereira Leite',
"numero_emitente" => '323 - cj. B12/13',
"bairro_emitente" => 'Sumarezinho',
"municipio_emitente" => 'São Paulo',
"uf_emitente" => 'SP',
"cep_emitente" => '05442000',
"telefone_emitente" => '011 2318-1919',
"inscricao_estadual_emitente" => '145662857118',
"nome_destinatario" => 'NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL',
"cnpj_destinatario" => '10812933000137',
"inscricao_estadual_destinatario" => 'ISENTO',
"telefone_destinatario" => '6132332933',
"logradouro_destinatario" => 'SMAS 6580 PARKSHOPPING',
"numero_destinatario" => '134',
"bairro_destinatario" => 'Zona Industrial (Guará)',
"municipio_destinatario" => 'Brasilia',
"uf_destinatario" => 'DF',
"pais_destinatario" => 'Brasil',
"cep_destinatario" => '71219900',
"icms_base_calculo" => '0',
"icms_valor_total" => '0',
"icms_base_calculo_st" => '0',
"icms_valor_total_st" => '0',
"icms_modalidade_base_calculo" => '0',
"icms_valor" => '0',
"valor_frete" => '0.0000',
"valor_seguro" => '0',
"valor_total" => '2241.66',
"valor_produtos" => '2241.66',
"valor_ipi" => '0',
"modalidade_frete" => '0',
"informacoes_adicionais_contribuinte" => 'Não Incidência ICMS conforme Decisão...',
"nome_transportador" => 'BRASPRESS TRANSPORTES URGENTES LTDA SP',
"cnpj_transportador" => '48740351000165',
"endereco_transportador" => 'RUA CORONEL MARQUES RIBEIRO, 225',
"municipio_transportador" => 'SÃO PAULO',
"uf_transportador" => 'SP',
"inscricao_estadual_transportador" => '116945108113',
"items" => [
{
"numero_item" => '1',
"codigo_produto" => '9999999',
"descricao" => 'Perfume Polo Black',
"cfop" => '6102',
"unidade_comercial" => 'un',
"quantidade_comercial" => '5000',
"valor_unitario_comercial" => '0.448332',
"valor_unitario_tributavel" => '0.448332',
"unidade_tributavel" => 'un',
"codigo_ncm" => '49111090',
"quantidade_tributavel" => '5000',
"valor_bruto" => '2241.66',
"icms_situacao_tributaria" => '41',
"icms_origem" => '0',
"pis_situacao_tributaria" => '07',
"cofins_situacao_tributaria" => '07',
"ipi_situacao_tributaria" => '53',
"ipi_codigo_enquadramento_legal" => '999'
}
],
"volumes" => [
{
"quantidade" => '2',
"especie" => 'Volumes',
"marca" => '',
"numero" => '',
"peso_bruto" => '36',
"peso_liquido" => '36'
}
],
"duplicatas" => [
{
"numero" => 'Pagamento a vista',
"data_vencimento" => '',
"valor" => '2241.66'
}
],
}
puts "=> Teste de envio"
# A referência é uma string que identifica univocamente uma NFSe e
# será usada para consultas posteriores
ref = 1
Net::HTTP.start(server, port) do |http|
# caso queira enviar usando o formato YAML, use a linha abaixo
# res = http.post("/nfe2/autorizar?ref=#{ref}&token=#{token}", nfe.to_yaml)
res = http.post("/nfe2/autorizar.json?ref=#{ref}&token=#{token}", nfe.to_json)
puts "Status = #{res.code}"
puts "Body = #{res.body}"
if Net::HTTPSuccess === res
# Se a nota for aceita para processamento, o body vem vazio, deve-se agendar
# em seguida uma consulta da nota
puts "Nota aceita para processamento"
else
# ocorreu um erro
puts "Ocorreu um erro"
# para interpretar a resposta, use uma das linhas abaixo
# response = JSON.parse(res.body)
# se utilizar yaml, use a linha abaixo
# response = YAML.load(res.body)
exit 1
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment