1. Home
  2. Servicios
  3. Consulta LRFC

Consulta LRFC

Servicio para identificar que los RFC (emisores y receptores) que intervienen en el proceso sean válidos, es decir que estén en la LCO (Lista de Contribuyentes con Obligación ante el SAT). Muchos de los errores en RFC se dan al momento de capturarlos de manera incorrecta, confundiendo el “6” con la letra “G” o el “0” con la letra “O”, la causa también puede ser que un contribuyente le dejó de pagar sus obligaciones al SAT y lo dieron de baja.

Este servicio recibe el token y el LRFC que se desea validar

Ruta
Operación
Descripción
/lrfc/{LRFC}
GET Ruta para consultar LRFC.

HTTP Request

 

En caso de obtener una respuesta satisfactoria nos regresará los elementos:

  • contribuyenteRFC: valor del RFC enviado a válidar para comprobar exista correspondencia entre la información solicitada y la información recibida.
  • sncf: Valor registrado como verdadero en caso de que el RFC a válidar sea de un empleado laborando ante una institución de gobierno.
  • subcontratacion: valor verdadero o falso para el caso de los empleados que fueran contratados bajo el esquema de subcontratación.

HTTP Response

En caso de que nuestro RFC sea inválido recibiremos un mensaje CS1002, indicandonos que no se encuentra entre la LRFC el RFC a válidar.

Respuesta no exitosa

Validar LRFC con las librerías


Ir al Repositorio de C# en GitHub

