1. Home
  2. Servicios
  3. Cancelaciónes
  4. Consulta CFDI relacionados antes de cancelar
  1. Home
  2. Servicios
  3. Consultas
  4. Consulta CFDI relacionados antes de cancelar

Consulta CFDI relacionados antes de cancelar

En el nuevo esquema de cancelación, no es posible cancelar una factura si esta tiene facturas que la estén relacionando. Mediante este servicio podrás consultar los CFDI que estén relacionados a una factura.

Documentación teórica

https://developers.sw.com.mx/knowledge-base/como-cancelar-emisor/


Url Productivo:

https://services.sw.com.mx

Ruta
Operación
Descripción
/relations/csd
POST Ruta para obtener cfdi relacionados por CSD.
/relations/pfx
POST Ruta para obtener cfdi relacionados por PFX.
/relations/xml
POST Ruta para obtener cfdi relacionados por XML.
/relations/{rfc}/{uuid}
POST Ruta para obtener cfdi relacionados por RFC y UUID.

Los servicios para obtener relaciones son servicios REST.

Obtener relaciones por CSD


Como su nombre lo indica, este servicio recibe todos los elementos que componen el CSD los cuales son los siguientes:

  • Certificado (.cer)
  • Key (.key)
  • Password del archivo key
  • RFC Emisor

Asi como el UUID del CFDI al que se desea consultar las relaciones.

Esto ya que nuestro servidor generara el acuse de cancelación.
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea,  se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios, que básicamente es el CSD del Emisor que desea consultar un CFDI, así como el RFC de dicho Emisor, el uuid correspondientes al CFDI que se desea consultar,  y por supuesto el token de acceso anteriormente generado.

Cabe mencionar que los archivos .cer y .key,  al ser binarios, deberán enviarse en formato base64 para que podamos procesarlos en nuestro servidor.

HTTP Request por CSD

 

HTTP Response por CSD

 

Obtener relaciones con las librerias por CSD

Ir al Repositorio de C# en GitHub

