-
-
Notifications
You must be signed in to change notification settings - Fork 49
Adicionando um novo servidor
#Adicionando um novo servidor
Para adicionar um novo servidor é necessário que você tenha os seguintes itens:
- Schemas XSD do servidor.
- As url de produção e homologação do provedor.
- Endereço do WSDL de homologação e produção.
- Manual de integração do servidor.
Todos este itens você consegue na pagina da prefeitura ou na do provedor.
#Iniciando a implementação
Para iniciar devemos criar uma pasta para o servidor dentro da pasta provider, isto mantem a organização do código. Adicionamos uma nova classe com a seguinte nomenclatura Provider+"NomeProvedor". Ex.: ProviderGinfes Esta classe tem que obrigatoriamente herda da classe ProviderBase e tem que ter um constructors com os seguintes parametros.
public ProviderGinfes(ConfiguracoesNFSe config, MunicipioNFSe municipio) : base(config, municipio)
{
Name = "Ginfes";
}
Este constructor é usado pelo ProviderManager par gerar uma nova instancia da classe, lembre-se de passar o nome do provedor para a propriedade Name este nome é usado para gerar o path dos Schemas. A classe provider é responsável pela geração e leituras do XML do provedor ela é composta de vários métodos virtual dos quais você precisa implementar, obrigatoriamente, você só precisa implementar os métodos suportados pelo seu provedor.
#Criando um ServiceClient
A classe ServiceClient é a classe responsável pela comunicação com o webservice do provedor dependendo do provedor esta classe pode ser unica ou pode ter varias, neste caso implementar uma interface e implementar cada classe herdando da interface, vide o provedor Ginfes. A classe ServiceCliente também tem uma nomemclatura a ser seguida se a mesma for unica segue a seguinte nomemclaruta "NomeProvedor"+ServiceClient.
Ex.: DSFServiceClient
Se a o provedor tiver diferenças entre cidades ou entre ambientes usar a seguinte nomemclatura "NomeProvedor"+CodigoIBGE(Apenas Se tiver diferenças por município)+Ambiente(Hom/Prod)+ServiceClient.
Ex.: GinfesHomServiceClient
Agora que já sabemos qual vai ser o nome da classe vamos extrair do wsdl a interface de comunicação, para isso é necessário acessar o endereço do wsdl do servidor, você acessa no nvageador a url do wsdl e quando carregar a pagina você copia todos os dados e salvo no seu disco, você simplesmente seleciona tudo que esta na tela abre o novo arquivo de texto cola o conteúdo e salva com extensão wsdl. Agora abre o Visual Studio e clique com o botão direito do mouse e vai em Add Service Reference.., na tela que abrir selecione o WSDL e clique em GO embaixo vai mostrar os dados da interface clique em ok e você vera que ser adiciona uma pasta com um servicereference dentro. Agora no explorer vá até esta nova pasta la dentro você vera uns arquivo de copie este arquivo apenas para dentro da pasta do seu provedor e adicione ele no projeto, apos adicionar apagar o service reference adicionado. Abre o arquivo que acabamos de adicionar no projeto la dentro você vera a interface de comunicação com o servidor e as classe que serão necessária para comunicação, nem sempre geram estas classe vai depende de cada servidor. Extrai deste arquivo a interface do servidor e renomeie de acordo com o nome do serviceclient
Ex.: IGinfesHomService, IDSFService
Na class do service cliente que você criou vamos fazer as seguintes alterações:
- A classe agora vai herdar da classe DFeWebserviceBase, como parametro passe a interface que você extraiu
- A classe vai implementar a interface que você extraiu
- Implementar constructor padrão da classe vide DSFServiceClient.
#Finalizando
Agora que você já possui as duas classes resta apenas implementar as mesma, ou seja implementar os metodos do Provider de acordo com o seu servidor e impementar os métodos da interface do cliente lembrando que no arquivo de referencia tem uma implementação basica do client, você pode usar o mesmo desde que arrume para ficar no padrão utilizado.