using System;
using System.IO;
using System.Text;
using SW.Helpers;
using SW.Services.Validate;
namespace ExampleSDK
{
    class Program
    {
        static void Main()
        {
            try
            {
                //Creamos una instancia de tipo Validate
                //A esta le pasamos la Url, Usuario y Contraseña para obtener el token
                //Automaticamente despues de obtenerlo se procedera a validar el XML
                Validate validate = new Validate ("http://services.test.sw.com.mx", "demo", "123456789");
                ValidateLrfcResponse response = validate.ValidateLrfc("LAN7008173R5");
                //Para obtener el status
                Console.Write(response.status);
                //Para obtener el contribuyente
                Console.Write(response.data.contribuyenteRFC);
                //Para obtener el campo sncf
                Console.Write(response.data.sncf);
                //Para obtener si es subcontratado
                Console.Write(response.data.subcontratacion);
                //En caso de error se pueden consultar los siguientes campos
                Console.WriteLine(response.message);
                Console.WriteLine(response.messageDetail);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}


Ir al Repositorio de Java en GitHub

package sample_test;
import Services.Validate.SWValidateService;
import Utils.Responses.Validate.ValidateLrfcResponse;

public class Sample_test {

    public static void main(String args) {

        String token = "T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxrUndzK0dHS2dpTittY1JmR3o2M3NqNkh4MW9KVXMvUHhZYzVLQS9UK2E1SVhEZFJKYWx4ZmlEWDFuSXlqc2ZRYXlUQk1ldlZkU2tEdU10NFVMdHZKUURLblBxakw0SDl5bUxabDFLNmNPbEp6b3Jtd2Q1V2htRHlTdDZ6eTFRdUNnYnVvK2tuVUdhMmwrVWRCZi9rQkU9.7k2gVCGSZKLzJK5Ky3Nr5tKxvGSJhL13Q8W-YhT0uIo";
        try {
            //Ejemplo de Validar LRFC utilizando la librería sw-java
            //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
            //Se especifica el base path, esto para consumir el api de pruebas o productivo
            SWValidateService api = new SWValidateService("demo", "123456789", "http://services.test.sw.com.mx");
            //Se inicializa un objeto response, que obtendra la respuesta del api
            ValidateLrfcResponse response = null;
            //Se ejecuta el metodo "ValidateLrfc", que generará los datos requeridos
            response = (ValidateLrfcResponse) api.ValidateLrfc("LAN7008173R5");
            //El objeto response tendra así los atributos:
            //Status: estado de la petición procesada, puede ser : "success", "fail", "error"
            //HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
            System.out.println(response.Status);
            System.out.println(response.HttpStatusCode);
            System.out.println(response.contribuyenteRFC);
            System.out.println(response.sncf);
            System.out.println(response.subcontratacion);
            // En caso de error, se pueden visualizar los campos message y/o messageDetail
            System.out.println(response.message);
            System.out.println(response.messageDetail);

        } catch (Exception e) {
            //En caso de obtener estatus "fail", "error"
            //Se generara una excepción
            System.out.println(e.getMessage());
        }
    }
}


Ir al Repositorio de PHP en GitHub

<?php require_once "vendor/autoload.php";

use SWServicesValidationValidaLrfc as validaLrfc; 

$params = array( "url"=> "services.test.sw.com.mx",
		"token"=> "T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxrUndzK0dHS2dpTittY1JmR3o2M3NqNkh4MW9KVXMvUHhZYzVLQS9UK2E1SVhEZFJKYWx4ZmlEWDFuSXlqc2ZRYXlUQk1ldlZkU2tEdU10NFVMdHZKUURLblBxakw0SDl5bUxabDFLNmNPbEp6b3Jtd2Q1V2htRHlTdDZ6eTFRdUNnYnVvK2tuVUdhMmwrVWRCZi9rQkU9.7k2gVCGSZKLzJK5Ky3Nr5tKxvGSJhL13Q8W-YhT0uIo",
	);

	try {
		$validateLCRFC = validaLrfc::Set($params);
		$resultadoLRFC= $validateLCRFC::ValidaLrfc("LSO1306189R5");

		//Para Obtener el contribuyenteRFC
        	$result->data->contribuyenteRFC;
	        //Para saber si cuenta con sncf
	        $result->data->sncf;
	        //Para saber si es subcontratacion
	        $result->data->subcontratacion;
        
       		 //En caso de error, se pueden visualizar los campos message y/o messageDetail
	        $result->message;
	        $result->messageDetail;
	} catch(Exception $e) { //en caso de obtener una excepción
		echo "Caught exception: ",  $e->getMessage(), "
";
	}
?>

 

 

Para realizar la integración con nuestros servicios recomendamos utilizar POSTMAN , facilita las pruebas previas a la codificación.
Puedes importar el archivo POSTMAN-collection que proporcionamos al final del articulo para su descarga en POSTMAN para que puedas realizar pruebas funcionales de nuestro servicio.

Updated on noviembre 26, 2018

Article Attachments

Was this article helpful?

Related Articles

  • Ibrahim Bittar Torres

    Hola, muchas gracias por el artículo y creo que este servicio va a ser de gran utilidad.

    ¿Crees que sea posible que el GET me regrese también la razón social del contribuyente?. Hace unos meses un usuario por error de dedo puso un RFC válido en la ficha de otro cliente. Se timbraron como 100 facturas con un RFC pero otra razón social. El cliente se dio cuenta hasta tres meses después. Y lo peor de todo es que fue en diciembre el error y se echaron un cierre anual y todo.

    Estaría padre que al capturar un cliente pudiéramos validar que la razón social coincida con el RFC o inclusive jalar la razón social en función al RFC.

    Y como pedir no empobrece: Si ustedes tuvieran también los datos del domicilio fiscal del contribuyente entonces sería súper fácil dar de alta a un cliente correctamente.

    • Hermes Jimenez

      Que tal Ibrahim, La razón social y el RFC se pueden obtener directamente del Certificado con el que esta siendo sellada la factura. La listas del SAT no contienen la información que mencionas. En el siguiente link te dejo un ejemplo en c# de como obtener esta información, estamos próximos a liberar codigo similar para java y php. https://github.com/lunasoft/sw-tools-dotnet/blob/master/SW.Tools/Sign.cs . Las funciones que realizan lo que necesitan son: CertificateName y CertificateTaxId.
      Saludos.

      • Ibrahim Bittar Torres

        Del sello digital se puede obtener la información del emisor pero no del receptor de la factura. Lástima :), déjame seguir buscando.

  • David

    Hola, instalo las librerías usando composer como lo indica en su repositorio para php de la rama master pero al querer hacer uso de las librerías me marca un error.
    Uncaught Error: Class ‘SWServicesValidationValidaLrfc’ not found in
    Pensé que faltarían las diagonales pero el resultado es el mismo:
    Uncaught Error: Class ‘SWServicesValidationValidaLrfc’ not found
    Al usar otras librerías como Authenticationno hay ningún problema.

    • Juan Carlos Gamez Cuevas

      Buen día, la versión de la librería que está en composer no tiene la implementación para este servicio. Si descargas de GitHub la que está en la rama “develop” ya no deberías tener problemas.

      https://github.com/lunasoft/sw-sdk-php/tree/develop

      Saludos!

      • David

        Muchas gracias, funciono excelente

  • HARJ

    Hola buen día, esta consulta de RFC consume timbres? Saludos.

  • Carlos Villanueva

    Hola buen día, con este servicio podría evitar el error del RFC a la hora de timbrar?

    rfc no se encuentra en la lista de rfc no cancelados

    Para confirmar, de antemano muchas gracias!