1. Home
  2. Servicios
  3. Cancelaciónes
  4. Aceptar o Rechazar cancelación Receptor

Aceptar o Rechazar cancelación Receptor

Servicio mediante el cual el receptor podrá manifestar la aceptación o rechazo de la solicitud de cancelación.

Documentación teórica

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


Ruta
Operación
Descripción
/acceptreject/csd
POST Ruta para aceptar o rechazar una cancelación por csd.
/acceptreject/pfx
POST Ruta para aceptar o rechazar una cancelación por pfx.
/acceptreject/xml
POST Ruta para aceptar o rechazar una cancelación por xml.
/acceptreject/{rfc}/{uuid}/{accion}
POST Ruta para para aceptar o rechazar una cancelación por RFC y UUID.

Acciones disponibles

  • Aceptacion
  • Rechazo

Nota: La palabra “Aceptacion” debe ir sin acento.

Los servicios para Aceptar o Rechazar son servicios REST.

Aceptar/rechazar 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 receptor

Así como el arreglo de las respuestas por UUID.

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 receptor que desea Aceptar/rechazar un CFDI, así como el RFC de dicho receptor, así como el arreglo de las respuestas por UUID.

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

 

Aceptar/rechazar cancelación 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.AcceptReject;
namespace ExampleSDK {
class Program {
static void Main(string args) {
try {
//Creamos una instancia de tipo AcceptReject
//A esta le pasamos la Url, usuario y password o token de authentication
//Automaticamente despues de obtenerlo se procedera a procesar las facturas con su acción
AcceptReject acceptReject = new AcceptReject("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"));
AcceptRejectResponse response = acceptReject.AcceptByCSD(CerB64, KeyB64, "LAN7008173R5", "12345678a", new AceptacionRechazoItem {
new AceptacionRechazoItem() {
uuid = "01724196-ac5a-4735-b621-e3b42bcbb459", action = EnumAcceptReject.Aceptacion
}
});
//Para obtener el status de la consulta
Console.Write(response.status);
//Para obtener el codigoStatus
Console.WriteLine(response.codStatus);
//Para obtener una lista con los folios
Console.WriteLine(response.data.folios);
//Para obtener el acuse
Console.WriteLine(response.data.acuse);
//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.AcceptReject.SWAcceptRejectService;
import Utils.Responses.AcceptReject.AceptarRechazarCancelationResponse;
import Utils.Responses.AcceptReject.CancelationData;

public static void main(String args) {
SWAcceptRejectService app = new SWAcceptRejectService("demo", "123456789", Utils.url_pruebas);
Map < String, String > uuids = new HashMap < String, String > ();
uuids.put("06a46e4b-b154-4c12-bb77-f9a63ed55ff2", "Aceptacion");
AceptarRechazarCancelationResponse response = null;
response = (AceptarRechazarCancelationResponse) app.AceptarRechazarCancelacionCSD(uuids, password_csd, rfc, b64Cer, b64Key);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
LinkedList < CancelationData > folios = (LinkedList < CancelationData > ) response.folios;
if (folios != null) {
for (int i = 0; i < folios.size(); i++) {
CancelationData datos = folios.get(i);
System.out.println(datos.uuid);
System.out.println(datos.estatusUUID);
System.out.println(datos.respuesta);
}
}
System.out.println(response.acuse);
}

Ir al Repositorio de PHP en GitHub

<?php use SWServicesCancelationCancelationService as cancelationService; $rfc = "LAN7008173R5"; $uuidV = "E0AAE6B3-43CC-4B9C-B229-7E221000E2BB"; $accion = "Aceptacion"; $aceptarRechazar = cancelationService::Set($params); $aceptarRechazar = cancelationService::AceptarRechazarCancelacionUUID($rfc, $uuidV, $accion); var_dump($aceptarRechazar); ?>

Aceptar/rechazar 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 receptor

Así como el arreglo de las respuestas por UUID.

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 PFX del receptor que desea Aceptar/rechazar un CFDI, así como el RFC de dicho receptor, así como el arreglo de las respuestas por UUID.

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


Aceptar/rechazar por XML


Como su nombre lo indica, este servicio recibe el XML para cancelación, donde deberán venir todos los UUID con su acción a realizar [Aceptar o Rechazar].
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 cancelación, que básicamente es el XML con todos los UUID con su acción correspondiente.

HTTP Request por XML

 

HTTP Response por XML


Aceptar/rechazar por UUID y RFC


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

  • UUID
  • RFC receptor

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 aceptación/rechazo, que son el RFC y el UUID a que desea aceptar/rechazar una cancelación (Para poder consumir este servicio es necesario subir los certificados en nuestro administrador de timbres, para así poder generar la petición), y por supuesto el token de acceso anteriormente generado.

Las URL del administrador de timbres son las siguientes:

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

1000

Se recibió la respuesta de la petición de forma exitosa

1001

Se recibió la respuesta de la petición de forma exitosa

1002

Ya se recibió una respuesta para la petición de cancelación del uuid

1003

Sello No Corresponde al RFC Receptor

1004

Existen más de una petición de cancelación para el mismo uuid

1005

El uuid es nulo no posee el formato correcto

1006

Se rebaso el número máximo de solicitudes permitidas

 

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