Anexo 26-BIS de la Resolución Miscelánea Fiscal para 2015

Códigos de Seguridad para la Industria Tabacalera a través de servicios

Contenido

I.        De los servicios de Códigos de Seguridad:

A.      Estándar de solicitud de Códigos de Seguridad

B.      Estándar de Consulta del estado de la Solicitud de Códigos de Seguridad

C.      Estándar de recepción de Información de Producción

D.      Estándar de Descarga de archivos con Códigos de Seguridad

E.      Generación de la firma y sello para la solicitud y Descarga de Códigos de Seguridad

II.       De las respuestas y Acuses de los servicios web

A.      Acuse de Recibo de la solicitud de códigos de seguridad.

B.      Respuesta de la Consulta del estado de la solicitud

C.      Acuse de recibo de la información de producción.

D.      Respuesta a la solicitud de descarga de archivos con códigos de seguridad.

 

I.       De los servicios de Códigos de Seguridad:

A.            Estándar de solicitud de Códigos de Seguridad

El contribuyente que opte por solicitar códigos de seguridad por medio de los servicios web disponibles deberá generarlos bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.

Para poder ser validado, la solicitud deberá estar referenciada al namespace y la validación del mismo a la ruta publicada por el SAT en donde se encuentra el esquema XSD objeto de la presente sección (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud/TBCSlcCodSeg.xsd) de la siguiente manera:

<slccodseg:TBCSlcCodSeg

              xmlns: slccodseg = "http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud"

              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

              xsi:schemaLocation="

              http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud

              http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud/TBCSlcCodSegv.xsd"

……………..

</slccodseg:TBCSlcCodSeg>

Adicionalmente a las reglas de estructura planteadas dentro del presente estándar, el contribuyente que opte por este mecanismo de operación de Códigos de Seguridad deberá sujetarse tanto a las disposiciones fiscales vigentes, como a los lineamientos técnicos de forma y sintaxis para la generación de archivos XML especificados por el consorcio w3, establecidos en www.w3.org.

En particular se deberá tener cuidado de que aquellos casos especiales que se presenten en los valores especificados dentro de los atributos del archivo XML como aquellos que usan el carácter &, el carácter “, el carácter ‘, el carácter < y el carácter > que requieren del uso de secuencias de escape.

¡    En el caso del & se deberá usar la secuencia &amp;

¡    En el caso del “ se deberá usar la secuencia &quot;

¡    En el caso del < se deberá usar la secuencia &lt;

¡    En el caso del > se deberá usar la secuencia &gt;

¡    En el caso del ‘ se deberá usar la secuencia &apos;

Ejemplos:

Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan &amp; José &amp; &quot;Niño&quot;”

Cabe mencionar que la especificación XML permite el uso de secuencias de escape para el manejo de caracteres acentuados y el carácter ñ, sin embargo, dichas secuencias de escape no son necesarias al expresar el documento XML bajo el estándar de codificación UTF-8 si fue creado correctamente.

Para los atributos que sean referidos a un tipo especial de catálogo, tipo de dato simple o tipo de dato complejo global, utilizado por los servicios web en sus diversos esquemas, se publican en formato xsd en la ruta: (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd), para ser incluidos cuando el servicio lo requiera.

Estructura

Elementos

 

Elemento: TBCSlcCodSeg

 

Diagrama

 

 

Descripción

 

 

Estándar de Solicitud de Códigos de Seguridad para Tabacos

 

Atributos

 

 

Version

 

Descripción

Atributo requerido para expresar la versión del formato.

 

Uso

requerido

 

Valor Prefijado

1.0

 

Tipo Base

xs:string

 

Fecha

 

Descripción

Atributo requerido para expresar la fecha de la solicitud de Códigos de Seguridad

 

Uso

requerido

 

Tipo Base

xs:dateTime

 

RFCProveedorCertificado

 

Descripción

Atributo requerido para expresar el RFC del Proveedor de Servicios Autorizado.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

 

Elementos Hijo (min,max)

 

 

Secuencia (1, 1)

Solicitud (1, 1)

Elemento: Solicitud

 

Diagrama

 

 

Descripción

 

 

Nodo obligatorio para expresar la solicitud de Códigos de Seguridad

 

Atributos

 

 

RFC

 

Descripción

Atributo requerido para expresar el RFC del Contribuyente que solicita los Códigos de Seguridad

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

TipoContribuyente

 

Descripción

Atributo requerido para expresar el tipo de contribuyente. 1. Fabricante, 2. Importador, 3. Ambos

 

Uso

requerido

 

Tipo Especial

cat:catTipoContribuyente

 

CantidadCodigos

 

Descripción

Atributo requerido para expresar el número Total de Códigos de Seguridad Solicitados

 

Uso

requerido

 

Tipo Base

xs:integer

 

Valor Mínimo Incluyente

1

 

Origen

 

Descripción

Atributo requerido para expresar el país de origen del producto.

 

Uso

requerido

 

Tipo Especial

cat:catPais

 

Firma

 

Descripción

Atributo requerido para contener la firma digital del emisor o contribuyente que solicita los códigos de seguridad. La firma deberá ser expresada como una cadena de texto en formato base 64.

 

Uso

requerido

 

Tipo Base

xs:string

 

Cert

 

Descripción

Atributo requerido que sirve para incorporar el certificado de sello digital del emisor o contribuyente que ampara la solicitud como texto, en formato base 64.

 

Uso

requerido

 

