lunes, 30 de junio de 2014

Validar CFDI WebService C# 

Aquí dejo un mini tutorial de como consumir el WebService para validar CFDI en SAT (Mexico). 
Actualmente SAT cuenta con su tutorial que lo puedes encontrar en la pagina, aquí los links.


SAT info Validar CFDI 
http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/validacion_comprobantes.aspx

Tutorial Web ServicePDF ftp://ftp2.sat.gob.mx/asistencia_ftp/publicaciones/cfdi/WS_ConsultaCFDI.pdf


  • Localizar la URL del Servicio Web (Contrato) 
https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc

  • Añadir el servicio en tu visual studio (VS 2010 en mi caso)
Clic derecho sobre el proyecto dentro del Solution Explorer.
Clic en la opción Add  Service Reference
Copia y pega la URL como en la siguiente imagen.



Aquí  puedes darle un Namespace a las clases que te va a generar al agregar la referencia al servicio, en este ejemplo yo deje el Namespace que VS2010 te pone por default.


En el ejemplo creamos una aplicación WinForms donde agregaremos dos TextBox y un Button.





En el evento Click del boton agregamos el siguiente fragmento de código.

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                
                using (ServiceReference1.ConsultaCFDIServiceClient
                    client = new ServiceReference1.ConsultaCFDIServiceClient("BasicHttpBinding_IConsultaCFDIService"))
                {
                    tbxOutPut.Text += "Calling WebService...";
                    ServiceReference1.Acuse acuse = client.Consulta(tbxInput.Text);
                    if (acuse == null)
                    {
                        tbxOutPut.Text += "ERROR:: Acuse is null";

                    }
                    else
                    {
                        tbxOutPut.Text += "\r\nEstado:: " + acuse.Estado + "\r\nCodigoEstatus::" + acuse.CodigoEstatus;
                    }
                }
            }
            catch (Exception ex)
            {
                tbxOutPut.Text += "Exception:: " + ex.Message;
                MessageBox.Show("ERROR::" + ex.Message);
            }

        }




Por lo tanto solo utilizamos el cliente que consume el web service ServiceReference1.ConsultaCFDIServiceClient y el objeto que regresa el WebService ServiceReference1.Acuse.

Cuando se crea el cliente debemos especificar el nombre de la configuración al EndPoint el cual es el siguiente
"BasicHttpBinding_IConsultaCFDIService", podemos hallar ese nombre dentro del .config de la aplicación ya que se agrego automáticamente al hacer referencia al servicio.

Ahora podemos hacer el test a nuestra app de prueba. Ingresando el siguiente string en el tbxInput.

?re=[RFC_Emisor]
&rr=[RFC_Receptor]
&tt= [Total]
&id=[UUID]

En una sola linea Ej.

?re=TCA070905BR6&rr=TIM950103BBA&tt=37576.800000&id=5DBD6BCE-042C-4295-86B8-0E7D6B001827


Y probamos la app.





4 comentarios:

  1. Que buen ejemplo, gracias
    Esto funciona mientras que este funcionando el servicio WEB del SAT y mientras que yo tenga interenet. También estoy intentando hacer el validador local (sin Internet) tienes alguna recomendación o flujo del proceso? Estoy leyendo el anexo 20 y buscando documentación en internet.
    Saludos

    ResponderEliminar
    Respuestas
    1. Hola Luis Fer

      No he hecho un validador loca, estaría bueno que nos pasaras como lo hiciste.

      Saludos

      Eliminar
  2. Disculpa, porque al hacer referencia a la página desde visual estudio 2003, me manda este error:
    ----Error al descargar 'https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc'.

    Se ha terminado la conexión: No se puede establecer un canal seguro para SSL/TLS.

    No se puede escribir datos de en la conexión de transporte.

    Se ha forzado la interrupción de una conexión existente por el host remoto------

    ResponderEliminar
  3. Muchisismas gracias, la documentacion del SAT es muy mala !!! nuevamente muchas gracias

    ResponderEliminar