ANEXOS 20, 25-Bis, 26, 27, 29, 30, 31 y 32 de la Resolución Miscelánea Fiscal para 2022, publicada en la edición vespertina del 27 de diciembre de 2021 |
Jueves 13 de Enero de 2022 |
Modificación al Anexo 25-Bis de la Resolución Miscelánea Fiscal para 2020
Contenido Primera parte. Obligaciones generales y procedimientos de identificación y reporte de Cuentas Reportables Sección I: Obligaciones Generales de Reporte Sección II: Obligaciones Generales de Debida Diligencia Sección III: Debida Diligencia para Cuentas Preexistentes de Personas Físicas Sección IV: Debida Diligencia para Cuentas Nuevas de Personas Físicas Sección V: Debida Diligencia para Cuentas Preexistentes de Entidades Sección VI: Debida Diligencia para Cuentas Nuevas de Entidades Sección VII: Reglas Especiales de Debida Diligencia Sección VIII: Términos Definidos Segunda parte. Disposiciones adicionales aplicables para la generación de información a que se refiere la Primera parte del presente Anexo |
ÚNICO. Se derogan los Subapartados (i)(ii)(iii)(bb) que forman parte a su vez de los Subapartados (C)(17)(g) segundo párrafo de la Primera parte, Sección VIII del Anexo 25-Bis de la Resolución Miscelánea Fiscal para 2020 para quedar de la siguiente manera:
Primera parte. Obligaciones Generales y Procedimientos de Identificación y Reporte de Cuentas Reportables
Para los efectos de los artículos 32-B, fracción V y 32-B-Bis, ambos del CFF así como los artículos 7, tercer párrafo; 55, fracciones I y IV; 56; 86, fracción I; 89, segundo párrafo; 136, último párrafo y 192, fracción VI de la Ley del ISR y 92, 93 y 253, último párrafo del Reglamento de la Ley del ISR, y las reglas 2.2.12., 2.9.12., 3.5.9., 3.9.1., 3.21.2.7. y 3.21.3.2. de la RMF, las personas morales y las figuras jurídicas residentes en México o residentes en el extranjero con sucursal en México que sean Instituciones Financieras conforme al Estándar para el Intercambio Automático de Información sobre Cuentas Financieras en Materia Fiscal a que se refiere la recomendación adoptada por el Consejo de la OCDE el 15 de julio de 2014, estarán a lo siguiente:
(…)
Sección VIII: Términos Definidos
(…)
C. Cuenta Financiera
(…)
17. El término “Cuenta Excluida” significa cualesquiera de las siguientes cuentas:
(…)
g) cualquier otra cuenta que (i) represente bajo riesgo de ser utilizada para la evasión de impuestos, (ii) tenga características sustancialmente similares a cualesquiera de las cuentas descritas en los Subapartados C(17)(a) a (f) de esta Sección y (iii) que se encuentren definidas en la normativa doméstica como una Cuenta Excluida, en la medida en la que el estatus de dicha cuenta como una Cuenta Excluida no frustre los propósitos del Estándar para el Intercambio Automático de Información sobre Cuentas Financieras en Materia Fiscal a que se refiere el artículo 32-B Bis del CFF.
En el caso de México, se encuentran incluidas en la definición anterior las siguientes cuentas:
i) Se deroga.
ii) Se deroga.
iii) las siguientes cuentas de pensiones:
aa) aportaciones obligatorias administradas por Administradoras de Fondos para el Retiro: una subcuenta de aportaciones obligatorias, en las cuales se depositan las cuotas obrero-patronales y estatales, que son obligatorias de conformidad con la ley y están previstas en las leyes de seguridad social, la Ley del Instituto del Fondo Nacional de la Vivienda para los Trabajadores y la Ley de los Sistemas de Ahorro para el Retiro y en las cuales no existen aportaciones voluntarias o complementarias para el retiro.
bb) Se deroga.
cc) aportaciones complementarias administradas por Administradoras de Fondos para el Retiro: una subcuenta de aportaciones complementarias del trabajador, siempre que dichas contribuciones no excedan de cincuenta mil ($50,000.00) dólares estadounidenses en cualquier año.
iv) un tipo de Cuenta de Depósito (i) con un saldo anual que no exceda de mil ($1,000.00) dólares estadounidenses y (ii) que sea considerada como Cuenta Inactiva.
v) una Cuenta de Depósito que cumpla con los siguientes requisitos:
aa) proporciona una serie de servicios específicos y limitados a personas físicas con fines de inclusión financiera,
bb) los depósitos en el transcurso de un mes calendario no exceden los mil doscientos cincuenta ($1,250.00) dólares estadounidenses (excluyendo aquellos depósitos en los cuales el origen de los recursos provenga exclusivamente de subsidios relativos a programas gubernamentales de apoyo social) y
cc) la cuenta está sujeta a la aplicación de Procedimientos de AML/KYC simplificados.
vi) Las demás cuentas que al efecto se publiquen en el Portal del SAT.
En caso de que alguna de las cuentas descritas en los anteriores subincisos incumpla con alguno de los requisitos ahí previstos, dicha cuenta dejará de considerarse como Cuenta Excluida y deberán aplicarse los procedimientos de debida diligencia a que se refieren las Secciones II a VII.
(…)
Atentamente.
Ciudad de México, a 17 de diciembre de 2021.- Jefa del Servicio de Administración Tributaria, Mtra. Raquel Buenrostro Sánchez.- Rúbrica.
Anexo 26 de la Resolución Miscelánea Fiscal para 2022
Códigos de Seguridad en cajetillas, estuches, empaques, envolturas o cualquier otro objeto que contenga cigarros u otros tabacos labrados con excepción de puros y otros tabacos labrados hechos enteramente a mano, para la Industria Tabacalera a través de servicios
Contenido
I. Definiciones. II. Características técnicas y de seguridad del Sistema de códigos de seguridad. III. 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. F. Estándar de Consulta para Códigos Retroalimentados. G. Estándar de Disponibilidad de Servicio Activo. IV. 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. E. Acuse de Consulta para Códigos Retroalimentados. F. Acuse de Disponibilidad de Servicio Activo. |
I. Definiciones
Para los efectos de la regla 5.2.30. de la Resolución Miscelanea Fiscal y las fichas de trámite 36/IEPS “Solicitud de Códigos de Seguridad para impresión”, 43/IEPS “Solicitud que deberán presentar los productores, fabricantes e importadores de cigarros y otros tabacos labrados en el Portal del SAT, de incorporación para la obtención de códigos de seguridad” y 55/IEPS “Solicitud para obtener la conexión con entidades externas o terceros” contenidas en el Anexo 1-A, así como de los apartados del presente Anexo, se entenderá por:
1. Acceso en línea: Entrada disponible en forma permanente, de manera remota y automatizada a los registros de los Códigos de Seguridad impresos en las cajetillas, estuches, empaques, envolturas o cualquier otro objeto que contenga cigarros u otros tabacos labrados con excepción de puros y otros tabacos labrados hechos enteramente a mano y a la información derivada de los códigos de seguridad.
2. Conexión con entidades externas o terceros: es una conexión que permite estar conectado permanentemente y de forma segura las 24 horas del día, los 365 días del año, sin requerir el uso de una línea telefónica, es una conexión que no se apaga al dejarla de utilizar y no se enciende al quererla utilizar, es una conexión permanente de alta calidad, con un ancho de banda constante y fijo, tanto en la carga como, en la descarga de información. El servicio de enlace dedicado es contratado por un particular o por una institución pública a una empresa de comunicaciones que brinde dicho servicio.
3. Información derivada del código de seguridad: Se refiere a la información que emite el Sistema de códigos de seguridad y que consiste en lo siguiente:
a) Validez del código;
b) Fecha de manufactura;
c) Hora de manufactura;
d) Máquina en la que se fabricó el producto;
e) Centro de manufactura correspondiente;
f) Marca comercial;
g) Nombre del producto;
h) Tipo del producto;
i) Cantidad de cigarros u otros tabacos labrados con excepción de puros y otros tabacos labrados hechos enteramente a mano; por cajetilla, estuche, empaque, envoltura o cualquier otro objeto que los contenga.
j) Mercado de destino;
k) Reporte de verificaciones;
l) Denominación o razón social de la tabacalera;
m) Clave en el RFC de la tabacalera;
n) País de origen;
o) Código consecutivo;
p) Código de aspecto aleatorio.
4. Infraestructura de impresión: Son todos aquellos elementos técnicos, de cómputo, de muebles y demás que la tabacalera deberá proveer a su costo.
5. Plan de continuidad de negocio (BCP): Plan logístico para la práctica de cómo una organización debe recuperar y restaurar sus funciones críticas parcial o totalmente interrumpidas dentro de un tiempo predeterminado después de una interrupción no deseada. Son parte del BCP las acciones, procedimientos, personal responsable, así como los recursos humanos, materiales, financieros y tiempos y movimiento necesarios para dar continuidad de los servicios principales, afectados por el incidente que provocó la interrupción.
6. Plan de Recuperación de Desastres (DRP): Proceso de recuperación que cubre los datos, hardware, software y comunicaciones, para que un negocio, institución o empresa pueda comenzar de nuevo sus operaciones o servicios críticos en el menor tiempo posible en caso de materializarse una amenaza derivada de un desastre natural o causado por humanos. El DRP deberá de incluir las acciones, procedimientos, personal responsable, así como los recursos humanos, materiales, financieros, tiempos y movimientos necesarios para restablecer los servicios vitales para la operación de la organización.
7. Plataforma de verificación del SAT: Conjunto de aplicaciones del SAT que permite verificar la validez de los códigos de seguridad a través de la consulta de la información derivada.
8. Sistema de Generación de códigos de seguridad: Conjunto de programas y equipos de cómputo destinados y administrados por el SAT para la generación de los códigos de seguridad.
9. Tabacalera: Productor, fabricante o importador de cigarros y otros tabacos labrados, con excepción de puros y otros tabacos labrados hechos enteramente a mano.
10. Tiempo real: Momento en que la información contenida en los códigos de seguridad deberá estar a disposición de las autoridades cuando se lleve a cabo la verificación de dichos códigos. Se entenderá que se cumple con la obligación de proporcionar la información en tiempo real, cuando la verificación se logre hasta en un plazo de 72 horas contadas a partir de la impresión del código. El SAT se reserva el derecho de modificar este plazo de acuerdo a las necesidades de la operación, para lo cual notificará a las tabacaleras.
11. Verificación de códigos de seguridad por las autoridades: Procedimiento a través del cual el SAT o cualquier otra autoridad podrá verificar la validez de los códigos de seguridad mediante la Plataforma de Verificación del SAT.
12. Verificación de códigos de seguridad por los consumidores: Consulta que podrán realizar los consumidores para verificar la validez de los códigos de seguridad a través de la Plataforma de Verificación del SAT.
II. Características técnicas y de seguridad del Sistema de códigos de seguridad
Características técnicas
Para efectos del presente Anexo, el sistema de códigos de seguridad deberá cumplir con lo siguiente:
1. Declaración de namespaces. Se verificará la correcta definición de namespaces, haciendo la referencia a la ruta publicada por el SAT en donde se encuentra el esquema de XSD.
2. Validación de datos requeridos. Se validarán los campos obligatorios de los esquemas de Códigos de Seguridad que cumplan con el esquema de datos definido.
3. Validaciones adicionales. Se validarán reglas de negocio aplicables.
4. Validación de flujos. Se validará el cumplimiento del paso por cada componente que integre el servicio de punta a punta.
III. 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 &
¡ En el caso del “ se deberá usar la secuencia "
¡ En el caso del < se deberá usar la secuencia <
¡ En el caso del > se deberá usar la secuencia >
¡ En el caso del ‘ se deberá usar la secuencia '
Ejemplos:
Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan & José & "Niño"”
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
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 Seguirdad</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>Aributo 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:maxInclusive value="999999999"/> </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="cat:catTipoFirma" 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:element name="Pagos"> <xs:annotation> <xs:documentation>Nodo obligatorio para expresar las llaves de pagos de los Codigos de Seguridad</xs:documentation> </xs:annotation> <xs:complexType> |
<xs:attribute name="llavePago" type="cat:cLLavePago" use="required"> <xs:annotation> <xs:documentation>Atributo requerido que sirve para incorporar el número de identificador único de documento de pago que ha realizado el contribuyente.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="fechaPago" type="xs:date" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar la fecha de pago de la Llave de Pago de derecho.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="importePago" type="xs:decimal" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar la cantidad pagada de la Llave de Pago de derecho.</xs:documentation> </xs:annotation> </xs:attribute>
</xs:complexType> </xs:element> </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> |
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 &
¡ En el caso del “ se deberá usar la secuencia "
¡ En el caso del < se deberá usar la secuencia <
¡ En el caso del > se deberá usar la secuencia >
¡ En el caso del ‘ se deberá usar la secuencia '
Ejemplos:
Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan & José & "Niño"”
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 |
||||||||||||||||
|
|
|
|
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>
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 &
¡ En el caso del “ se deberá usar la secuencia "
¡ En el caso del < se deberá usar la secuencia <
¡ En el caso del > se deberá usar la secuencia >
¡ En el caso del ‘ se deberá usar la secuencia '
Ejemplos:
Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan & José & "Niño"”
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 |
|||||||
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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>
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 &
¡ En el caso del “ se deberá usar la secuencia "
¡ En el caso del < se deberá usar la secuencia <
¡ En el caso del > se deberá usar la secuencia >
¡ En el caso del ‘ se deberá usar la secuencia '
Ejemplos:
Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan & José & "Niño"”
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 |
|||||||
|
|
|
|
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>
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 de 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 éste 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
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
c) Descarga de archivos
5. 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 |
|
61 |
9 |
57 |
16 |
Q |
81 |
|
39 |
n |
110 |
|
62 |
+ |
43 |
17 |
R |
82 |
|
40 |
o |
111 |
|
63 |
/ |
47 |
18 |
S |
83 |
|
41 |
p |
112 |
|
|
|
|
19 |
T |
84 |
|
42 |
q |
113 |
|
|
|
|
20 |
U |
85 |
|
43 |
r |
114 |
|
|
|
|
21 |
V |
86 |
|
44 |
s |
115 |
|
|
|
|
22 |
W |
87 |
|
45 |
t |
116 |
|
|
|
|
Por tanto, los caracteres utilizados en el alfabeto de Base 64 son:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, /
Y en el orden descrito les corresponden los índices del 0 al 63 en un arreglo de 64 elementos. Para traducir de binario a Base 64, se examina la secuencia binaria evaluando 6 bits a la vez; si el valor de los primeros 6 bits es 0, entonces se imprime la letra A; si es 1, entonces se imprime la letra B y así sucesivamente hasta completar la evaluación de todos los bits de la secuencia binaria evaluados de 6 en 6.
La función inversa consiste en reconstruir la secuencia binaria original a partir de la cadena imprimible que consta de los elementos del alfabeto de Base 64. Para ello se toman 4 caracteres a la vez de la cadena imprimible y sus valores son convertidos en los de los tres caracteres binarios correspondientes (4 caracteres B64 x 6 bits = 3 caracteres binarios x 8 bits), y esta operación se repite hasta concluir la traducción de la cadena imprimible.
Ejemplo:
GqDiRrea6+E2wQhqOCVzwME4866yVEME/8PD1S1g6AV48D8VrLhKUDq0Sjqnp9IwfMAbX0ggwUCLRKa+Hg5q8aYhya63If2HVqH1sA08poer080P1J6Z+BwTrQkhcb5Jw8jENXoErkFE8qdOcIdFFAuZPVT+9mkTb0Xn5Emu5U8=
F. Estándar de Consulta para Códigos Retroalimentados.
El contribuyente que consulte la información de los códigos retroalimentados por medio del servicio web deberá generarlo bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validado, deberá estar referenciado 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/ConsultaCodigo/TBCConsulCodigo.xsd) de la siguiente manera:
<conCod:TBCConsulCodigo
xmlns: conCod ="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo/TBCConsulCodigo.xsd"
……………..
</conCod:TBCConsulCodigo>
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 éste 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:
1. RFCContribuyente
2. Codigo
3. Version
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 |
|
61 |
9 |
57 |
16 |
Q |
81 |
|
39 |
n |
110 |
|
62 |
+ |
43 |
17 |
R |
82 |
|
40 |
o |
111 |
|
63 |
/ |
47 |
18 |
S |
83 |
|
41 |
p |
112 |
|
|
|
|
19 |
T |
84 |
|
42 |
q |
113 |
|
|
|
|
20 |
U |
85 |
|
43 |
r |
114 |
|
|
|
|
21 |
V |
86 |
|
44 |
s |
115 |
|
|
|
|
22 |
W |
87 |
|
45 |
t |
116 |
|
|
|
|
Por tanto, los caracteres utilizados en el alfabeto de Base 64 son:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, /
Y en el orden descrito les corresponden los índices del 0 al 63 en un arreglo de 64 elementos. Para traducir de binario a Base 64, se examina la secuencia binaria evaluando 6 bits a la vez; si el valor de los primeros 6 bits es 0, entonces se imprime la letra A; si es 1, entonces se imprime la letra B y así sucesivamente hasta completar la evaluación de todos los bits de la secuencia binaria evaluados de 6 en 6.
La función inversa consiste en reconstruir la secuencia binaria original a partir de la cadena imprimible que consta de los elementos del alfabeto de Base 64. Para ello se toman 4 caracteres a la vez de la cadena imprimible y sus valores son convertidos en los de los tres caracteres binarios correspondientes (4 caracteres B64 x 6 bits = 3 caracteres binarios x 8 bits), y esta operación se repite hasta concluir la traducción de la cadena imprimible.
Estructura |
||||||||||||||||||||||
Elementos |
||||||||||||||||||||||
|
|
Version |
||
|
Descripción |
Atributo requerido para expresar la versión del formato. |
|
Uso |
requerido |
|
Tipo Base |
xs:string |
|
Valor Fijo |
1.0 |
|
||
Codigo |
||
|
Descripción |
Atributo requerido para el código a consultar. |
|
Uso |
requerido |
|
Tipo Base |
xs:string |
|
Patron |
[A-Z0-9]{12} |
|
||
Firma |
||
|
Descripción |
Atributo requerido para contener la firma digital. La firma deberá ser expresada como una cadena de texto en formato base 64. |
|
Uso |
requerido |
|
Tipo Base |
xs:string |
|
||
RFCContribuyente |
||
|
Descripción |
Atributo requerido para expresar el RFC del contribuyente. |
|
Uso |
requerido |
|
Tipo Especial |
cat:tipoRFC |
|
Código Fuente |
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:conCod="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo" 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/ConsultaCodigo" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd"/> <xs:element name="TBCConsulCodigo"> <xs:annotation> <xs:documentation>Estándar de la consulta de códigos retroalimentados.</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="RFCContribuyente" type="cat:tipoRFC" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar el RFC del contribuyente.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="Codigo" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para el código a consultar.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z0-9]{12}"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="Firma" type="xs:string" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para contener la firma digital. La firma deberá ser expresada como una cadena de texto en formato base 64.</xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> </xs:schema> |
G. Estándar de Disponibilidad de Servicio Activo
El contribuyente que consulte la disponibilidad de servicio activo, por medio del servicio web deberá generarlo bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validado, deberá estar referenciado 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/Monitoreo/TBCMonServicio.xsd) de la siguiente manera:
<solmonitor:TBCMonServicio
xmlns:solmonitor="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo/TBCMonServicio.xsd"
……………..
</solmonitor:TBCAcuseMonServicio>
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 éste 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:
1. RFCContribuyente
2. Version
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 |
|
61 |
9 |
57 |
16 |
Q |
81 |
|
39 |
n |
110 |
|
62 |
+ |
43 |
17 |
R |
82 |
|
40 |
o |
111 |
|
63 |
/ |
47 |
18 |
S |
83 |
|
41 |
p |
112 |
|
|
|
|
19 |
T |
84 |
|
42 |
q |
113 |
|
|
|
|
20 |
U |
85 |
|
43 |
r |
114 |
|
|
|
|
21 |
V |
86 |
|
44 |
s |
115 |
|
|
|
|
22 |
W |
87 |
|
45 |
t |
116 |
|
|
|
|
Por tanto, los caracteres utilizados en el alfabeto de Base 64 son:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, /
Y en el orden descrito les corresponden los índices del 0 al 63 en un arreglo de 64 elementos. Para traducir de binario a Base 64, se examina la secuencia binaria evaluando 6 bits a la vez; si el valor de los primeros 6 bits es 0, entonces se imprime la letra A; si es 1, entonces se imprime la letra B y así sucesivamente hasta completar la evaluación de todos los bits de la secuencia binaria evaluados de 6 en 6.
La función inversa consiste en reconstruir la secuencia binaria original a partir de la cadena imprimible que consta de los elementos del alfabeto de Base 64. Para ello se toman 4 caracteres a la vez de la cadena imprimible y sus valores son convertidos en los de los tres caracteres binarios correspondientes (4 caracteres B64 x 6 bits = 3 caracteres binarios x 8 bits), y esta operación se repite hasta concluir la traducción de la cadena imprimible.
Estructura |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Elementos |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Código Fuente |
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:solmonitor="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo" 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/Monitoreo" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd"/> <xs:element name="TBCMonServicio"> <xs:annotation> <xs:documentation>Estándar del la solicitud para monitoreo de servicio activo.</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="RFCContribuyente" type="cat:tipoRFC" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar el RFC del contribuyente.</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. La firma deberá ser expresada como una cadena de texto en formato base 64.</xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> </xs:schema> |
IV. De las Respuestas y Acuses de los servicios web
A. Acuse de Recibo de la solicitud de códigos de seguridad.
El contribuyente que haya enviado la solicitud de códigos de seguridad por medio del servicio web recibirá un Acuse de Recibo generado bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validado, deberá estar referenciado 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/Acuse/TBCAcuRboSlc.xsd) de la siguiente manera:
<acurboslc:TBCAcuRboSlc
xmlns:acurboslc="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud/Acuse"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud/Acuse http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud/Acuse/TBCAcuRboSlc.xsd"
……………..
</acurboslc:TBCAcuRboSlc>
Estructura |
|||||||
Elementos |
|||||||
|
|
|
|
|
|
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:acurboslc="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Solicitud/Acuse" 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/Acuse" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="catTabacos.xsd"/>
<xs:element name="TBCAcuRboSlc">
<xs:annotation>
<xs:documentation>Estándar de Acuse de Recibo para la solicitud de Códigos de Seguridad para Tabacos</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Acuse">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar el acuse de recepcion de 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 Seguirdad</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="CantidadCodigos" use="required">
<xs:annotation>
<xs:documentation>Aributo requerido para expresar el número Total de Códigos 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="FolioAcuse" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar total del costo de codigos de tabacos</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SelloDigital" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el Sello de la operación que se está realizando.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="importeTotalCodigos" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el total del importe de los pagos realizado por el contribuyente</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="importeTotalDpa" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el total de importe de las llaves ingresadas</xs:documentation>
</xs:annotation>
</xs:attribute>
<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 Acuse de Recibo</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
B. Respuesta de la Consulta del estado de la solicitud.
El contribuyente que consulte el estado de la solicitud de códigos de seguridad por medio del servicio web recibirá una respuesta generada bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validada, deberá estar referenciada al namespace y la validación de la misma 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/Resp/TBCRespConsulFolio.xsd) de la siguiente manera:
<rconfol:TBCRespConsulFolio
xmlns:rconfol=”http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta/Resp”
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta/Resp http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta/Resp/TBCRespConsulFolio.xsd"
……………..
</rconfol:TBCRespConsulFolio>
Estructura |
|||||||
Elementos |
|||||||
|
|
|
|
|
|
|
|
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:rconfol="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Consulta/Resp" 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/Resp" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd"/>
<xs:element name="TBCRespConsulFolio">
<xs:annotation>
<xs:documentation>Estándar de la respuesta de la Consulta de Folios asignados a las solicitudes de Códigos de Seguridad para Tabacos.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Folio">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar el estado del Folio de la solicitud de códigos de seguridad.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Archivos" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para expresar los archivos relacionados con la solicitud de Códigos de Seguridad.</xs:documentation>
</xs:annotation>
<xs:complexType>
<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="CantidadCodigos" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número total de Códigos de Seguridad contenidos en el archivo.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Checksum" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la Suma de verificación del archivo de Códigos de seguridad.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="FechaHorCreacion" type="xs:dateTime" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la fecha y hora de generación del archivo.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<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="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="Estado" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el estado de 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>
C. Acuse de recibo de la información de producción.
El contribuyente que haya enviado la información de producción de los códigos de seguridad por medio del servicio web recibirá un Acuse de Recibo generado bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validado, deberá estar referenciado 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/Acuse/TBCAcuseRetroInfo.xsd) de la siguiente manera:
<acuretro:TBCAcuseRetroInfo
xmlns:acuretro="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion/Acuse"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion/Acuse
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion/Acuse/TBCAcuseRetroInfo.xsd"
……………..
</acuretro:TBCAcuseRetroInfo>
Estructura |
|||||||
Elementos |
|||||||
|
|
|
|
|
|
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:acuretro="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Retroalimentacion/Acuse" 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/Acuse" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="catTabacos.xsd"/>
<xs:element name="TBCAcuseRetroInfo">
<xs:annotation>
<xs:documentation>Estándar para los acuses de retroalimentación de información de los códigos de seguridad para Tabacos</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Acuse">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar los Acuses de Retroalimentación de Información 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 al que se le enviaron los folios.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Incidencia" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la incidencia del Acuse</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="FolioAcuse" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el folio del Acuse</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="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:complexType>
</xs:element>
</xs:schema>
D. Respuesta a la solicitud de descarga de archivos con códigos de seguridad.
El contribuyente que solicite la descarga del archivo con códigos de seguridad por medio del servicio web recibirá una respuesta generada bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validada, deberá estar referenciada al namespace y la validación de la misma 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/Resp/TBCRespDescarga.xsd) de la siguiente manera:
<rdesc:TBCRespDescarga
Xmlns:rdesc="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/Resp"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/Resp http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/Resp/TBCRespDescarga.xsd"
……………..
</rdesc:TBCRespDescarga>
Estructura |
|||||||
Elementos |
|||||||
|
|
|
|
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:rdesc="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/Resp" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Descarga/Resp" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="TBCRespDescarga">
<xs:annotation>
<xs:documentation>Estándar de respuesta de la descarga de archivos de códigos de seguridad</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Contenido">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar el contenido del archivo de Códigos de Seguridad</xs:documentation>
</xs:annotation>
</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="Folio" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el 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="FechaDescarga" type="xs:dateTime" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la Fecha y Hora de descarga del archivo de Códigos de seguridad</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CantidadCodigos" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número total de Códigos de Seguridad contenidos en el archivo</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="FolioAcuse" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el folio del Acuse</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
E. Acuse de Consulta para códigos retroalimentados.
El contribuyente que consulte la información de los códigos retroalimentados por medio del servicio web recibirá un acuse de Recibo generado bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validado, deberá estar referenciado 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/ConsultaCodigo/ TBCAcuseConsulCodigo.xsd) de la siguiente manera:
< acConsulta:TBCAcuseConsulCodigo
xmlns:acConsulta="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ConsultaCodigo/TBCAcuseConsulCodigo.xsd"
……………..
</ acConsulta:TBCAcuseConsulCodigo>
Estructura |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Elementos |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Codigo |
||
|
Descripción |
Atributo requerido para identificar el código. |
|
Uso |
requerido |
|
Tipo Base |
xs:string |
|
Longitud Máxima |
12 |
|
||
Marca |
||
|
Descripción |
Atributo requerido para identificar la marca. |
|
Uso |
requerido |
|
Tipo Base |
xs:string |
|
Longitud Máxima |
40 |
|
||
RFC |
||
|
Descripción |
Atributo requerido para expresar el RFC del contribuyente. |
|
Uso |
requerido |
|
Tipo Especial |
cat:tipoRFC |
|
Código Fuente |
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:acConsulta="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ ConsultaCodigo" 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/ConsultaCodigo" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/ Catalogos" schemaLocation="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd"/> <xs:element name="TBCAcuseConsulCodigo"> <xs:annotation> <xs:documentation>Estándar del acuse para consulta de códigos retroalimentados.</xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="IdentificadorDeRango" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para identificar el rango.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="10"/> <xs:pattern value="[0-9]+"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="FolioSolicitud" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para identificar el folio de la solicitud.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="10"/> <xs:pattern value="[0-9]+"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="Codigo" use="required"> |
<xs:annotation> <xs:documentation>Atributo requerido para identificar el código.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="12"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="Marca" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para identificar la marca.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="40"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="RFC" type="cat:tipoRFC" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar el RFC del contribuyente.</xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> </xs:schema> |
F. Acuse de disponibilidad de servicio activo.
El contribuyente que consulte la disponibilidad de servicio activo, por medio del servicio web recibirá un acuse de recibo generado bajo el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.
Para poder ser validado, deberá estar referenciado 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/Monitoreo/TBCAcuseMonServicio.xsd) de la siguiente manera:
< acmonitor:TBCAcuseMonServicio
xmlns:acmonitor="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo
http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo/TBCAcuseMonServicio.xsd"
……………..
</ acmonitor:TBCAcuseMonServicio>
Estructura |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Elementos |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Código Fuente |
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:acmonitor="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Monitoreo" 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/Monitoreo" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos" schemaLocation="http://esquemas.clouda.sat.gob.mx/archivos/Tabacos/1/Catalogos/catTabacos.xsd"/> <xs:element name="TBCAcuseMonServicio"> <xs:annotation> <xs:documentation>Estándar del acuse para monitoreo de servicio activo.</xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="Estado" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar el estado del servicio, 0 = Inactivo, 1 = Activo.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:enumeration value="0"/> <xs:enumeration value="1"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="RFC" type="cat:tipoRFC" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar el RFC del contribuyente.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="RazonSocial" type="xs:string" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar la razón social.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="Fecha" use="required"> <xs:annotation> <xs:documentation>Atributo requerido para expresar la fecha.</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:date"> <xs:whiteSpace value="collapse"/> <xs:pattern value="(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/([20][0-9][0-9][0-9])"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:schema> |
Atentamente.
Ciudad de México, a 17 de diciembre de 2021.- Jefa del Servicio de Administración Tributaria, Mtra. Raquel Buenrostro Sánchez.- Rúbrica.