Tipo Base

xs:string

 

NumCert

 

Descripción

Atributo requerido para expresar el número de serie del certificado del emisor o contribuyente.

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud

20

 

Código Fuente

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:slccodseg="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cat="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" targetNamespace=http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud

elementFormDefault="qualified" attributeFormDefault="unqualified">

                <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="catTabacos.xsd"/>

                <xs:element name="TBCSlcCodSeg">

                               <xs:annotation>

                                               <xs:documentation>Estándar de Solicitud de Códigos de Seguridad para Tabacos</xs:documentation>

                               </xs:annotation>

                               <xs:complexType>

                                               <xs:sequence>

                                                               <xs:element name="Solicitud">

                                                                              <xs:annotation>

                                                                                              <xs:documentation>Nodo obligatorio para expresar la solicitud de Códigos de Seguridad</xs:documentation>

                                                                              </xs:annotation>

                                                                              <xs:complexType>

                                                                                              <xs:attribute name="RFC" type="cat:tipoRFC" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el RFC del Contribuyente que solicita los Códigos de Seguridad</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="TipoContribuyente" type="cat:catTipoContribuyente" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el tipo de contribuyente. 1. Fabricante, 2. Importador, 3. Ambos</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="CantidadCodigos" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el número Total de Códigos de Seguridad Solicitados</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:integer">

                                                                                                                                             <xs:minInclusive value="1"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Origen" type="cat:catPais" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el país de origen del producto.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Firma" type="xs:string" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para contener la firma digital del emisor o contribuyente que solicita los códigos de seguridad. La firma deberá ser expresada como una cadena de texto en formato base 64.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Cert" type="xs:string" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido que sirve para incorporar el certificado de sello digital del emisor o contribuyente que ampara la solicitud como texto, en formato base 64.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="NumCert" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el número de serie del certificado del emisor o contribuyente.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:length value="20"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                              </xs:complexType>

                                                               </xs:element>

                                               </xs:sequence>

                                               <xs:attribute name="Version" type="xs:string" use="required" fixed="1.0">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la versión del formato.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="Fecha" type="xs:dateTime" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la fecha de la solicitud de Códigos de Seguridad</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="RFCProveedorCertificado" type="cat:tipoRFC" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el RFC del Proveedor de Servicios Autorizado.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                               </xs:complexType>

                </xs:element>

</xs:schema>

 

I.       De los servicios de Códigos de Seguridad:

B.              Estándar de Consulta del estado de la Solicitud de Códigos de Seguridad

El contribuyente que opte por consultar el estado de la solicitud de códigos de seguridad por medio de los servicios web disponibles deberá generarlos bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.

Para poder ser validado, la solicitud deberá estar referenciada al namespace y la validación del mismo a la ruta publicada por el SAT en donde se encuentra el esquema XSD objeto de la presente sección (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta/TBCConsulFolio.xsd) de la siguiente manera:

<confol:TBCConsulFolio

               xmlns:confol="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

               xsi:schemaLocation="

               http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta

               http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta/TBCConsulFolio.xsd"

……………..

</confol:TBCConsulFolio>

Adicionalmente a las reglas de estructura planteadas dentro del presente estándar, el contribuyente que opte por este mecanismo de operación de Códigos de Seguridad deberá sujetarse tanto a las disposiciones fiscales vigentes, como a los lineamientos técnicos de forma y sintaxis para la generación de archivos XML especificados por el consorcio w3, establecidos en www.w3.org.

En particular se deberá tener cuidado de que aquellos casos especiales que se presenten en los valores especificados dentro de los atributos del archivo XML como aquellos que usan el carácter &, el carácter “, el carácter ‘, el carácter < y el carácter > que requieren del uso de secuencias de escape.

¡       En el caso del & se deberá usar la secuencia &amp;

¡       En el caso del “ se deberá usar la secuencia &quot;

¡       En el caso del < se deberá usar la secuencia &lt;

¡       En el caso del > se deberá usar la secuencia &gt;

¡       En el caso del ‘ se deberá usar la secuencia &apos;

Ejemplos:

Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan &amp; José &amp; &quot;Niño&quot;”

Cabe mencionar que la especificación XML permite el uso de secuencias de escape para el manejo de caracteres acentuados y el carácter ñ, sin embargo, dichas secuencias de escape no son necesarias al expresar el documento XML bajo el estándar de codificación UTF-8 si fue creado correctamente.

Para los atributos que sean referidos a un tipo especial de catálogo, tipo de dato simple o tipo de dato complejo global, utilizado por los servicios web en sus diversos esquemas, se publican en formato xsd en la ruta: http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/cat/Tabacos.xsd/, para ser incluidos cuando el servicio lo requiera.

Estructura

Elementos

 

Elemento: TBCConsulFolio

 

Diagrama

 

 

Descripción

 

 

Estándar para la consulta del estado de la Solicitud de Códigos de Seguridad para Tabacos

 

Atributos

 

 

Version

 

Descripción

Atributo requerido para expresar la versión del formato.

 

Uso

requerido

 

Valor Prefijado

1.0

 

Tipo Base

xs:string

 

RFCProveedorCertificado

 

Descripción

Atributo requerido para expresar el RFC del Proveedor de Servicios Autorizado.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

 

Elementos Hijo (min,max)

 

 

Secuencia (1, 1)

Folios (1, 1)

 

Elemento: Folios

 

Diagrama

 

 

Descripción

 

 

