iMasters - Angelo Bestetti iMasters - Comunidade de profissionais, estudantes e mestres em tecnlogias e ferramentas voltadas para o desenvolvimento web http://imasters.com.br/ Wed, 23 May 2012 04:02:16 -0300 iMasters tGenerator RSS 0.0 <![CDATA[ Validação Cadastral de CPF e CNPJ para Call Centers via WebServices]]> http://imasters.com.br/artigo/10610/web-services/validacao-cadastral-de-cpf-e-cnpj-para-call-centers-via-webservices Já é de conhecimento da comunidade de desenvolvedores que não é mais possível mais criar robôs para fazer a validação de um CPF ou CNPJ no site da Receita Federal.

Porque é interessante validar o CPF ou CNPJ do seu cliente?

  • Combate a fraudes
  • Automatização de cadastros
  • Higienização de dados antigos
  • Minimizar o tempo de atendimento ao seu cliente

Basicamente você vai pegar o CPF ou CNPJ e restringi-lo aos orgãos de proteção ao crédito. Até aí sem problema nenhum. Errado. A pessoa forneceu o CPF de outra pessoa e quando você menos espera você está tentando restringir o crédito de outra pessoa.

O segundo caso é o dado histórico. Se sua empresa ja possui histórico de alguns anos de negócios com clientes, você provavelmente já pode estar com sua base de clientes contaminada.

Para resolver esse problema, o processo é chamado de HIGIENIZAÇÃO de dados.

Imaginem um cenário de um Call Center onde o cliente liga e pede um produto ou serviço, informa o CPF de uma pessoa e o Nome real dele. Como você vai saber a veracidade da informação? Muitos Call Centers ou outros departamentos ainda continuam em um período jurássico da história se utilizando de funcionários para acessarem a página da Receita Federal e fazendo essa validação na mão.

Para iniciar este processo de higienização, o primeiro passo é conhecer o webservice do ConsultaCPF.com que é capaz de, baseado em um Documento de CPF ou CNPJ, apresentar o Nome ou Razão Social. Com isso, uma aplicação de Call Center é perfeitamente capaz de identificar uma possível fraude.

Conheça mais sobre o WebService:

http://imasters.com.br/artigo/7170 ]]>
Angelo Bestetti () Qua, 05 Nov 2008 11:00:00 -0200 http://imasters.com.br/artigo/10610/web-services/validacao-cadastral-de-cpf-e-cnpj-para-call-centers-via-webservices
<![CDATA[ Retornando classe de objetos em webservices]]> http://imasters.com.br/artigo/8246/web-services/retornando-classe-de-objetos-em-webservices Olá Developers. Recentemente, lendo alguns artigos sobre webservices aqui no iMasters, percebi que a maioria dos developers ainda tem muito mais problema em lidar com a informação retornada do que com as chamadas dos webservices. O que normalmente todo mundo pensa é que o SOAP de resposta é simplesmente um XML encapsulado em um envelope o que é verdade, porém esta informação é perfeitamente capaz de se transformar em objetos dentro de suas aplicações.

Para esta matéria ter realmente sentido, precisamos inicialmente construir um webservice com os parâmetros corretos. De que adianta no "Client" a gente se matar, se no "Server-Side" o WebService foi construído de forma errada?

Uma coisa bem interessante no VS.NET é podermos serializar uma classe no webservice, após criá-la. Esta classe pode ser DataSets, Strongly Typed etc.

Requisitos para este artigo:
  • Visual Studio 2005-2008
  • .NET 2.0 ou superior
  • Prestar Atenção (riss)

Primeiro Passo: Criar seu projeto no Visual Studio

Criar um projeto qualquer, eu chamei de "IHateHelloWorld" por motivos óbvios.

Segundo Passo: Criar o WebService dentro do Projeto

