Criando o cliente

client = Savon.client(
  encoding: "UTF-8",
  wsdl: "https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx?WSDL",
  ssl_verify_mode: :none,
  ssl_cert_file: "/diretorio/para/seu/certificado.pem",
  ssl_cert_key_file: "/diretorio/para/sua/chave_privada.pem",
  ssl_cert_key_password: "senha_da_chave_privada"
)

Se tudo estiver ok, você poderá ver os métodos do web service assim:

operations = client.operations
# que retorna
# [:nfe_autorizacao_lote, :nfe_autorizacao_lote_zip]

Criando o xml completo da chamada

mensagem_soap = %{<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap12:Header>
    <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
      <cUF>#{codigo_da_sua_uf}</cUF>
      <versaoDados>3.10</versaoDados>
    </nfeCabecMsg>
  </soap12:Header>
  <soap12:Body>
    <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">#{seu_xml}</nfeDadosMsg>
  </soap12:Body>
</soap12:Envelope>}.gsub(/\>\s{1,}\</,"><")

Para fazer a chamada do método passando o xml

resposta = client.call(:nfe_autorizacao_lote, xml: mensagem_soap)

Para ver a resposta

puts resposta.to_s
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
    <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
      <cUF>12</cUF>
      <versaoDados>3.10</versaoDados>
    </nfeCabecMsg>
  </soap:Header>
  <soap:Body>
    <nfeAutorizacaoLoteResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
      <retEnviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
        <tpAmb>2</tpAmb>
        <verAplic>SVRS201603081012</verAplic>
        <cStat>516</cStat>
        <xMotivo>Rejeicao: Falha no schema XML – inexiste a tag raiz esperada para a mensagem</xMotivo>
        <cUF>12</cUF>
        <dhRecbto>2016-10-26T13:38:45-02:00</dhRecbto>
      </retEnviNFe>
    </nfeAutorizacaoLoteResult>
  </soap:Body>
</soap:Envelope>

Pode ser também

puts resposta.body

Que retorna

{
  :nfe_autorizacao_lote_result=>{
    :ret_envi_n_fe=>{
      :tp_amb=>"2",
      :ver_aplic=>"SVRS201603081012",
      :c_stat=>"516",
      :x_motivo=>"Rejeicao: Falha no schema XML – inexiste a tag raiz esperada para a mensagem",
      :c_uf=>"12",
      :dh_recbto=>Wed, 26 Oct 2016 13:38:45 -0200,
      :@xmlns=>"http://www.portalfiscal.inf.br/nfe",
      :@versao=>"3.10"
    },
    :@xmlns=>"http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao"
  }
}

Faltou alguma coisa?


🗓 2016-10-21
899 👀