Nodo requerido para expresar el Folio asignado a la solicitud de códigos de seguridad

 

Atributos

 

 

RFC

 

Descripción

Atributo requerido para expresar el RFC del Contribuyente que solicita los Códigos de Seguridad

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

Folio

 

Descripción

Atributo requerido para expresar el número de Folio asignado a la solicitud de Códigos de Seguridad

 

Uso

requerido

 

Tipo Base

xs:string

 

Código Fuente

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:confol="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cat="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" targetNamespace=http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta

elementFormDefault="qualified" attributeFormDefault="unqualified">

                <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="catTabacos.xsd"/>

                <xs:element name="TBCConsulFolio">

                               <xs:annotation>

                                               <xs:documentation>Estándar para la consulta del estado de la Solicitud de Códigos de Seguridad para Tabacos</xs:documentation>

                               </xs:annotation>

                               <xs:complexType>

                                               <xs:sequence>

                                                               <xs:element name="Folios">

                                                                              <xs:annotation>

                                                                                              <xs:documentation>Nodo requerido para expresar el Folio asignado a la solicitud de códigos de seguridad</xs:documentation>

                                                                              </xs:annotation>

                                                                              <xs:complexType>

                                                                                              <xs:attribute name="RFC" type="cat:tipoRFC" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el RFC del Contribuyente que solicita los Códigos de Seguridad</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Folio" type="xs:string" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el número de Folio asignado a la solicitud de Códigos de Seguridad</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                              </xs:complexType>

                                                               </xs:element>

                                               </xs:sequence>

                                               <xs:attribute name="Version" type="xs:string" use="required" fixed="1.0">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la versión del formato.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="RFCProveedorCertificado" type="cat:tipoRFC" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el RFC del Proveedor de Servicios Autorizado.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                               </xs:complexType>

                </xs:element>

</xs:schema>

I.       De los servicios de Códigos de Seguridad:

C.                      Estándar de recepción de información de producción.

El contribuyente que opte por enviar la información de producción de los códigos de seguridad por medio de los servicios web disponibles deberá generarlos bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.

Para poder ser validado, la solicitud deberá estar referenciada al namespace y la validación del mismo a la ruta publicada por el SAT en donde se encuentra el esquema XSD objeto de la presente sección (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion/TBCRetroInfo.xsd) de la siguiente manera:

<retro:TBCRetroInfo

xmlns:retro=http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion/TBCRetroInfo.xsd"

……………..

</retro:TBCRetroInfo>

Adicionalmente a las reglas de estructura planteadas dentro del presente estándar, el contribuyente que opte por este mecanismo de operación de Códigos de Seguridad deberá sujetarse tanto a las disposiciones fiscales vigentes, como a los lineamientos técnicos de forma y sintaxis para la generación de archivos XML especificados por el consorcio w3, establecidos en www.w3.org.

En particular se deberá tener cuidado de que aquellos casos especiales que se presenten en los valores especificados dentro de los atributos del archivo XML como aquellos que usan el carácter &, el carácter “, el carácter ‘, el carácter < y el carácter > que requieren del uso de secuencias de escape.

¡       En el caso del & se deberá usar la secuencia &amp;

¡       En el caso del “ se deberá usar la secuencia &quot;

¡       En el caso del < se deberá usar la secuencia &lt;

¡       En el caso del > se deberá usar la secuencia &gt;

¡       En el caso del ‘ se deberá usar la secuencia &apos;

Ejemplos:

Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan &amp; José &amp; &quot;Niño&quot;”

Cabe mencionar que la especificación XML permite el uso de secuencias de escape para el manejo de caracteres acentuados y el carácter ñ, sin embargo, dichas secuencias de escape no son necesarias al expresar el documento XML bajo el estándar de codificación UTF-8 si fue creado correctamente.

Para los atributos que sean referidos a un tipo especial de catálogo, tipo de dato simple o tipo de dato complejo global, utilizado por los servicios web en sus diversos esquemas, se publican en formato xsd en la ruta: (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd), para ser incluidos cuando el servicio lo requiera.

Estructura

Elementos

 

Elemento: TBCRetroInfo

 

Diagrama

 

 

Descripción

 

 

Estándar de la retroalimentación de Información de los códigos de seguridad para Tabacos

 

Atributos

 

 

Version

 

Descripción

Atributo requerido para expresar la versión del formato.

 

Uso

requerido

 

Valor Prefijado

1.0

 

Tipo Base

xs:string

 

Fecha

 

Descripción

Atributo requerido para expresar la fecha del informe

 

Uso

requerido

 

Tipo Base

xs:dateTime

 

RFCProveedorCertificado

 

Descripción

Atributo requerido para expresar el RFC del Proveedor de Servicios Autorizado.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

 

Elementos Hijo (min,max)

 

 

Opción (1, 1)

Produccion (1, Ilimitado)

Destruccion (1, Ilimitado)

CodigosNoValidos (1, Ilimitado)

 

Elemento: Produccion

 

Diagrama

 

 

Descripción

 

 

Nodo Opcional para expresar las actualizaciones de información de los Códigos de Seguridad impresos por el Contribuyente

 

Atributos

 

 

RFC

 

Descripción

Atributo requerido para expresar el RFC del Contribuyente al que se le enviaron los Códigos de Seguridad.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

Marca

 

Descripción

Atributo requerido para expresar la marca del producto al que se le asignaron Códigos de Seguridad

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud

6

 

Patrón

[0-4][0-9]{5}

 

