Inquiridor
Webservice da F2B

Pergunta
-
Todas as Respostas
-
Esse em específico eu não sei... mas pra consumir um web service é necessário:
Adicionar a referência web: http://www.exforsys.com/tutorials/vb.net-2005/web-reference-asp.net-web-application-and-xml-web-service.html
Instanciar o web service.
Chamar os métodos como se fosse uma classe qualquer.
Abraço, -
Roberto O Santos wrote: Esse em específico eu não sei... mas pra consumir um web service é necessário:
Adicionar a referência web: http://www.exforsys.com/tutorials/vb.net-2005/web-reference-asp.net-web-application-and-xml-web-service.html
Instanciar o web service.
Chamar os métodos como se fosse uma classe qualquer.
Abraço,Opa Roberto obrigado pela explicação. Até onde eu sei eh assim mesmo. O problema eh que na F2B o esquema de webservices é diferente...
-
Para fazer um proxy client nos WebServices da F2b. Exemplo de Registro de Cobrança)Projeto: F2bWSBilling
Utilizando o Visual Studio 2008 faça o seguinte:Crie um projeto de Console: (C# por exemplo);Depois de criado, clique com o botão direito em seu projeto e vá em Add Service Reference;Abrirá uma janela onde deverá ser colocado um endereço;No campo endereço coloque http://www.f2b.com.br/soap/wsbilling.wsdl;Assim deverá ser encontrado o serviço WSBillingService.De um nome ao seu namespace, no último campo da janela aberta (WSBilling, por exemplo). Clique em OKCom isso será gerada a classe WSBilling que será responsável por montar e receber os dados (Request/Response), fazendo a serialização e deserealização dos dados. Também é gerado um arquivo app.config, que é um arquivo que contém dados relacionados ao envio, bem como onde é configurado o endpoint.Após isso já está praticamente pronto, apenas deve-se instanciar os objetos de acordo com a necessidade.Deixarei um exemplo aqui:Em sua aplicação criada, na classe Program que contém o método main copie o código:class Program{static void Main(string[] args){/** Criando o objeto para registro da cobrança*/WSBilling.F2bCobranca ws_billing = new WSBilling.F2bCobranca();/** Criação do Objeto mensagem*/WSBilling.F2bCobrancaMensagem mensagem = new WSBilling.F2bCobrancaMensagem();mensagem.data = System.DateTime.Now;mensagem.numero = "010203";mensagem.tipo_ws = "WebService";/** Adicionando objeto mensagem*/ws_billing.mensagem = mensagem;/** Criação do Objeto sacador*/WSBilling.F2bCobrancaSacador sacador = new WSBilling.F2bCobrancaSacador();ssacador.conta = "9023010038769487";sacador.senha = "123456";sacador.Value = "TESTE";/** Adicionando objeto sacador*/ws_billing.sacador = sacador;/** Criação do Objeto cobranca*/WSBilling.F2bCobrancaCobranca cobranca = new WSBilling.F2bCobrancaCobranca();cobranca.valor = 34.99M;cobranca.tipo_cobranca = "";cobranca.num_document = "";cobranca.cod_banco = "";cobranca.demonstrativo = new string[10];cobranca.demonstrativo[0] = "Cobrança F2b";cobranca.demonstrativo[1] = "Pague em qualquer banco";/*cobranca.demonstrativo[2] = "teste";cobranca.demonstrativo[3] = "teste";cobranca.demonstrativo[4] = "teste";cobranca.demonstrativo[5] = "teste";cobranca.demonstrativo[6] = "teste";cobranca.demonstrativo[7] = "teste";cobranca.demonstrativo[8] = "teste";cobranca.demonstrativo[9] = "teste";*/cobranca.sacador_avalista = "TESTE";/*Configuração de desconto*/cobranca.desconto = new WSBilling.F2bCobrancaCobrancaDesconto();cobranca.desconto.tipo_desconto = "0";cobranca.desconto.valor = 2.00M;cobranca.desconto.antecedencia = "5";/*Configuração de multa/mora*/cobranca.multa = new WSBilling.F2bCobrancaCobrancaMulta();cobranca.multa.atraso = "20";/*Configuração de multa*/cobranca.multa.tipo_multa = "0";cobranca.multa.valor = 1.00M;cobranca.multa.valorSpecified = true;/*Configuração de mora*/cobranca.multa.tipo_multa_dia = "0";cobranca.multa.valor_dia = 0.05M;cobranca.multa.valor_diaSpecified = true;/** Adicionando objeto cobranca*/ws_billing.cobranca = cobranca;/*Criação do objeto agendamento para configuração de vencimentos e dados específicos de agendamento*/WSBilling.F2bCobrancaAgendamento agendamento = new WSBilling.F2bCobrancaAgendamento();/*Define o número de dias para vencimento da cobrança, a partir de data de registro.*/double dias_vencimento = 10;/*Configuração de vencimento*/agendamento.vencimento = System.DateTime.Today.AddDays(dias_vencimento);/** vencimento no último dia útil do mês*/agendamento.ultimo_dia = WSBilling.F2bCobrancaAgendamentoUltimo_dia.n; //n = não; s= simagendamento.ultimo_diaSpecified = true; //insere a opção no xml: true. Use false caso contrário./** Antecedência*///agendamento.antecedencia = "10";/** Periodicidade e Período*/// agendamento.periodicidade = "1";//agendamento.periodos = "12";/** Contra-Apresentação (sem vencimento)*/// agendamento.sem_vencimento = WSBilling.F2bCobrancaAgendamentoSem_vencimento.n;// agendamento.sem_vencimentoSpecified = true; //true para inserir a opção no xml de envio e false caso contrário//agendamento.Value = "Agendamento TESTE.";/** Adicionando objeto agendamento*/ws_billing.agendamento = agendamento;/** Inicializando array para sacado(s)*/int num_sacados = 1;WSBilling.F2bCobrancaSacado[] sacados = new WSBilling.F2bCobrancaSacado[num_sacados];/** Configurando os dados do sacado*/WSBilling.F2bCobrancaSacado sacado = new WSBilling.F2bCobrancaSacado();sacado.codigo = "0000001";sacado.envio = WSBilling.F2bCobrancaSacadoEnvio.e;sacado.envioSpecified = true;//true para inserir este atributo no xml de envio. Use false, caso contráriosacado.nome = "José Oliveira";sacado.email = new string[2];//possível passar até dois emails para cada sacadosacado.email[0] = "joseoliveira@f2b.com.br";sacado.email[1] = "joseoliveira@f2b.locaweb.com.br";sacado.endereco = new WSBilling.F2bCobrancaSacadoEndereco();sacado.endereco.logradouro = "Rua das Pedras";sacado.endereco.numero = "455";sacado.endereco.complemento = "sala 23";sacado.endereco.bairro = "Itaim Bibi";sacado.endereco.cidade = "São Paulo";sacado.endereco.estado = "SP";sacado.endereco.cep = "04537000";sacado.telefone = new WSBilling.F2bCobrancaSacadoTelefone();sacado.telefone.ddd = "11";sacado.telefone.numero = "35551234";sacado.telefone_com = new WSBilling.F2bCobrancaSacadoTelefone_com();sacado.telefone_com.ddd_com = "33";sacado.telefone_com.numero_com = "22222222";sacado.telefone_cel = new WSBilling.F2bCobrancaSacadoTelefone_cel();sacado.telefone_cel.ddd_cel = "22";sacado.telefone_cel.numero_cel = "33333333";sacado.cpf = "12345678909";/** Atualiza os dados do sacado que registrar mais de uma cobrança,* não criando um novo registro do mesmo sacado.*/sacado.atualizar = WSBilling.F2bCobrancaSacadoAtualizar.s;sacado.atualizarSpecified = true;/** Adicionando primeiro sacado no array de sacados*/sacados.SetValue(sacado, 0);/** Em caso de mais sacados, redimensiona array.int novo_num_sacados = 3;Array.Resize(ref sacados, novo_num_sacados);*//** Configurando os dados de outro sacadosacado = new F2bCobrancaSacado();sacado.nome = "Maria CS Oliveira";sacado.envio = F2bCobrancaSacadoEnvio.n;sacado.envioSpecified = true;//true para inserir este atributo no xml de envio. Use false, caso contráriosacado.email = new string[2];//possível passar até dois emails para cada sacadosacado.email[0] = "mariacs@f2b.com.br";*//** Adicionando segundo sacado no array de sacadossacados.SetValue(sacado, 1);*//** Configurando os dados de outro sacado*//*sacado = new F2bCobrancaSacado();sacado.nome = "Pedro Oliveira";sacado.email = new string[2];//possível passar até dois emails para cada sacadosacado.email[0] = "pedrooliveira@f2b.com.br";sacado.envio = F2bCobrancaSacadoEnvio.e;sacado.envioSpecified = true;//true para inserir este atributo no xml de envio. Use false, caso contrário*//** Adicionando segundo sacado no array de sacados*///sacados.SetValue(sacado, 2);/** Encapsula o array de sacados no objeto que irá gerar a cobrança.*/ws_billing.sacado = sacados;/** Criação do Objeto wsbptc*/WSBilling.WSBillingPortTypeClient wsbptc = new WSBilling.WSBillingPortTypeClient();/** Efetua o envio e resgata o retorno*/WSBilling.F2bCobrancaRetorno ws_retorno = wsbptc.RegisterWSBilling(ws_billing);/** Tratamento do retorno*/Console.WriteLine("----::::Cobranças F2b::::----");Console.WriteLine("");if (ws_retorno != null){/** Retorno: log*/if (ws_retorno.log != null && ws_retorno.log.IndexOf("OK") < 0){Console.WriteLine(ws_retorno.log);}Console.WriteLine("");/** Retorno: agendamento*/if (ws_retorno.agendamento != null){WSBilling.F2bCobrancaRetornoAgendamento retorno_agendamento = ws_retorno.agendamento;if (retorno_agendamento != null){Console.WriteLine("--------------------------------------------");Console.WriteLine("Agendamento:" + retorno_agendamento.Value);Console.WriteLine("numero:" + retorno_agendamento.numero);Console.WriteLine("");}}/** Retorno: sacado(s)*/if (ws_retorno.sacado != null){int total_retorno_sacado = ws_retorno.sacado.Length;for (int i = 0; i < total_retorno_sacado; i++){WSBilling.F2bCobrancaRetornoSacado retorno_sacado = ws_retorno.sacado.ElementAtOrDefault(i);if (retorno_sacado != null){Console.WriteLine("--------------------------------------------");Console.WriteLine("----::::Sacado::::----");Console.WriteLine("nome:" + retorno_sacado.nome);/** Listando os emails do sacado (em caso de dois emails cadastrados)*/for (int y = 0; y < retorno_sacado.email.Length; y++){Console.WriteLine("email:" + retorno_sacado.email.ElementAtOrDefault(y));}Console.WriteLine("numero:" + retorno_sacado.numero);}}Console.WriteLine("");}/** Retorno: cobrança(s)*/if (ws_retorno.cobranca != null){int total_retorno_cobranca = ws_retorno.cobranca.Length;for (int i = 0; i < total_retorno_cobranca; i++){WSBilling.F2bCobrancaRetornoCobranca retorno_cobranca = ws_retorno.cobranca.ElementAtOrDefault(i);if (retorno_cobranca != null){Console.WriteLine("--------------------------------------------");Console.WriteLine("----::::Cobrança::::----");Console.WriteLine("nome:" + retorno_cobranca.nome);for (int y = 0; y < retorno_cobranca.email.Length; y++){Console.WriteLine("email:" + retorno_cobranca.email.ElementAtOrDefault(y));}Console.WriteLine("URL:" + retorno_cobranca.url);}}Console.WriteLine("--------------------------------------------");Console.WriteLine("");}}}}Para quem quiser um exemplo em VB.NET, faça os mesmos passos iniciais e na hora de construir o código acima, copie este abaixo na classe Module1.vb:(Projeto Console WSBillingVB com Serviço de Referência chamado WSBilling)Module Module1Sub Main()'Criação do Objeto mensagemDim mensagem As New WSBillingVB.F2bCobrancaMensagemmensagem.data = System.DateTime.Nowmensagem.numero = "010203"mensagem.tipo_ws = "WebService"'Criação do Objeto ws_billingDim ws_billing As New WSBillingVB.F2bCobranca'Adicionando objeto mensagem ao objeto cobrancaws_billing.mensagem = mensagem'Criação do Objeto clienteDim sacador As New WSBillingVB.F2bCobrancaSacadorsacador.conta = "902301007484783948"sacador.senha = "123456"sacador.Value = "TESTE"'Adicionando objeto sacador ao objeto cobrancaws_billing.sacador = sacador'Criação do Objeto cobrancaDim cobranca As New WSBillingVB.F2bCobrancaCobrancacobranca.valor = 69.55cobranca.tipo_cobranca = ""cobranca.num_document = ""cobranca.cod_banco = ""Dim demonstrativos(10) As Stringdemonstrativos(0) = "Cobranca F2b VB.NET"demonstrativos(1) = "Pague em qualquer banco"'demonstrativo(2) = "Demonstrativo"'demonstrativo(3) = "Demonstrativo"'demonstrativo(4) = "Demonstrativo"'demonstrativo(5) = "Demonstrativo"'demonstrativo(6) = "Demonstrativo"'demonstrativo(7) = "Demonstrativo"'demonstrativo(8) = "Demonstrativo"'demonstrativo(9) = "Demonstrativo"'Adicionando array de demonstrativos ao objeto cobrançacobranca.demonstrativo = demonstrativoscobranca.sacador_avalista = "TESTE"'Configuração de descontoDim desconto As New WSBillingVB.F2bCobrancaCobrancaDescontodesconto.tipo_desconto = "0"desconto.valor = 2.0desconto.antecedencia = "5"'Adicionando objeto descontocobranca.desconto = desconto'Configuração de multa/moraDim multa As New WSBillingVB.F2bCobrancaCobrancaMultamulta.atraso = "20"'Configuração de multamulta.tipo_multa = "0"multa.valor = 1.0multa.valorSpecified = True'Configuração de moramulta.tipo_multa_dia = "0"multa.valor_dia = 0.05multa.valor_diaSpecified = True'Adicionando objeto multacobranca.multa = multa'Adicionando objeto cobrancaws_billing.cobranca = cobranca' Criação do objeto agendamento para configuração de vencimentos e dados específicos de agendamentoDim agendamento As New WSBillingVB.F2bCobrancaAgendamento'Define o número de dias para vencimento da cobrança, a partir de data de registro.Dim dias_vencimento As Doubledias_vencimento = 5'Configuração de vencimentoagendamento.vencimento = System.DateTime.Today.AddDays(dias_vencimento)'vencimento no último dia útil do mêsagendamento.ultimo_dia = WSBillingVB.F2bCobrancaAgendamentoUltimo_dia.n 'n = não; s= simagendamento.ultimo_diaSpecified = True 'insere a opção no xml: true. Use false caso contrário.'Antecedência'agendamento.antecedencia = "10"'Periodicidade e Período'agendamento.periodicidade = "1"'agendamento.periodos = "12"'Contra-Apresentação (sem vencimento)'agendamento.sem_vencimento = WSBilling.F2bCobrancaAgendamentoSem_vencimento.n'agendamento.sem_vencimentoSpecified = True 'true para inserir a opção no xml de envio e false caso contrárioagendamento.Value = "Agendamento TESTE."'Adicionando objeto agendamentows_billing.agendamento = agendamento'Inicializando objeto sacadoDim sacado As New WSBillingVB.F2bCobrancaSacadosacado.codigo = "0000001"sacado.envio = WSBillingVB.F2bCobrancaSacadoEnvio.esacado.envioSpecified = True 'true para inserir este atributo no xml de envio. Use false, caso contráriosacado.nome = "José Oliveira"Dim emails(2) As Stringemails(0) = "joseoliveira@f2b.com.br"emails(1) = "joseoliveira@f2b.locaweb.com.br"sacado.email = emailsDim endereco As New WSBillingVB.F2bCobrancaSacadoEnderecoendereco.logradouro = "Rua das Pedras"endereco.numero = "455"endereco.complemento = "sala 23"endereco.bairro = "Itaim Bibi"endereco.cidade = "São Paulo"endereco.estado = "SP"endereco.cep = "04537000"'Adicionando objeto endereco ao objeto sacadosacado.endereco = enderecoDim telefone As New WSBillingVB.F2bCobrancaSacadoTelefonetelefone.ddd = "11"telefone.numero = "35551234"'Adicionando objeto telefone ao objeto sacadosacado.telefone = telefoneDim telefone_com As New WSBillingVB.F2bCobrancaSacadoTelefone_comtelefone_com.ddd_com = "33"telefone_com.numero_com = "22222222"'Adicionando objeto telefone_com ao objeto sacadosacado.telefone_com = telefone_comDim telefone_cel As New WSBillingVB.F2bCobrancaSacadoTelefone_celtelefone_cel.ddd_cel = "22"telefone_cel.numero_cel = "33333333"'Adicionando objeto telefone_cel ao objeto sacadosacado.telefone_cel = telefone_celsacado.cpf = "12345678909"' Atualiza os dados do sacado que registrar mais de uma cobrança, não criando um novo registro do mesmo sacado.sacado.atualizar = WSBillingVB.F2bCobrancaSacadoAtualizar.ssacado.atualizarSpecified = True'Criando Array de sacadosDim sacados(1) As WSBillingVB.F2bCobrancaSacado'Adicionando Objeto sacado ao arraysacados(0) = sacado'Em caso de mais sacados, redimensiona array.'Dim novo_num_sacados As Integer = 2 'em caso de um total de 2 sacados'Array.Resize(sacados, novo_num_sacados)'Inicializando objeto sacado'sacado = New WSBillingVB.F2bCobrancaSacado'sacado.nome = "Maria CS Oliveira"'sacado.envio = WSBillingVB.F2bCobrancaSacadoEnvio.n'sacado.envioSpecified = True '//true para inserir este atributo no xml de envio. Use false, caso contrário'Dim emails1(2) As String'emails1(0) = "mariacs@f2b.com.br"'emails(1) = ""'sacado.email = emails1'Adicionando segundo sacado no array de sacados'sacados(1) = sacado'Inicializando objeto sacado'sacado = New WSBilling.F2bCobrancaSacado'sacado.nome = "Maria CS Oliveira"'sacado.envio = WSBilling.F2bCobrancaSacadoEnvio.n'sacado.envioSpecified = True '//true para inserir este atributo no xml de envio. Use false, caso contrário'Dim emails2(2) As String'emails2(0) = "pedrooliveira@f2b.com.br"'sacado.email = emails2'sacado.envio = WSBilling.F2bCobrancaSacadoEnvio.e'sacado.envioSpecified = true;'Adicionando terceiro sacado no array de sacados'sacados(2) = sacado' Adiciona o array de sacados no objeto que irá gerar a cobrança.ws_billing.sacado = sacados'Criação do Objeto wsbaptcDim wsbptc As New WSBillingVB.WSBillingPortTypeClient'Efetua o envio e resgata o retornoDim ws_retorno As WSBillingVB.F2bCobrancaRetornows_retorno = wsbptc.RegisterWSBilling(ws_billing)If IsNothing(ws_retorno) ThenSystem.Console.Write("ws_retorno NULO")ElseSystem.Console.Write("----::::Cobranças F2b::::----" & vbCrLf & vbCrLf)'Verificando se algum erro específico retornouIf ws_retorno.log.IndexOf("OK") < 0 ThenSystem.Console.Write("LOG: " & ws_retorno.log)System.Console.Write(vbCrLf)Else'Tratamento do retorno - AgendamentoIf Not IsNothing(ws_retorno.agendamento) ThenSystem.Console.Write("------------------------------------------------")System.Console.Write(vbCrLf)System.Console.Write("Agendamento:")System.Console.Write(vbCrLf)System.Console.Write("numero: " & ws_retorno.agendamento.numero)System.Console.Write(vbCrLf)System.Console.Write(vbCrLf)End If'Tratamento do retorno - SacadosIf Not IsNothing(ws_retorno.sacado) ThenDim total_retorno_sacado As Integer = ws_retorno.sacado.LengthFor i As Integer = 0 To (total_retorno_sacado - 1)System.Console.Write("------------------------------------------------")System.Console.Write(vbCrLf)System.Console.Write("Sacado:")System.Console.Write(vbCrLf)System.Console.Write("nome:" & ws_retorno.sacado.ElementAtOrDefault(i).nome)System.Console.Write(vbCrLf)'Listando os emails do sacado (em caso de dois emails cadastrados)For y As Integer = 0 To (ws_retorno.sacado.ElementAtOrDefault(i).email.Length - 1)System.Console.Write("email:" & ws_retorno.sacado.ElementAtOrDefault(i).email.ElementAtOrDefault(y))System.Console.Write(vbCrLf)NextSystem.Console.Write("numero:" & ws_retorno.sacado.ElementAtOrDefault(i).numero)System.Console.Write(vbCrLf)NextEnd If'Tratamento do retorno - CobrançaIf Not IsNothing(ws_retorno.cobranca) ThenDim total_retorno_cobranca As Integer = ws_retorno.cobranca.LengthFor i As Integer = 0 To (total_retorno_cobranca - 1)System.Console.Write("------------------------------------------------")System.Console.Write(vbCrLf)System.Console.Write("Cobrança:")System.Console.Write(vbCrLf)System.Console.Write("nome:" & ws_retorno.cobranca.ElementAtOrDefault(i).nome)System.Console.Write(vbCrLf)'Listando os emails do sacado na cobranca (em caso de dois emails cadastrados)For y As Integer = 0 To (ws_retorno.cobranca.ElementAtOrDefault(i).email.Length - 1)System.Console.Write("email:" & ws_retorno.cobranca.ElementAtOrDefault(i).email.ElementAtOrDefault(y))System.Console.Write(vbCrLf)NextSystem.Console.Write("URL:" & ws_retorno.cobranca.ElementAtOrDefault(i).url)System.Console.Write(vbCrLf)NextSystem.Console.Write("------------------------------------------------")System.Console.Write(vbCrLf)End IfEnd IfEnd IfEnd SubEnd ModuleAi é só colocar o número da sua conta e sua senha de acesso a F2b (ou sua senha de Webservices, caso tenha cadastrado)Para os outros Webservices é praticamente o mesmo procedimento, ai na classe principal, instanciar as variáveis de acordo com a necessidade.Ah, Estou usando .NET 3.5 . Ainda não testei com as versões anteriores.Até mais!- Sugerido como Resposta felipe_azv quinta-feira, 12 de novembro de 2009 15:10
-