SEFAZ
Esta classe representa um WebService da SEFAZ. Reponsável por realizar toda a comunicação com a SEFAZ e abstraír os métodos remotos como métodos locais.
Iinicialização
A classe deve ser instanciada passando 3 ou 4 parâmetros para definir o WebService a ser utilizado:
- Certificado - Passe a implementação da interface RFWCertificate para definir o certificado do cliente a ser utilizado durante a comunicação. O sertificado do cliente é utilizado quando solicitado pela SEFAZ, entre eles: assinatura da mensagem, assinatura de documentos (como a NFe e a NFCe) e autenticação da conexão.
- Servidor WebService - Representação pela enum SefazWebServices do webservice a ser utilizado. Podendo ser o servidor dos estados suportados, do sistema virtual ou ainda do sistema virtual de contingência.
- Ambiente - Indica se deve se comunicar com o ambiente de homologação (testes/sem validade fiscal) ou de produção (com validade fiscal).
- Certificados Confiáveis [Opcional] - Outra implementação da classe RFWCertificate utilizada para passar os certificados raiz que são considerados confiáveis. Na prática, pode ser passado um JKS (Java Key Store) com os certificados dos servidores para validar e confiar na comunixação). Se não for passado o módulo utilizará o JKS interno com os certificados que estavam válidos no momento de compilação da versão do módulo. Como os sertificados tem data de validade, com o tempo o KeyStore interno pode ter apenas certificados inválidos.
Métodos Disponibilizados
Os métodos disponibilizados nesta classe tendem a refletir o mesmo nome dos métodos disponibilizados dentro do WebService. Por exmeplo, ao abrir o endereço do WebService, é exibido os nomes dos métodos que aquele WebService disponibilida, o nome desses métodos é utilizado como base dos métodos desta classe. Veja um exemplo do WebService https://www.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx:

Anexado ao nome do método são acrescentados os seguintes prefixos:
- Versão do XSD - a versão do arquivo XSD utilizada para acionar este método é anexada ao método, assim o RFW consegue manter os métodos antigos enquanto for possível a medida que agrega as novas atualizações requeridas.
- asXML - O método que tem esse sufixo final retorna o XML em formato String (bruto) do jeito como foi recebido do WebService, enquanto que o método sem esse sufixo retorna a mensagem já 'convertida' no objeto equivalente criado pelo JAXB.
![]() |
|
Métodos Diretos
A depender da complexidade e das informações necessárias para a chamada do método remoto, o método receberá como argumentos:
- diretamente um objeto JAXB com o conteúdo a ser convertido no XML e enviado; ou,
- os especificamente os dados necessários e montará o objeto/XML a ser transmitido internamente.