CantidadCigarros

 

Descripción

Atributo requerido para expresar el número Total de cigarros que contiene el producto

 

Uso

requerido

 

Tipo Base

xs:integer

 

Dígitos Totales

4

 

Valor Mínimo Incluyente

0

 

CantidadProduccion

 

Descripción

Atributo requerido para expresar la cantidad de cajetillas producidas en este rango de códigos

 

Uso

requerido

 

Tipo Base

xs:integer

 

PlantaProduccion

 

Descripción

Atributo requerido para expresar la Planta de producción donde se imprimieron los Códigos de Seguridad

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud Máxima

255

 

MaquinaProduccion

 

Descripción

Atributo requerido para expresar la Máquina de producción que imprimió los Códigos de Seguridad

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud Máxima

50

 

LoteProduccion

 

Descripción

Atributo requerido para expresar el Lote de producción al que pertenece el producto

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud Máxima

20

 

LineaProd

 

Descripción

Atributo requerido para expresar la línea de producción del producto

 

Uso

requerido

 

Tipo Base

xs:integer

 

Dígitos Totales

3

 

Valor Mínimo Incluyente

0

 

FechaHoraProd

 

Descripción

Atributo requerido para expresar la fecha y hora en la que se realizó la producción

 

Uso

requerido

 

Tipo Base

xs:dateTime

 

Origen

 

Descripción

Atributo requerido para expresar el país de origen del producto

 

Uso

requerido

 

Tipo Base

xs:string

 

FechaImportacion

 

Descripción

Atributo opcional para expresar la fecha de importación del producto

 

Uso

opcional

 

Tipo Base

xs:date

 

 

Elementos Hijo (min,max)

 

 

Secuencia (1, 1)

Rangos (1, Ilimitado)

 

Elemento: Rangos

 

Diagrama

 

 

Descripción

 

 

Nodo requerido para expresar los rangos de los identificadores de Códigos de Seguridad

 

Tipo Raiz

 

 

cat:RangoCodigosSeguridad

Elemento: Destruccion

 

Diagrama

 

 

Descripción

 

 

Nodo opcional para expresar los Códigos de Seguridad que fueron destruidos por el Contribuyente

 

Atributos

 

 

RFC

 

Descripción

Atributo requerido para expresar el RFC del Contribuyente al que se le enviaron los Códigos de Seguridad.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

Marca

 

Descripción

Atributo requerido para expresar la marca del producto al que se le asignaron Códigos de Seguridad.

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud

6

 

Patrón

[0-4][0-9]{5}

 

PlantaProduccion

 

Descripción

Atributo requerido para expresar la Planta de producción donde se imprimieron los Códigos de Seguridad.

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud Máxima

255

 

MaquinaProduccion

 

Descripción

Atributo requerido para expresar la Máquina de producción que imprimió los Códigos de Seguridad.

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud Máxima

50

 

LoteProduccion

 

Descripción

Atributo requerido para expresar el Lote de producción al que pertenece el producto.

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud Máxima

20

 

CantidadProduccion

 

Descripción

Atributo requerido para expresar el número Total de productos.

 

Uso

requerido

 

Tipo Base

xs:integer

 

Dígitos Totales

4

 

Valor Mínimo Incluyente

0

 

TipoRetroalimentacion

 

Descripción

Atributo requerido para expresar el tipo de retroalimentación 3. Destrucción 4. Desperdicios

 

Uso

requerido

 

Tipo Especial

cat:catTipoRetroalimentacion

 

Origen

 

Descripción

Atributo requerido para expresar el país de origen del producto.

 

Uso

requerido

 

Tipo Base

xs:string

 

FechaHoraReg

 

Descripción

Atributo requerido para expresar la fecha y hora del registro.

 

Uso

requerido

 

Tipo Base

xs:dateTime

 

CantidadDestruccion

 

Descripción

Atributo requerido para expresar el número total de productos en destrucción o desperdicios.

 

Uso

requerido

 

Tipo Base

xs:integer

 

Valor Mínimo Incluyente

1

 

 

Elementos Hijo (min,max)

 

 

Secuencia (1, 1)

Rangos (1, Ilimitado)

 

Elemento: Rangos

 

Diagrama

 

 

Descripción

 

 

Nodo requerido para expresar los rangos de los identificadores de Códigos de Seguridad

 

Tipo Raiz

 

 

cat:RangoCodigosSeguridad

Elemento: CodigosNoValidos

 

Diagrama

 

 

Descripción

 

 

Nodo opcional para expresar los Códigos de Seguridad marcados como Falsos por el Contribuyente

 

Atributos

 

 

RFC

 

Descripción

Atributo requerido para expresar el RFC del Contribuyente al que se le enviaron los Códigos de Seguridad.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

Justificacion

 

Descripción

Atributo requerido para expresar la justificación

 

Uso

requerido

 

Tipo Base

xs:string

 

 

Elementos Hijo (min,max)

 

 

Secuencia (1, 1)

Rangos (1, Ilimitado)

Elemento: Rangos

 

Diagrama

 

 

Descripción

 

 

Nodo requerido para expresar los rangos de los identificadores de Códigos de Seguridad

 

Tipo Raiz

 

 

cat:RangoCodigosSeguridad

 