using System;
using System.IO;
using System.Text;
using SW.Helpers;
using SW.Services.Relations;
namespace ExampleSDK
{
class Program
{
static void Main(string args)
{
try
{
//Creamos una instancia de tipo Relations
//A esta le pasamos la Url, usuario y password o token de authentication
//Automaticamente despues de obtenerlo se procedera a consultar las facturas relacionadas
Relations relations = new Relations("http://services.test.sw.com.mx", "demo", "123456789");
//Obtenemos Certificado y lo convertimos a Base 64
string CerB64 = Convert.ToBase64String(File.ReadAllBytes("CSD_Pruebas_CFDI_LAN7008173R5.cer"));
//Obtenemos LLave y lo convertimos a Base 64
string KeyB64 = Convert.ToBase64String(File.ReadAllBytes("CSD_Pruebas_CFDI_LAN7008173R5.key"));
RelationsResponse response = relations.RelationsByCSD(CerB64, KeyB64, "LAN7008173R5", "12345678a", "021ea2fb-2254-4232-983b-9808c2ed831b");
//Para obtener el status de la consulta
Console.Write(response.status);
//Para obtener el codigoStatus
Console.WriteLine(response.codStatus);
//Para obtener el uuid consultado
Console.WriteLine(response.data.uuidConsultado);
//Para obtener el resultado de la consulta
Console.WriteLine(response.data.resultado);
//Para obtener los uuid padres
Console.WriteLine(response.data.uuidsRelacionadosPadres);
//Para obtener los uuid hijo
Console.WriteLine(response.data.uuidsRelacionadosHijos);
//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

SWRelationsService app = new SWRelationsService("demo", "123456789", Utils.url_pruebas);
CfdiRelacionadosResponse response = null;
response = (CfdiRelacionadosResponse) app.CfdiRelacionadosCSD(uuid, password_csd, rfc, b64Cer, b64Key);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.resultado);
LinkedList<RelacionData> padres = (LinkedList<RelacionData>) response.uuidsRelacionadosPadres;
if(padres != null) {
for (int i = 0; i < padres.size(); i++) {
RelacionData datos = padres.get(i);
System.out.println(datos.uuid);
System.out.println(datos.rfcEmisor);
System.out.println(datos.rfcReceptor);
}
}
LinkedList<RelacionData> hijos = (LinkedList<RelacionData>) response.uuidsRelacionadosHijos;
if(hijos != null) {
for (int i = 0; i < hijos.size(); i++) {
RelacionData datos = hijos.get(i);
System.out.println(datos.uuid);
System.out.println(datos.rfcEmisor);
System.out.println(datos.rfcReceptor);
}
}
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Ir al Repositorio de PHP en GitHub

<?php
use SWServicesCancelationCancelationService as cancelationService;

$uuidV = "E0AAE6B3-43CC-4B9C-B229-7E221000E2BB";
$rfc = "LAN7008173R5";
$cfdiRelacionados = cancelationService::Set($params);
$cfdiRelacionados = cancelationService::ConsultarCFDIRelacionadosUUID($rfc, $uuidV);
var_dump($cfdiRelacionados);

 

Obtener relaciones por PFX


Como su nombre lo indica, este servicio recibe todos los elementos que componen el PFX los cuales son los siguientes:

  • PFX
  • Password del archivo key
  • RFC Emisor

Asi como el UUID del CFDI al que se desea consultar las relaciones.

Esto ya que nuestro servidor generara el acuse de cancelación.
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea,  se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la consulta, que básicamente es el PFX del Emisor que desea consultar un CFDI, así como el RFC de dicho Emisor, el uuid correspondientes al CFDI que se desea consultar,  y por supuesto el token de acceso anteriormente generado.

Cabe mencionar que los archivos .pfx,  al ser binarios, deberán enviarse en formato base64 para que podamos procesarlos en nuestro servidor.

HTTP Request por PFX

 

HTTP Response por PFX


Obtener relaciones por XML

Como su nombre lo indica, este servicio recibe un XML con el UUID del cual consulta los documentos relacionados.
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea,  se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la consulta, que básicamente es el XML con el uuid correspondientes al CFDI que se desea consultar,  y por supuesto el token de acceso anteriormente generado.

HTTP Request por XML

 

HTTP Response por XML


Obtener relaciones por UUID


Para utilizar este servicio es necesario cargar los certificados en nuestro administrador de timbres, así mismo se proporcionan los siguientes elementos:

  • UUID
  • RFC Emisor

Esto ya que nuestro servidor generara el acuse de cancelación.
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea,  se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la consulta, que básicamente es el CSD del Emisor que desea consultar un CFDI, así como el RFC de dicho Emisor, el uuid correspondientes al CFDI que se desea consultar,  y por supuesto el token de acceso anteriormente generado.

Es necesario subir los certificados a nuestro administrador de timbres para poder consumir este servicio .

Administrador de Pruebas:

http://pruebascliente.smartweb.com.mx


Administrador de Productivo:

https://cliente.smartweb.com.mx

HTTP Request por UUID

HTTP Response por UUID

Respuestas

Todos los response retornan la misma estructura en caso de error o en caso de petición satisfactoria, las cuales son las siguientes:

Tipos de respuesta

En caso de una respuesta exitosa, se regresará un 200. En caso de una respuesta no exitosa, se regresará un código diferente de 200, el código puede variar dependiendo del problema dado.

Respuesta exitosa

En este caso se recibe un mensaje JSON, el cual contiene los siguientes datos:

  • uuidConsultado: El uuid al que se consultan los relacionados.
  • Resultado: Mensaje que retorna el SAT.
  • uuidsRelacionadosPadres: Un arreglo de objetos uuid padre, el cual tiene las propiedades: uuid, rfcEmisor, rfcReceptor.
  • uuidsRelacionadosHijos: Un arreglo de objetos uuid hijo, el cual tiene las propiedades: uuid, rfcEmisor, rfcReceptor

Respuestas no exitosas

Respuestas no exitosas/Relacionados por UUID


Respuestas no exitosas/Cancelación por PFX


Respuestas no exitosas/Relacionados por CSD


Respuestas no exitosas/Cancelación por XML

Códigos de respuesta.

Codigo
Mensaje
Descripción

2000

Existen cfdi relacionados al folio fiscal Este código de respuesta se presentará cuando la petición de consulta encuentre documentos relacionados al UUID consultado.

2001

No Existen cfdi relacionados al folio fiscal Este código de respuesta se presentará cuando el UUID consultado no contenga documentos relacionados a él.

2002

El folio fiscal no pertenece al Emisro.  Este código de respuesta se presentará cuando el RFC del Emisor no corresponda al UUID consultado.

 

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 3, 2021

Article Attachments

Was this article helpful?

Related Articles