[vai foto aqui[vai foto aqui][vai foto aqui]

Código Básico já criado pelo Visual Studio:


Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<System.Web.Services.WebService(Namespace:="IHateHelloWorld", Description:="WebService de exemplo para retornar objetos nos WebServices")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class IHateHelloWorld
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

End Class

Percebam que o NameSpace está diferente. O tempuri.org pode ser alterado conforme sua conveniência e adicionamos também uma "Description" para explicar do que se trata o WebService.

Terceiro Passo: Criar a Classe de Retorno


Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

''' <summary>
''' Classe de Retorno para o WebService
''' </summary>
Public Class ResultadoDaPesquisa
    Public NroPedido As Integer
    Public Cliente As String
    Public DataPedido As DateTime
    Public TotalPedido As Double
    Public PedidoEntregue As Boolean
End Class

<System.Web.Services.WebService(Namespace:="IHateHelloWorld", Description:="WebService de exemplo para retornar objetos nos WebServices")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class IHateHelloWorld
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function IHateHelloWord() As ResultadoDaPesquisa
        Dim oResultado As New ResultadoDaPesquisa
        oResultado.NroPedido = 123456
        oResultado.Cliente = "Cliente de Teste"
        oResultado.DataPedido = DateTime.Now
        oResultado.TotalPedido = "1234,56"
        oResultado.PedidoEntregue = True
        Return oResultado
    End Function
End Class

Como vocês podem notar no novo código, agora temos nossa classe que vai ser populada com resultados e serializada no WebService.

Logo após temos o WebMethod que é a função a ser chamada no WebService. Ela simplesmente retorna a Classe "ResultadoDaPesquisa" populada com seus dados que podem ser extraídos de um banco de dados ou cálculos, etc.

Aperte F5 para compilar usando o Debug e pronto. Eis o resultado:

Clique na função IhateHelloWorld e voce terá a opção para invokar a mesma:

E pronto a resposta:


<?xml version="1.0" encoding="utf-8" ?> 
<ResultadoDaPesquisa xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="IHateHelloWorld">
  <NroPedido>123456</NroPedido> 
  <Cliente>Cliente de Teste</Cliente> 
  <DataPedido>2008-03-06T09:59:32.7042787-03:00</DataPedido> 
  <TotalPedido>123456</TotalPedido> 
  <PedidoEntregue>true</PedidoEntregue> 
  </ResultadoDaPesquisa>

Percebam que nós temos agora um xmlns com o seu Namespace do Webservice e foi retornado os campos de sua classe.

Vamos agora ver como construir um "Client" para acessar essas informações:

Crie uma pagina:

Conteúdo para sua página aspx:


< Page Language="VB" AutoEventWireup="false" CodeFile="IHateHelloWorldReloaded.aspx.vb" Inherits="IHateHelloWorldReloaded" >

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Acessando WebService IHateHelloWorld</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h3>Consultando o IHateHelloWorld WebService</h3>
        <br />
        <table border="0" cellpadding="10" cellspacing="0" style="width: 611px">
            <tr>
                <td width="30">
                    Nro Pedido:</td>
                <td width="70">
                    <asp:Label ID="lbl_NroPedido" runat="server"></asp:Label></td>
            </tr>
            <tr>
                <td width="30">
                    Cliente:</td>
                <td width="70">
                    <asp:Label ID="lbl_Cliente" runat="server"></asp:Label></td>
            </tr>
            <tr>
                <td width="30">
                    Data do Pedido:</td>
                <td width="70">
                    <asp:Label ID="lbl_DataPedido" runat="server"></asp:Label></td>
            </tr>
            <tr>
                <td width="30">
                    Total do Pedido:</td>
                <td width="70">
                    <asp:Label ID="lbl_TotalPedido" runat="server"></asp:Label></td>
            </tr>
            <tr>
                <td width="30">
                    Pedido Entregue :</td>
                <td width="70">
                    <asp:Label ID="lbl_PedidoEntregue" runat="server"></asp:Label></td>
            </tr>
            <tr>
                <td width="30">
                </td>
                <td width="70">
                    <asp:Button ID="btnConsultar" runat="server" Text="Consultar WebService" /></td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

CodeFile (CodeBehind) para a pagina:


Partial Class IHateHelloWorldReloaded
    Inherits System.Web.UI.Page

    Protected Sub btnConsultar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnConsultar.Click
        Dim oWS As New IHateHelloWorld ' Instancia o WebService em um Objeto
        Dim oResposta As New ResultadoDaPesquisa ' Instancia o Objeto de Resposta


        oResposta = oWS.IHateHelloWord ' Invoka o WebService e recebe o resultado no objeto de resposta

        Me.lbl_NroPedido.Text = oResposta.NroPedido.ToString
        Me.lbl_Cliente.Text = oResposta.Cliente.ToString
        Me.lbl_DataPedido.Text = oResposta.DataPedido.ToString
        Me.lbl_TotalPedido.Text = oResposta.TotalPedido.ToString
        Me.lbl_PedidoEntregue.Text = oResposta.PedidoEntregue.ToString

    End Sub
End Class

Resultado via Web

Considerações Finais:

Lembre-se sempre que este exemplo de "Client" foi criado dentro da mesma aplicação que o WebService. Logo, na hora de adicionar a "Web Reference", você deve procurar dentro do mesmo projeto. Quando você estiver trabalhando com projetos diferentes, o WebService deve possuir um endereço: http://www.seusite.com.br/IHateHelloWorld.asmx

Deve-se sempre entender que a maioria dos objetos em .NET podem ser serializados. Com isso temos um leque de opções de informações que podemos retornar pelos Web Services.

No próximo artigo vou publicar como retornar um DataTable vindo de uma base de dados SQL e serializá-la no webservice.

That´s all Folks!

]]>
Angelo Bestetti () Seg, 10 Mar 2008 08:30:00 -0300 http://imasters.com.br/artigo/8246/web-services/retornando-classe-de-objetos-em-webservices
<![CDATA[ WebServices em ASP Classico]]> http://imasters.com.br/artigo/7348/linguagens/webservices-em-asp-classico Olá Developers.

Atualmente todo mundo procura utilizar webservices, é uma tecnologia fantástico, mas por maior que sejam os esforços das comunidades, ainda existe uma grande dificuldade de como acessar webservices com tecnologia obsoletas como ASP Classico, VB6 e outras tantas que podem até estar na crista da onda ainda, mas no fundo não oferencem o suporte adequado à webservices como Delphi.

Após inúmeros pedidos de clientes que tentam realizar integrações de webservices e sofrem por não ter uma solução prática para implementar o mesmo, resolvi fazer um exemplo e não é HelloWorld()!

Basicamente nosso exemplo é feito em ASP Clássico com uma CLASS de apoio para se livrar de uso externo de componentes como Microsoft SOAP Client, que nem sempre está disponível em um Shared Host.

Criar um arquivo cls_webservices.asp


<%
'***********************************************************************************
'
' Classe para acessar WebServices
' Author: Angelo Bestetti
' http://www.i-stream.com.br
' Purpose: Acessar webservices www.consultacpf.com
' Date: 2007/10/18
'***********************************************************************************
Option Explicit


'**************************************************** 
' Classe para WebService
'****************************************************

Class WebService
  Public Url
  Public Method
  Public Response
  Public Parameters
 
  ' Funcao para Invokar o WebService
  Public Function Invoke()
    Dim xmlhttp
    Set xmlhttp = Server.CreateObject("MSXML2.XMLHTTP")
    xmlhttp.open "POST", Url & "/" & Method, false
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.Send Parameters.toString
    response = xmlhttp.responseText
    set xmlhttp = nothing
  End Function
  
  
  Private Sub Class_Initialize()
    Set Parameters = New wsParameters
  End Sub
  
  Private Sub Class_Terminate()
    Set Parameters = Nothing
  End Sub
  
End class

'**************************************************** 
' Classe para wsParameters
'****************************************************
Class wsParameters
  Public mCol
  Public Function toString()
    Dim nItem
    Dim buffer
    buffer = ""
    For nItem = 1 to Count
      buffer = buffer & Item(nItem).toString & "&"
    Next
    If right(buffer,1)="&" then
      buffer = left(buffer,len(buffer)-1)
    End if
    toString = buffer 
  End Function
  
  Public Sub Clear
    set mcol = nothing 
    Set mCol = Server.CreateObject("Scripting.Dictionary") 
  End Sub
  
  Public Sub Add(pKey,pValue)
    Dim NewParameter
  
    Set NewParameter = New wsParameter
    NewParameter.Key = pKey
    NewParameter.Value = pValue
    mCol.Add mCol.count+1, NewParameter
  
    Set NewParameter = Nothing
  End Sub
  
  Public Function Item(nKey)
    Set Item=mCol.Item(nKey)
  End Function
  
  Public Function ExistsXKey(pKey)
    Dim nItem
  
    For nItem = 1 to mcol.count
      If mCol.Item(nItem).key = pKey Then
        ExistsXKeyword = True
        Exit For
      End if
    Next
  End Function
  
  Public Sub Remove(nKey)
    mCol.Remove(nKey)
  End sub
  
  Public Function Count()
    Count=mCol.count
  End Function
  
  Private Sub Class_Initialize()
    Set mCol = Server.CreateObject("Scripting.Dictionary")
  End Sub
  
  Private Sub Class_Terminate()
    Set mCol = Nothing
  End Sub
  
End class

'**************************************************** 
' Classe para wsParameter
'****************************************************
Class wsParameter
   Public Key
   Public Value
   Public Function toString()
     toString = Key & "=" & Value
   End Function
End Class
%>

Criar um arquivo onde voce vai fazer sua consulta, o exemplo abaixo realiza uma consulta de exemplo no www.consultacpf.com


<!--#include file="cls_webservice.asp"-->
<%
    dim ws
 
    set ws = new webservice
    ws.url = "http://www.consultacpf.com/webservices/consultacpf.asmx"
	' Podendo ser: ConsultaSaldoCliente, ConsultaSinteseCadastralSERASA, ConsultaSimplesSERASASandBox, ConsultaSimplesSERASA, ConsultaDetalhadaSERASA
	' Maiores Informações: http://www.consultacpf.com/webservices/consultacpf.asmx
    ws.method = "ConsultaDetalhadaSERASA" 

    ws.parameters.Add "Email","seuemailaqui"
    ws.parameters.Add "Senha","suasenhaaqui"
    ws.parameters.Add "Documento","cpf/cnpj a ser consultado"
 
    ws.Invoke
    response.Write ws.response

    set ws = nothing
%>

Este exemplo mostra como é facil chamar um webservice e receber um XML de retorno. Claro que você pode adaptar este código para fazer consultas em outro webservice qualquer. Esta é a ideia.

Este exemplo está disponivel para download no endereço abaixo:

http://dn.consultacpf.com/files/folders/asp_30_classico/default.aspx

That´s all folks ]]>
Angelo Bestetti () Qui, 08 Nov 2007 08:20:00 -0200 http://imasters.com.br/artigo/7348/linguagens/webservices-em-asp-classico
<![CDATA[ Validação de CPF e CNPJ Online]]> http://imasters.com.br/artigo/7170/web-services/validacao-de-cpf-e-cnpj-online Validando um CPF / CNPJ Online via WebService e AJAX

Este artigo tem como finalidade mostrar como consumir um webservice em ASP.NET AJAX para fazer uma validação Online na base de dados do SERASA e receber a informação Nome/Razao Social do documento consultado.

Pré-Requisitos:

Visual Studio 2005

Conhecimentos de ASP.NET

Conta para consulta no www.consultacpf.com (Gratuita para abertura, porém necessita créditos para consultas reais)

Dúvidas:

Encaminhar suas dúvidas para webmaster@consultacpf.com.

O Código fonte deste artigo está disponível aqui
Passo a Passo:

Assumindo que você já possui um projeto criado no Visual Studio, crie um Webform em seu Visual Studio com nome de consultacpf.aspx

Criando campos para consulta e resultados:

1. Criar um Label para Numero do Documento

2. Criar um TextBox fldDocumento para receber o numero do Documento

3. Criar um Botão para executar a consulta

4. Criar um Label fldNomepara receber a resposta do WebService

5. Criar um Label fldDatapara receber a resposta do WebService
Adicionando o WebService no seu projeto

No Menu Website do VS2005 utilizar a opção Add Web Reference...

Endereço para adicionar o webservice: http://www.consultacpf.com/webservices/consultacpf.asmx

Após inserir a Web Reference, você deverá ver a referência no painel ao lado.

Código para Invocar o WebService

Código para ser usado no evento do botão:

Imports com.consultacpf.www
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Consultar(ByVal sender As Object, ByVal e As System.EventArgs)
        ' Declara as instâncias
        Dim oWS As New ConsultaCPFWebService
        Dim oResultado As New SinteseCadastral
        Dim Email As String = ConfigurationManager.AppSettings("Email")
        Dim Senha As String = ConfigurationManager.AppSettings("Senha")


        ' Invoca o WebService passando os parâmetros 
        'e recebe a resposta no Object oResultado
        oResultado = oWS.ConsultaSinteseCadastralSERASA(Email, Senha, Me.Documento.Text)

        ' Move os dados do Object oResultado para os Campos da tela
        Me.fldNome.Text = oResultado.Nome
        Me.fldData.Text = oResultado.DataNasc

        ' Tudo ok!

    End Sub
End Class
Visualizando em seu navegador

Não esquecer de atualizar o web.config com suas credenciais!

That´s all Folks, enjoy it!

]]>
Angelo Bestetti () Seg, 15 Oct 2007 08:55:00 -0200 http://imasters.com.br/artigo/7170/web-services/validacao-de-cpf-e-cnpj-online
<![CDATA[ Consultando um CPF/CNPJ no SERASA Via WebService]]> http://imasters.com.br/artigo/7075/web-services/consultando-um-cpf-cnpj-no-serasa-via-webservice Olá pessoal, como já deve ser de conhecimento de alguns, o ConsultaCPF não está mais trabalhando com o SPC, no entanto foram disponibilizados outros webservices para o acesso ao SERASA. Basicamente a idéia continua a mesma. Você passa um CNPJ ou CPF e o WebService retorna as informações do documento enviado.

Existe ainda, para quem gostaria de validar um CPF ou CNPJ Online, um outro WebService chamado de ConsultaCPF Síntese Cadastral. Vocês se lembram que era possível validar o CPF de uma pessoa pela Receita Federal? Depois que eles colocaram o Captcha não é mais possível, então para aqueles que precisam de colocar alguma validação em sites ou em sistemas, se o CPF/CNPJ é mesmo o que esta aparecendo vocês, podem utilizar este webservice também. O custo é atraente. R$ 0,50 por consulta não mata ninguém.

Este artigo tem como finalidade mostrar como consumir um webservice em ASP.NET ou VB.NET para fazer uma consulta no SERASA e receber a informação se o CPF/CNPJ possui restrições de crédito ou não.

Pré-Requisitos:
  • Visual Studio 2005
  • Conhecimentos de ASP.NET
  • Conta para consulta no www.consultacpf.com (Gratuita para abertura, porém necessita créditos para consultas reais)
Dúvidas:

Encaminhar suas dúvidas para webmasterconsultacpf.com

Passo a Passo:

Assumindo que você já possui um projeto criado no Visual Studio, crie um Webform em seu Visual Studio com nome de consultacpf.aspx

Criando campos para consulta e resultados:

1. Criar um Label para "Numero do CPF"

2. Criar um TextBox para receber o numero do CPF

3. Criar um Botão para executar a consulta

4. Criar um Label para receber a resposta do WebService

Adicionando o WebService no seu projeto

No Menu Website do VS2005, utilizar a opção "Add Web Reference..."

Endereço para adicionar o webservice: http://www.consultacpf.com/webservices/consultacpf.asmx

Existe um método para testes chamado ConsultaSimplesSERASASandBox. Este método somente retorna informações para testes e não é necessário nenhuma credencial válida no site.
Código para Invocar o WebService

Código para ser usado no evento do botão:


Partial Class consultacpf
    Inherits System.Web.UI.Page

    Protected Sub btn_consultar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_consultar.Click
        Dim oWS As New com.consultacpf.www.ConsultaCPFWebService
        Dim sCPF As String = Me.fld_CPF.Text

        If Trim(sCPF) = Nothing Then
            Exit Sub
        End If

        Dim aResults As Array = oWS.ConsultaSimplesSERASA("seu-usuario", "sua-senha", sCPF)
        Me.lbl_ResultadodaPesquisa.Text = aResults(0).Status.ToString.Trim


    End Sub
End Class

Abraços!

]]>
Angelo Bestetti () Qui, 20 Sep 2007 09:42:00 -0300 http://imasters.com.br/artigo/7075/web-services/consultando-um-cpf-cnpj-no-serasa-via-webservice
<![CDATA[ Consultando um CPF no SPC via WebService]]> http://imasters.com.br/artigo/6557/dotnet/consultando-um-cpf-no-spc-via-webservice Este artigo tem como finalidade mostrar como consumir um webservice em ASP.NET ou VB.NET para fazer uma cosulta no SPC e receber a informação se o CPF possui restrições de crédito ou não.

Pré-Requisitos:
  • Visual Studio 2005
  • Conhecimentos de ASP.NET
  • Conta para consulta no www.consultacpf.com (Gratuita para abertura, porém necessita créditos para consultas reais)

Dúvidas:

  • Encaminhar suas dúvidas para webmaster@consultacpf.com

Passo a Passo:

Assumindo que você já tem um projeto criado no Visual Studio, crie um Webform em seu Visual Studio com nome de consultacpf.aspx

Criando campos para consulta e resultados:

  1. Criar um Label para "Numero do CPF"
  2. Criar um TextBox para receber o número do CPF
  3. Criar um Botão para executar a consulta
  4. Criar um Label para receber a resposta do WebService
Adicionando o WebService no seu projeto

No Menu Website do VS2005, utilizar a opção "Add Web Reference..."

Endereço para adicionar o webservice: http://www.consultacpf.com/webservices/consultacpf.asmx

Existe um método para testes chamado ConsultaSimplesSandBox. Este método somente retorna informações para testes e não é necessário nenhuma credencial válida no site.

Código para Invocar o WebService

Código para ser usado no evento do botão:

Partial Class consultacpf

    Inherits System.Web.UI.Page 

    Protected Sub btn_consultar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_consultar.Click

        Dim oWS As New com.consultacpf.www.ConsultaCPFWebService

        Dim sCPF As String = Me.fld_CPF.Text 

        If Trim(sCPF) = Nothing Then

            Exit Sub

        End If 

        Dim aResults As Array = oWS.ConsultaSimples("seu-usuario", "sua-senha", sCPF)

        Me.lbl_ResultadodaPesquisa.Text = aResults(0).Status.ToString.Trim 
 

    End Sub

End Class

Obrigado e até a próxima!

]]>
Angelo Bestetti () Ter, 10 Jul 2007 09:30:00 -0300 http://imasters.com.br/artigo/6557/dotnet/consultando-um-cpf-no-spc-via-webservice