Código Fuente

  <?xml version="1.0" encoding="UTF-8"?>

  <xs:schema xmlns:retro="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cat="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" targetNamespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion" elementFormDefault="qualified" attributeFormDefault="unqualified">

                <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="catTabacos.xsd"/>

                <xs:element name="TBCRetroInfo">

                               <xs:annotation>

                                               <xs:documentation>Estándar de la retroalimentación de Información de los códigos de seguridad para Tabacos</xs:documentation>

                               </xs:annotation>

                               <xs:complexType>

                                               <xs:choice>

                                                               <xs:element name="Produccion" maxOccurs="unbounded">

                                                                              <xs:annotation>

                                                                                              <xs:documentation>Nodo Opcional para expresar las actualizaciones de información de los Códigos de Seguridad impresos por el Contribuyente</xs:documentation>

                                                                              </xs:annotation>

                                                                              <xs:complexType>

                                                                                              <xs:sequence>

                                                                                                              <xs:element name="Rangos" type="cat:RangoCodigosSeguridad" maxOccurs="unbounded">

                                                                                                                             <xs:annotation>

                                                                                                                                             <xs:documentation>Nodo requerido para expresar los rangos de los identificadores de Códigos de Seguridad</xs:documentation>

                                                                                                                             </xs:annotation>

                                                                                                              </xs:element>

                                                                                              </xs:sequence>

                                                                                              <xs:attribute name="RFC" type="cat:tipoRFC"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el RFC del Contribuyente al que se le enviaron los Códigos de Seguridad.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Marca" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la marca del producto al que se le asignaron Códigos de Seguridad</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:length value="6"/>

                                                                                                                                             <xs:pattern value="[0-4][0-9]{5}"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="CantidadCigarros" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el número Total de cigarros que contiene el producto</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:integer">

                                                                                                                                             <xs:minInclusive value="0"/>

                                                                                                                                             <xs:totalDigits value="4"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="CantidadProduccion"
 type="xs:integer" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la cantidad de cajetillas producidas en este rango de códigos</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="PlantaProduccion" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la Planta de producción donde se imprimieron los Códigos de Seguridad</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:maxLength value="255"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="MaquinaProduccion"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la Máquina de producción que imprimió los Códigos de Seguridad</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:maxLength value="50"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="LoteProduccion" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el Lote de producción al que pertenece el producto</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:maxLength value="20"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="LineaProd" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la línea de producción del producto</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:integer">

                                                                                                                                             <xs:minInclusive value="0"/>

                                                                                                                                             <xs:totalDigits value="3"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="FechaHoraProd" type="xs:dateTime" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la fecha y hora en la que se realizó la producción</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Origen" type="xs:string" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el país de origen del producto</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="FechaImportacion" type="xs:date" use="optional">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo opcional para expresar la fecha de importación del producto</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                              </xs:complexType>

                                                               </xs:element>

                                                               <xs:element name="Destruccion" maxOccurs="unbounded">

                                                                              <xs:annotation>

                                                                                              <xs:documentation>Nodo opcional para expresar los Códigos de Seguridad que fueron destruidos por el Contribuyente</xs:documentation>

                                                                              </xs:annotation>

                                                                              <xs:complexType>

                                                                                              <xs:sequence>

                                                                                                              <xs:element name="Rangos" type="cat:RangoCodigosSeguridad" maxOccurs="unbounded">

                                                                                                                             <xs:annotation>

                                                                                                                                             <xs:documentation>Nodo requerido para expresar los rangos de los identificadores de Códigos de Seguridad</xs:documentation>

                                                                                                                             </xs:annotation>

                                                                                                              </xs:element>

                                                                                              </xs:sequence>

                                                                                              <xs:attribute name="RFC" type="cat:tipoRFC"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el RFC del Contribuyente al que se le enviaron los Códigos de Seguridad.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Marca" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la marca del producto al que se le asignaron Códigos de Seguridad.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:length value="6"/>

                                                                                                                                             <xs:pattern value="[0-4][0-9]{5}"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="PlantaProduccion" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la Planta de producción donde se imprimieron los Códigos de Seguridad.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:maxLength value="255"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="MaquinaProduccion"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la Máquina de producción que imprimió los Códigos de Seguridad.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:maxLength value="50"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="LoteProduccion" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el Lote de producción al que pertenece el producto.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:string">

                                                                                                                                             <xs:maxLength value="20"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="CantidadProduccion"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el número Total de productos.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:integer">

                                                                                                                                             <xs:minInclusive value="0"/>

                                                                                                                                             <xs:totalDigits value="4"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="TipoRetroalimentacion" type="cat:catTipoRetroalimentacion" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el tipo de retroalimentación 3. Destrucción 4. Desperdicios</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Origen" type="xs:string"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el país de origen del producto.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="FechaHoraReg" type="xs:dateTime" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la fecha y hora del registro.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="CantidadDestruccion"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el número total de productos en destrucción o desperdicios.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                                              <xs:simpleType>

                                                                                                                             <xs:restriction base="xs:integer">

                                                                                                                                             <xs:minInclusive value="1"/>

                                                                                                                             </xs:restriction>

                                                                                                              </xs:simpleType>

                                                                                              </xs:attribute>

                                                                              </xs:complexType>

                                                               </xs:element>

                                                               <xs:element name="CodigosNoValidos" maxOccurs="unbounded">

                                                                              <xs:annotation>

                                                                                              <xs:documentation>Nodo opcional para expresar los Códigos de Seguridad marcados como Falsos por el Contribuyente</xs:documentation>

                                                                              </xs:annotation>

                                                                              <xs:complexType>

                                                                                              <xs:sequence>

                                                                                                              <xs:element name="Rangos" type="cat:RangoCodigosSeguridad" maxOccurs="unbounded">

                                                                                                                              <xs:annotation>

                                                                                                                                             <xs:documentation>Nodo requerido para expresar los rangos de los identificadores de Códigos de Seguridad</xs:documentation>

                                                                                                                             </xs:annotation>

                                                                                                              </xs:element>

                                                                                              </xs:sequence>

                                                                                              <xs:attribute name="RFC" type="cat:tipoRFC"
