Servicio de timbrado customID
Este servicio puede ser utilizado cuando se desea tratar el tema de los XML con la misma operación comercial, diferente sello.(timbre duplicado)
Dos XML tienen la misma operación comercial, pero un sello distinto.
Servicio timbrado CustomId funciona de la siguiente manera.
Al realizar un timbrado se deberá enviar un Header adicional a los necesarios (Content-Type, Authorization) la key es (customid) su value es hasta 100 caracteres.
Para este servicio solo se utilizará la versión V2 de timbrado, que solo regresa TFD y CFDI (el cfdi incluye el tfd)
https://developers.sw.com.mx/knowledge-base/timbrado-version-2
Al consumir este servicio existen dos escenarios
Happy Path
En este caso se envía el mismo CustomId y el mismo XML, en la segunda solicitud con referencia a la primera.
1er solicitud
CustomId: CustomId1
XML: XML1
1 2 3 4 5 6 7 8 |
{ "data": { "tfd": "<?xml version=\"1.0\" encoding=\"utf-8\"?><tfd:TimbreFiscalDigital/>", "cfdi": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante></cfdi:Comprobante>" }, "status": "success" } |
2da solicitud
CustomId: CustomId1
XML: XML1
1 2 3 4 5 6 7 8 9 |
{ "message": "307. El comprobante contiene un timbre previo.", "messageDetail": null, "data": { "tfd": "<?xml version=\"1.0\" encoding=\"utf-8\"?><tfd:TimbreFiscalDigital/>", "cfdi": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante></cfdi:Comprobante>" }, "status": "error" } |
Aquí obtiene el CFDI de manera normal, en la propiedad de data.cfdi
Non-Happy Path
En este caso se envía el mismo CustomId diferente XML, en la segunda solicitud con referencia a la primera.
1er solicitud
CustomId: CustomId1
XML: XML1
1 2 3 4 5 6 7 8 |
{ "data": { "tfd": "<?xml version=\"1.0\" encoding=\"utf-8\"?><tfd:TimbreFiscalDigital/>", "cfdi": "<?xml version=\"1.0\" encoding=\"utf-8\"?><cfdi:Comprobante></cfdi:Comprobante>" }, "status": "success" } |
2da solicitud
CustomId: CustomId1
XML: XML2
1 2 3 4 5 6 7 8 9 |
{ "message": "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.", "messageDetail": null, "data": { "tfd": "<?xml version=\"1.0\" encoding=\"utf-8\"?><tfd:TimbreFiscalDigital/>", "cfdi": null }, "status": "error" } |
En este caso solo recibes el TFD y no el CFDI, para recuperar el CFDI deberás descargarlo.
Recibiendo el TFD puedes extraer el UUID y recuperar el XML previamente timbrado.
El servicio para recuperar XML mediante uuid es el siguiente.
https://developers.sw.com.mx/knowledge-base/recuperar-xml-por-uuid
Para poder tener este comportamiento es necesario que el valor de customID sea un dato inmutable por cada XML a timbrar, como ejemplo podría ser.
RFCEmisor+RFCReceptor+total = customID
Si cambia el valor de CustomID cada intento de timbrado con el mismo XML se estaría timbrando nuevamente.
Timbrado por medio de librería de c#
La librería realiza el timbrado, y descarga la factura de tal manera que sería trasparente. Puedes tener 2 errores
“No es posible obtener el UUID” – al recibir el TFD no se pudo obtener el UUID (Esto para posteriormente descargar el CFDI)
“No es posible obtener el url para descargar el XML” – Al intentar descargar el CFDI este aún no está el URL de descarga, deberás intentar segundos más tarde, enviando el XML y el CustomID.
https://github.com/lunasoft/sw-sdk-dotnet
En caso de ser necesario agregar a lista blanca las siguientes URL
services.sw.com.mx y api.sw.com.mx