use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar el RFC del Contribuyente al que se le enviaron los Códigos de Seguridad.</xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                                              <xs:attribute name="Justificacion" type="xs:string" use="required">

                                                                                                              <xs:annotation>

                                                                                                                             <xs:documentation>Atributo requerido para expresar la justificación </xs:documentation>

                                                                                                              </xs:annotation>

                                                                                              </xs:attribute>

                                                                              </xs:complexType>

                                                               </xs:element>

                                               </xs:choice>

                                               <xs:attribute name="Version" type="xs:string" use="required" fixed="1.0">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la versión del formato.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="Fecha" type="xs:dateTime" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la fecha del informe</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="RFCProveedorCertificado" type="cat:tipoRFC"
use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el RFC del Proveedor de Servicios Autorizado.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                               </xs:complexType>

                </xs:element>

</xs:schema>

I.       De los servicios de Códigos de Seguridad:

D.                      Estándar de descarga de archivos con códigos de seguridad.

El contribuyente que opte por descargar los archivos con códigos de seguridad por medio de los servicios web disponibles deberá generarlos bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.

Para poder ser validado, la solicitud deberá estar referenciada al namespace y la validación del mismo a la ruta publicada por el SAT en donde se encuentra el esquema XSD objeto de la presente sección (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/TBCSlcDescarga.xsd) de la siguiente manera:

<slcdesc:TBCSolDescarga

xmlns:slcdesc="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/TBCSlcDescarga.xsd"

……………..

</slcdesc:TBCSolDescarga>

Adicionalmente a las reglas de estructura planteadas dentro del presente estándar, el contribuyente que opte por este mecanismo de operación de Códigos de Seguridad deberá sujetarse tanto a las disposiciones fiscales vigentes, como a los lineamientos técnicos de forma y sintaxis para la generación de archivos XML especificados por el consorcio w3, establecidos en www.w3.org.

En particular se deberá tener cuidado de que aquellos casos especiales que se presenten en los valores especificados dentro de los atributos del archivo XML como aquellos que usan el carácter &, el carácter “, el carácter ‘, el carácter < y el carácter > que requieren del uso de secuencias de escape.

¡       En el caso del & se deberá usar la secuencia &amp;

¡       En el caso del “ se deberá usar la secuencia &quot;

¡       En el caso del < se deberá usar la secuencia &lt;

¡       En el caso del > se deberá usar la secuencia &gt;

¡       En el caso del ‘ se deberá usar la secuencia &apos;

Ejemplos:

Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan &amp; José &amp; &quot;Niño&quot;”

Cabe mencionar que la especificación XML permite el uso de secuencias de escape para el manejo de caracteres acentuados y el carácter ñ, sin embargo, dichas secuencias de escape no son necesarias al expresar el documento XML bajo el estándar de codificación UTF-8 si fue creado correctamente.

Para los atributos que sean referidos a un tipo especial de catálogo, tipo de dato simple o tipo de dato complejo global, utilizado por los servicios web en sus diversos esquemas, se publican en formato xsd en la ruta: (http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd), para ser incluidos cuando el servicio lo requiera.

Estructura

Elementos

 

Elemento: TBCSolDescarga

 

Diagrama

 

 

Descripción

 

 

Estándar de la solicitud de la descarga de archivos de códigos de seguridad

 

Atributos

 

 

Version

 

Descripción

Atributo requerido para expresar la versión del formato.

 

Uso

requerido

 

Valor Prefijado

1.0

 

Tipo Base

xs:string

 

RFC

 

Descripción

Atributo requerido para expresar el RFC del Contribuyente que solicitó los Códigos de Seguridad.

 

Uso

requerido

 

Tipo Especial

cat:tipoRFC

 

Folio

 

Descripción

Atributo requerido para expresar el número de Folio asignado a la solicitud de Códigos de Seguridad.

 

Uso

requerido

 

Tipo Base

xs:string

 

NomArch

 

Descripción

Atributo requerido para expresar el Nombre del archivo de Códigos de Seguridad.

 

Uso

requerido

 

Tipo Base

xs:string

 

Firma

 

Descripción

Atributo requerido para expresar la Firma de la solicitud de descarga.

 

Uso

requerido

 

Tipo Base

xs:string

 

Cert

 

Descripción

Atributo requerido que sirve para incorporar el certificado de sello digital del emisor o contribuyente que ampara la solicitud como texto, en formato base 64.

 

Uso

requerido

 

Tipo Base

xs:string

 

NumCert

 

Descripción

Atributo requerido para expresar el número de serie del certificado del emisor o contribuyente.

 

Uso

requerido

 

Tipo Base

xs:string

 

Longitud

20

 

 

Código Fuente

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:slcdesc="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cat="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" targetNamespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga"

elementFormDefault="qualified" attributeFormDefault="unqualified">

                <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="catTabacos.xsd"/>

                <xs:element name="TBCSolDescarga">

                               <xs:annotation>

                                               <xs:documentation>Estándar de la solicitud de la descarga de archivos de códigos de seguridad</xs:documentation>

                               </xs:annotation>

                               <xs:complexType>

                                               <xs:attribute name="Version" type="xs:string" use="required" fixed="1.0">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la versión del formato.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="RFC" type="cat:tipoRFC" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el RFC del Contribuyente que solicitó los Códigos de Seguridad.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="Folio" type="xs:string" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el número de Folio asignado a la solicitud de Códigos de Seguridad.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="NomArch" type="xs:string" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el Nombre del archivo de Códigos de Seguridad.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="Firma" type="xs:string" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar la Firma de la solicitud de descarga.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="Cert" type="xs:string" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido que sirve para incorporar el certificado de sello digital del emisor o contribuyente que ampara la solicitud como texto, en formato base 64.</xs:documentation>

                                                               </xs:annotation>

                                               </xs:attribute>

                                               <xs:attribute name="NumCert" use="required">

                                                               <xs:annotation>

                                                                              <xs:documentation>Atributo requerido para expresar el número de serie del certificado del emisor o contribuyente.</xs:documentation>

                                                               </xs:annotation>

                                                               <xs:simpleType>

                                                                              <xs:restriction base="xs:string">

                                                                                              <xs:length value="20"/>

                                                                              </xs:restriction>

                                                               </xs:simpleType>

                                               </xs:attribute>

                               </xs:complexType>

                </xs:element>

</xs:schema>

I.     De los servicios de Códigos de Seguridad:

E.      Generación de la firma para la solicitud y descarga de códigos de seguridad.

          Elementos utilizados en la generación de la firma:

·        Cadena Original, el elemento a firmar de la solicitud o descarga de códigos de seguridad.

·        Certificado de Sello Digital y su correspondiente clave privada.

          El Servicio de Administración Tributaria pone a disposición del Contribuyente la aplicación “SOLCEDI” (Solicitud de Certificado Digital), a fin de facilitar la generación de claves.

          Nota: Es responsabilidad del Contribuyente el utilizar un equipo de cómputo de su confianza para la generación de su par de claves y guardar en lugar seguro la Clave Privada generada y sus contraseñas.

          Se recomienda utilizar contraseñas fuertes con el fin de conservar la confidencialidad en las transacciones, por ejemplo:

o     Longitud mínima de 12 caracteres.

o     Alfanuméricas (Letras mayúsculas y minúsculas)

o     Mínimo 2 caracteres especiales.

          Ya que de esto hace difícil que se pueda romper la contraseña, se pueden combinar letras por números para ayudar a recordar esta contraseña (pe. 3$l0V4K142%#), espaciar números y letras (que no sean contiguos).

·        Algoritmos de criptografía de clave pública del certificado de sello digital.

·        Especificaciones de conversión del certificado de sello digital a Base 64.

Para la generación de firma o sellos digitales se utiliza criptografía de clave pública aplicada a una cadena original.

Criptografía de la Clave Pública

La criptografía de Clave Pública se basa en la generación de una pareja de números muy grandes relacionados íntimamente entre sí, de tal manera que una operación de encripción sobre un mensaje tomando como clave de encripción a uno de los dos números, produce un mensaje alterado en su significado que solo puede ser devuelto a su estado original mediante la operación de desencripción correspondiente tomando como clave de desencripción al otro número de la pareja.

Uno de estos dos números, expresado en una estructura de datos que contiene un módulo y un exponente, se conserva secreta y se le denomina "clave privada", mientras que el otro número llamado "clave pública", en formato binario y acompañado de información de identificación del emisor, además de una calificación de validez por parte de un tercero confiable, se incorpora a un archivo denominado "certificado de sello digital ".

El Certificado puede distribuirse libremente para efectos de intercambio seguro de información y para ofrecer pruebas de autoría de archivos electrónicos o acuerdo con su contenido mediante el proceso de “firma” o “sello”, que consiste en una característica observable de un mensaje, verificable por cualquiera con acceso al certificado digital del emisor, que sirve para implementar servicios de seguridad para garantizar: La integridad (facilidad para detectar si un mensaje firmado o sellado ha sido alterado), autenticidad, certidumbre de origen (facilidad para determinar qué persona es el autor de la firma o sello y valida el contenido del mensaje) y no repudiación del mensaje firmado o sellado (capacidad de impedir que el autor de la firma niegue haber firmado el mensaje).

Estos servicios de seguridad proporcionan las siguientes características a un mensaje con firma o sello:

·        Es infalsificable.

·        La firma o sello no es reciclable (es única por mensaje).

·        Un mensaje con firma o sello alterado, es detectable.

·        Un mensaje con firma o sello, no puede ser repudiado.

Los algoritmos utilizados en la generación de una firma o sello digital son los siguientes:

SHA-2, que es una función hash (digestión o resumen) de un solo sentido tal que para cualquier entrada produce una salida compleja de 256 bits de salida, 128 para seguridad del mensaje y 128 para la identificación del mensaje (32 bytes) denominada ‘digestión’.

          Cadena Original

          Se entiende como cadena original, a la secuencia de datos formada con la información contenida dentro de la solicitud o descarga de códigos de seguridad. Siguiendo para ello las reglas y la secuencia aquí especificada:

          Reglas Generales:

1.      Ninguno de los atributos que conforman las operaciones con códigos de seguridad deberán contener el carácter | (“pipe”) debido a que este será utilizado como carácter de control en la formación de la cadena original.

2.      El inicio de la cadena original se encuentra marcado mediante una secuencia de caracteres || (doble “pipe”).

3.      Se expresará únicamente la información del dato sin expresar el atributo al que hace referencia. Esto es, si el valor del atributo “País” es “MX” solo se expresará |MX| y nunca |País MX|.

4.      Cada dato individual se encontrará separado de su dato subsiguiente, en caso de existir, mediante un carácter | (“pipe” sencillo).

5.      Los espacios en blanco que se presenten dentro de la cadena original serán tratados de la siguiente manera:

a.      Se deberán remplazar todos los tabuladores, retornos de carro y saltos de línea por espacios en blanco.

b.      Acto seguido se elimina cualquier carácter en blanco al principio y al final de cada separador | (“pipe” sencillo).

c.       Finalmente, toda secuencia de caracteres en blanco intermedias se sustituyen por un único carácter en blanco.

6.      Los datos opcionales no expresados, no aparecerán en la cadena original y no tendrán delimitador alguno.

7.      El final de la cadena original será expresado mediante una cadena de caracteres || (doble “pipe”).

8.      Toda la cadena de original se expresará en el formato de codificación UTF-8.

          Secuencia de Formación:

          Solicitud de códigos de seguridad.

1.      Información del Nodo: Solicitud

          a) RFC

1.

2.      Información del Nodo: TBCSlcCodSeg

          a) Fecha

3.      Información del Nodo: Solicitud

          a) CantidadCodigos

4.      Información del Nodo: Solicitud

          a) Version

          b) RFCProveedorCertificado

          Descarga de archivos

1.      Información del Nodo: TBCSolDescarga

          a) RFC

          b) Nomarch

          c) Folio

          d) Version

          e) RFCProveedorCertificado

          Generación de la firma o sello

          Para toda cadena original a ser sellada digitalmente, la secuencia de algoritmos a aplicar es la siguiente:

          I.- Aplicar el método de digestión SHA256 a la cadena original. Este procedimiento genera una salida de 256 bits (128 bytes) para todo mensaje. Por la posibilidad de encontrar dos mensajes distintos que produzcan una misma salida, se basa la inalterabilidad del sello, así como su no reutilización. Es de hecho una medida de la integridad del mensaje sellado, pues toda alteración del mismo provocará una digestión totalmente diferente, por lo que no se podrá autentificar el mensaje.

          SHA-2 no requiere semilla alguna. El algoritmo cambia su estado de bloque en bloque de acuerdo a la entrada previa.

          II.- Con la clave privada correspondiente al certificado digital del emisor del mensaje y del sello digital, encriptar la digestión del mensaje obtenida en el paso I utilizando para ello el algoritmo de encripción RSA.

          Nota: La mayor parte del software comercial podría generar los pasos I y II invocando una sola función y especificando una constante simbólica. En el SAT este procedimiento se hace en pasos separados, lo cual es totalmente equivalente. Es importante resaltar que prácticamente todo el software criptográfico comercial incluye APIs o expone métodos en sus productos que permiten implementar la secuencia de algoritmos aquí descrita. La clave privada solo debe mantenerse en memoria durante la llamada a la función de encripción; inmediatamente después de su uso debe ser eliminada de su registro de memoria mediante la sobre escritura de secuencias binarias alternadas de "unos" y "ceros".

            III.- El resultado será una cadena binaria que no necesariamente consta de caracteres imprimibles, por lo que deberá traducirse a una cadena que sí conste solamente de tales caracteres. Para ello se utilizará el modo de expresión de secuencias de bytes denominado "Base 64", que consiste en la asociación de cada 6 bits de la secuencia a un elemento de un "alfabeto" que consta de 64 caracteres imprimibles. Puesto que con 6 bits se pueden expresar los números del 0 al 63, si a cada uno de estos valores se le asocia un elemento del alfabeto se garantiza que todo byte de la secuencia original puede ser mapeado a un elemento del alfabeto Base 64, y los dos bits restantes formarán parte del siguiente elemento a mapear. Este mecanismo de expresión de cadenas binarias produce un incremento de 25% en el tamaño de las cadenas imprimibles respecto de la original.

            La codificación en base 64, así como su decodificación, se hará tomando los bloques a procesar en el sentido de su lectura, es decir, de izquierda a derecha.

            El alfabeto a utilizar se expresa en el siguiente catálogo:

Elemento del Alfabeto

Valor B64

Valor ASCII

 

Elemento del Alfabeto

Valor B64

Valor ASCII

 

Elemento del Alfabeto

Valor B64

Valor ASCII

0

A

65

 

23

X

88

 

46

u

117

1

B

66

 

24

Y

89

 

47

v

118

2

C

67

 

25

Z

90

 

48

w

119

3

D

68

 

26

a

97

 

49

x

120

4

E

69

 

27

b

98

 

50

y

121

5

F

70

 

28

c

99

 

51

z

122

6

G

71

 

29

d

100

 

52

0

48

7

H

72

 

30

e

101

 

53

1

49

8

I

73

 

31

f

102

 

54

2

50

9

J

74

 

32

g

103

 

55

3

51

10

K

75

 

33

h

104

 

56

4

52

11

L

76

 

34

i

105

 

57

5

53

12

M

77

 

35

j

106

 

58

6

54

13

N

78

 

36

k

107

 

59

7

55

14

O

79

 

37

l

108

 

60

8

56

15

P

80

 

38

m

109