Web Service CERTIPASS
|
|
- Esteban Villalba Cruz
- hace 8 años
- Vistas:
Transcripción
1 Web Service CERTIPASS Página 1
2 Contenido 1. Introducción Tipos de CFDI Funcionalidad del Web Service Timbrado de CFDI Datos de entrada Estructura de petición SOAP Datos de respuesta Estructura de respuesta SOAP Códigos de respuesta Códigos de éxito Códigos de error Verificación de Timbrado Datos de entrada Estructura de petición SOAP Datos de respuesta Estructura de respuesta SOAP Códigos de respuesta Códigos de éxito Códigos de error Cancelación de CFDI Datos de entrada Estructura de petición SOAP Datos de respuesta Estructura de respuesta SOAP Códigos de respuesta Códigos de éxito Códigos de error Validación de CFDI Datos de entrada Estructura de petición SOAP Página 2
3 2.3.3 Datos de respuesta Estructura de respuesta SOAP Códigos de respuesta Códigos de éxito Códigos de error Consulta de CFDI Datos de entrada Estructura de petición SOAP Datos de respuesta Estructura de respuesta SOAP Códigos de respuesta Códigos de éxito Códigos de error Autenticación Respuestas con mensajes de error Estructura de respuesta SOAP de errores Códigos de Respuesta Códigos de respuesta definidos por el SAT Códigos de respuesta definidos por el Web Service Ejemplos de implementación JAVA Asunciones y dependencias Generación de clases del Web Service Cliente ejemplo NET Asunciones y dependencias Referencia del Web service Configuración de la conexión Cliente ejemplo en C# Cliente ejemplo en Visual Basic DELPHI Asunciones y dependencias Unidad CertipassWs Unidad WSSecurity Página 3
4 4.3.4 Unidad Client Cliente ejemplo Python Asunciones y dependencias Librería Suds WsSecurity Cliente ejemplo PHP Asunciones y dependencias Cliente Ejemplo Clase CertipassClient Clase CfdiInfoWrapper Consulta de cfdi utilizando la clase CfdiInfoWrapper Página 4
5 1. Introducción El Web Service de CERTIPASS es un servicio basado en SOAP que le permitirá timbrar y cancelar facturas electrónicas vía internet desde su sistema corporativo. El servicio es gratuito y fácil de implementar Tipos de CFDI En el protocolo CERTIPASS se identifica como un CFDI a los siguientes tipos de comprobantes: Comprobante Fiscal Digital por Internet (CFDI V3.2) Documento Electrónico de Retenciones e información de Pagos (Retención Pago V1.0) Por lo que al hacer referencia a un CFDI dentro de este manual tomaremos en cuenta los comprobantes previamente mencionados. 2. Funcionalidad del Web Service A continuación se describen las funciones del Web Service de Certipass: Servicio Método Descripción Timbrado de CFDI signcfdi Valida, sella (de ser requerido) y timbra un CFDI. Verificación de Timbrado Cancelación de CFDI verifyoperation cancelcfdi Consulta el estatus final de una petición de timbrado mediante el Web Service. Cancela un CFDI timbrado por CERTIPASS. Validación de CFDI validatecfdi Verifica la validez de un CFDI timbrado por CERTIPASS. Consulta de CFDI getcfdiinfo Consulta el estatus actual de un CFDI timbrado por CERTIPASS Timbrado de CFDI El método signcfdi se usa para timbrar un CFDI. Si la factura no cuenta con el sello, el servicio se encargará de generarlo. Página 5
6 Importante Si desea que el Web Service genere el sello de la factura, antes deberá registrar el RFC emisor en El sistema le solicitará su llave privada, el certificado (archivos.key y.cer) y la contraseña de la llave privada. Si enviará los XML con el sello, no es necesario registrar el RFC en CERTIPASS Datos de entrada Los atributos del objeto de entrada CfdiSignWrapper son los siguientes: Nombre del parámetro Tipo Requerido/Opcional Descripción cfdi String Requerido XML del CFDI, codificado en Base64 transactionid String Opcional Identificador de transacción de timbrado Estructura de petición SOAP <soap:envelope xmlns:soap=" xmlns:ws=" <soap:header> <wsse:security xmlns:wsse=" xmlns:wsu=" <wsse:usernametoken> <wsse:username></wsse:username> <wsse:password Type=" </wsse:usernametoken> </wsse:security> </soap:header> <soap:body> <ws:signcfdi> <ws:cfdisignwrapper> <ws:cfdi></ws:cfdi> <ws:transactionid></ws:transactionid> </ws:cfdisignwrapper> </ws:signcfdi> </soap:body> </soap:envelope> Página 6
7 Figura 1 - Estructura de petición SOAP Servicio de timbrado Datos de respuesta Los atributos del objeto de respuesta SignCfdiResponse son los siguientes: Nombre de la propiedad Tipo Descripción responsecode int Código de respuesta del timbrado responsedescription String Descripción de la respuesta servertransactionid String Identificador de la transacción proporcionado por el servidor de la aplicación. transactionid String Identificador de la transacción ingresado por el usuario. requestdate Date Fecha de petición al servidor. responsedate Date Fecha de respuesta del servidor. executiontime long Tiempo de ejecución del comando (en milisegundos). signedxml String XML del CFDI timbrado, codificado en Base Estructura de respuesta SOAP <soap:envelope xmlns:soap=" <soap:body> <signcfdiresponse xmlns= > <return> <responsecode></responsecode> <responsedescription></responsedescription> <transactionid></ transactionid> <servertransactionid></ servertransactionid> <requestdate></ requestdate> <responsedate></ responsedate> <executiontime></ executiontime> <signedxml></signedxml> </return> </signcfdiresponse> </soap:body> </soap:envelope> Figura 2 - Estructura de respuesta SOAP Servicio de timbrado Códigos de respuesta A continuación se mencionan los posibles códigos de respuesta del comando signcfdi. Si requiere más información, favor de consultar la sección de códigos de respuesta. Página 7
8 Códigos de éxito A continuación se enlistan los códigos de éxito para el comando signcfdi: Códigos de error A continuación se enlistan los códigos de error para el comando signcfdi: Página 8
9 Verificación de Timbrado Bajo algunas circunstancias (fallos de red, timeouts, et), es posible que no reciba la respuesta del comando de timbrado. El método verifyoperation le permite recuperar un CFDI mediante su cadena original o el identificador de transacción de timbrado Datos de entrada Los atributos del objeto de entrada VerifyOperationWrapper son los siguientes: Parámetro Tipo Requerido/Opcional Descripción Observaciones transactionid String Opcional signtransactionid String Opcional originalchain String Opcional Identificador de la transacción Verify. Identificador utilizado en la transacción de timbrado a verificar. Cadena original del CFDI, codificada en Base64 Es requerido si no se incluye el atributo originalchain. Es requerido si no se incluye el atributo signtransactionid Estructura de petición SOAP <soap:envelope xmlns:soap=" xmlns:ws=" <soap:header> <wsse:security xmlns:wsse=" xmlns:wsu=" <wsse:usernametoken> <wsse:username></wsse:username> <wsse:password Type=" </wsse:usernametoken> </wsse:security> </soap:header> <soap:body> <ws:verifyoperation> <ws:verifyoperationwrapper> <ws:originalchain></ws:originalchain> <ws:signtransactionid></ws:signtransactionid> <ws:transactionid></ws:transactionid> </ws:verifyoperationwrapper> </ws:verifyoperation> </soap:body> </soap:envelope> Figura 3 - Estructura de petición SOAP Servicio de Verificación Página 9
10 Datos de respuesta Los atributos del objeto de respuesta VerifyOperationResponse son los siguientes: Parámetro Tipo Descripción responsecode int Código de respuesta de la verificación responsedescription String Descripción de la respuesta servertransactionid String Identificador de la transacción proporcionado por el servidor de la aplicación. transactionid String Identificador de la transacción ingresado por el usuario. requestdate Date Fecha de petición al servidor. responsedate Date Fecha de respuesta del servidor. executiontime long Tiempo de ejecución del comando (en milisegundos). cfdi String XML del CFDI consultado, codificado en Base64 uuid String Folio fiscal de CFDI cfdistatus String Estatus del CFDI Estructura de respuesta SOAP <soap:envelope xmlns:soap=" <soap:body> <VerifyOperationResponse xmlns= > <return> <responsecode></responsecode> <responsedescription></responsedescription> <transactionid></ transactionid> <servertransactionid></ servertransactionid> <requestdate></ requestdate> <responsedate></ responsedate> <executiontime></ executiontime> <cfdi></cfdi> <uuid></uuid> <cfdistatus></cfdistatus> </return> </VerifyOperationResponse> </soap:body> </soap:envelope> Figura 4 - Estructura de respuesta SOAP Servicio de Verificación Página 10
11 Códigos de respuesta A continuación se mencionan los posibles códigos de respuesta del comando verifyoperation. Si requiere más información, favor de consultar la sección de códigos de respuesta Códigos de éxito A continuación se enlistan los códigos de éxito para el comando verifyoperation: Códigos de error A continuación se enlistan los códigos de error para el comando verifyoperation: Cancelación de CFDI El método cancelcfdi se usa para cancelar un CFDI timbrado por CERTIPASS. Importante Si desea que el Web Service genere el signaturevalue, antes deberá registrar el RFC emisor en El sistema le solicitará su llave privada, el certificado (archivos.key y.cer) y la contraseña de la llave privada. Si su sistema calculará y enviará el signaturevalue, no es necesario registrar el RFC en CERTIPASS para cancelar sus facturas Datos de entrada Los atributos del objeto de entrada CfdiCancelWrapper son los siguientes: Nombre del parámetro Tipo Requerido/Opcional Descripción Página 11
12 uuid String Requerido Folio fiscal del CFDI previamente timbrado. cancelationdate Date Requerido Fecha de cancelación del CFDI. signaturevalue String Opcional Firma requerida para cancelar el CFDI codificada en Base64; se obtiene con el RFC del emisor, el UUID del CFDI, la fecha de cancelación, el certificado y la llave privada del emisor. transactionid String Opcional Identificador de transacción de cancelación Estructura de petición SOAP <soap:envelope xmlns:soap=" xmlns:ws=" <soap:header> <wsse:security xmlns:wsse=" xmlns:wsu=" <wsse:usernametoken> <wsse:username></wsse:username> <wsse:password Type=" </wsse:usernametoken> </wsse:security> </soap:header> <soap:body> <ws:cancelcfdi> <ws:cfdicancelwrapper> <ws:uuid></ws:uuid> <ws:signaturevalue></ws:signaturevalue> <ws:cancelationdate></ws:cancelationdate> <ws:transactionid></ws:transactionid> </ws:cfdicancelwrapper> </ws:cancelcfdi> </soap:body> </soap:envelope> Figura 5 - Estructura de petición SOAP Servicio de cancelación Datos de respuesta Los atributos del objeto de salida CancelCfdiResponse son los siguientes: Parámetro Tipo Descripción responsecode int Código de respuesta de la cancelación responsedescription String Descripción de la respuesta servertransactionid String Identificador de la transacción proporcionado por el servidor de la aplicación. Página 12
13 transactionid String Identificador de la transacción ingresado por el usuario. requestdate Date Fecha de petición al servidor. responsedate Date Fecha de respuesta del servidor. executiontime long Tiempo de ejecución del comando (en milisegundos). receipt String Acuse de cancelación del SAT, codificado en Base Estructura de respuesta SOAP <soap:envelope xmlns:soap=" <soap:body> <CancelCfdiResponse xmlns= > <return> <responsecode></responsecode> <responsedescription></responsedescription> <transactionid></ transactionid> <servertransactionid></ servertransactionid> <requestdate></ requestdate> <responsedate></ responsedate> <executiontime></ executiontime> <receipt></receipt> </return> </CancelCfdiResponse> </soap:body> </soap:envelope> Figura 6 - Estructura de respuesta SOAP Servicio de cancelación Códigos de respuesta A continuación se mencionan los posibles códigos de respuesta del comando cancelcfdi. Si requiere más información, favor de consultar la sección de códigos de respuesta Códigos de éxito A continuación se enlistan los códigos de éxito para el comando cancelcfdi: Códigos de error A continuación se enlistan los códigos de error para el comando cancelcfdi: Página 13
14 Validación de CFDI El método validatecfdi se usa para verificar la validez de un CFDI timbrado por CERTIPASS Datos de entrada Los atributos del objeto de entrada ValidateCfdiWrapper son los siguientes: Parámetro Tipo Requerido/Opcional Descripción cfdi String Requerido XML del CFDI a validar, codificado en Base Estructura de petición SOAP <soap:envelope xmlns:soap=" xmlns:ws=" <soap:header> <wsse:security xmlns:wsse=" xmlns:wsu=" <wsse:usernametoken> <wsse:username></wsse:username> <wsse:password Type=" </wsse:usernametoken> </wsse:security> </soap:header> <soap:body> <ws:validatecfdi> <ws:validatecfdiwrapper> <ws:cfdi></ws:cfdi> <ws:transactionid></ws:transactionid> </ws:validatecfdiwrapper> </ws:validatecfdi> </soap:body> </soap:envelope> Figura 7 - Estructura de petición SOAP Servicio de validación Página 14
15 Datos de respuesta Los atributos del objeto de salida ValidateCfdiResponse son los siguientes: Parámetro Tipo Descripción responsecode int Código de respuesta de la validación responsedescription String Descripción de la respuesta servertransactionid String Identificador de la transacción proporcionado por el servidor de la aplicación. transactionid String Identificador de la transacción ingresado por el usuario. requestdate Date Fecha de petición al servidor. responsedate Date Fecha de respuesta del servidor. executiontime long Tiempo de ejecución del comando (en milisegundos) Estructura de respuesta SOAP <soap:envelope xmlns:soap=" <soap:body> <validatecfdiresponse xmlns= > <return> <responsecode></responsecode> <responsedescription></responsedescription> <transactionid></ transactionid> <servertransactionid></ servertransactionid> <requestdate></ requestdate> <responsedate></ responsedate> <executiontime></ executiontime> </return> </validatecfdiresponse> </soap:body> </soap:envelope> Figura 8 - Estructura de respuesta SOAP Servicio de validación Códigos de respuesta A continuación se mencionan los posibles códigos de respuesta del comando validatecfdi. Si requiere más información, favor de consultar la sección de códigos de respuesta Códigos de éxito A continuación se enlistan los códigos de éxito para el comando validatecfdi: Página 15
16 Códigos de error A continuación se enlistan los códigos de error para el comando validatecfdi: Consulta de CFDI El método getcfdiinfo se usa para consultar el estatus de un CFDI timbrado por CERTIPASS Datos de entrada Los atributos del objeto de entrada CfdiInfoWrapper son los siguientes: Parámetro Tipo Requerido/Opcional Descripción uuid String Requerido transactionid String Opcional Folio fiscal del CFDI previamente timbrado Identificador de transacción de consulta. Página 16
17 Estructura de petición SOAP <soap:envelope xmlns:soap=" xmlns:ws=" <soap:header> <wsse:security xmlns:wsse=" xmlns:wsu=" <wsse:usernametoken> <wsse:username></wsse:username> <wsse:password Type=" </wsse:usernametoken> </wsse:security> </soap:header> <soap:body> <ws:getcfdiinfo> <ws:cfdiinfowrapper> <ws:uuid></ws:uuid> <ws:transactionid></ws:transactionid> </ws:cfdiinfowrapper> </ws:getcfdiinfo> </soap:body> </soap:envelope> Figura 9 - Estructura de petición SOAP Servicio de Consulta Datos de respuesta Los atributos del objeto de respuesta GetCfdiInfoResponse son los siguientes: Parámetro Tipo Descripción responsecode int Código de respuesta de la consulta responsedescription String Descripción de la respuesta servertransactionid String Identificador de la transacción proporcionado por el servidor de la aplicación. transactionid String Identificador de la transacción ingresado por el usuario. requestdate Date Fecha de petición al servidor. responsedate Date Fecha de respuesta del servidor. executiontime long Tiempo de ejecución del comando (en milisegundos). cfdi String XML del CFDI consultado, codificado en Base64 uuid String Folio fiscal de CFDI consultado Página 17
18 cfdistatus String Estatus del CFDI consultado Estructura de respuesta SOAP <soap:envelope xmlns:soap=" <soap:body> <getcfdiinforesponse xmlns= > <return> <responsecode></responsecode> <responsedescription></responsedescription> <transactionid></ transactionid> <servertransactionid></ servertransactionid> <requestdate></ requestdate> <responsedate></ responsedate> <executiontime></ executiontime> <uuid></uuid> <cfdistatus></cfdistatus> <cfdi></cfdi> </return> </getcfdiinforesponse> </soap:body> </soap:envelope> Figura 10 - Estructura de respuesta SOAP Servicio de Consulta Códigos de respuesta A continuación se mencionan los posibles códigos de respuesta del comando getcfdiinfo. Si requiere más información, favor de consultar la sección de códigos de respuesta Códigos de éxito A continuación se enlistan los códigos de éxito para el comando getcfdiinfo: Códigos de error A continuación se enlistan los códigos de error para el comando getcfdiinfo: Página 18
19 2.5. Autenticación Para conectarse al Web Service de CERTIPASS es necesario proporcionar el usuario y contraseña que utiliza para ingresar a CERTIPASS. La autenticación se realiza mediante el uso de un WSSecurityHeader, el cual incluye un UsernameToken con los datos de autenticación del usuario. <soap:header xmlns:soap=" <wsse:security xmlns:wsse=" wss-wssecurity-secext-1.0.xsd" xmlns:wsu=" <wsse:usernametoken> <wsse:username>username</wsse:username> <wsse:password Type=" wss-username-token-profile- 1.0#PasswordText">password</wsse:Password> </wsse:usernametoken> </wsse:security> </soap:header> Figura 11 - Ejemplo de WSSecurityHeader de una petición SOAP Respuestas con mensajes de error En algunas situaciones, el WebService de Certipass puede regresar una respuesta que describe excepciones en la comunicación con el cliente. Este tipo de respuesta esta formada por un objeto OperationFailed. Los atributos del objeto OperationFault se describen a continuación: Parámetro Tipo Descripción errorcode int Código de error errordescription String Descripción del error servertransactionid String Identificador de la transacción proporcionado por el servidor de la aplicación. transactionid String Identificador de la transacción ingresado por el usuario. requestdate Date Fecha de petición al servidor. responsedate Date Fecha de respuesta del servidor. executiontime long Tiempo de ejecución del comando (en milisegundos) Estructura de una excepción <soap:envelope xmlns:soap=" <soap:body> <soap:fault> <soap:code> </soap:code> Página 19
20 <soap:reason> </soap:reason> <soap:detail> <OperationFailed xmlns = > <errorcode></errorcode> <errordescription></errordescription> <transactionid></ transactionid> <servertransactionid></ servertransactionid> <requestdate></ requestdate> <responsedate></ responsedate> <executiontime></ executiontime> </OperationFailed > </soap:detail> </soap:fault> </soap:body> </soap:envelope> Figura 12 - Ejemplo de la estructura de una excepción 3. Códigos de Respuesta 3.1. Códigos de respuesta definidos por el SAT Código Mensaje Descripción 201 UUID Cancelado exitosamente 202 UUID Previamente cancelado 203 UUID No corresponde el RFC del emisor y de quien solicita la cancelación 205 UUID No existe 301 XML mal formado Cuando se puede cancelar correctamente un CFDI V3.2 con el UUID ingresado. Cuando se intenta cancelar un CFDI V3.2 y ya ha sido cancelado previamente. Cuando se intenta cancelar un CFDI V3.2 y el RFC emisor es diferente al RFC que intenta cancelar. Cuando se trata de consultar, verificar o cancelar un CFDI V3.2 con un UUID que no existe. Cuando el XML del CFDI V3.2 no cumple con la estructura definida por el SAT. 302 Sello mal formado o inválido El sello del emisor no es válido. 303 Sello no corresponde a emisor 304 Certificado revocado o caduco 305 La fecha de emisión no está dentro de la vigencia del CSD del emisor 306 El certificado no es de tipo CSD El CSD del emisor no corresponde al RFC emisor del comprobante. El CSD del emisor se encuentra revocado de acuerdo a la lista LCO. El CSD del emisor no está vigente para la fecha de emisión del CFDI V3.2. El certificado no tiene la estructura de uno de tipo CSD. Página 20
21 307 El CFDI contiene un timbre previo 308 Certificado no expedido por el SAT La fecha de emisión se encuentra en el futuro y fuera del rango de tolerancia (12 horas) El tiempo entra la fecha de emisión y la fecha de firmado excede el límite establecido (72 horas) RFC del emisor no se encuentra en el régimen de contribuyentes La fecha de emisión no es posterior al 01 de enero UUID Cancelado exitosamente 1202 UUID Previamente cancelado 1203 UUID no corresponde con el emiso 1205 UUID No existe 1300 Autenticación no válida 1301 XML mal formado 1302 Estructura de folios no válida 1303 Estructura de RFC no válida 1304 Estructura de fecha no válida 1305 Certificado no corresponde al emisor 1306 Certificado no vigente 1307 Uso de FIEL no permitido 1308 Certificado revocado o caduco El XML enviado a CERTIPASS ya contiene un timbre. El CSD del emisor no fue firmado por un Certificado de Autoridad del SAT. El rango entre la fecha de emisión y la fecha actual es mayor a 12 horas. El rango entre la fecha de emisión y fecha de timbrado es mayor a 72 horas. El RFC del emisor no se encuentra en la lista LCO del SAT. La fecha de emisión no es posterior al 01 de enero Cuando se puede cancelar correctamente una Retención Pago V1.0 con el UUID ingresado. Cuando se intenta cancelar una Retención Pago V1.0 y ya ha sido cancelado previamente. Cuando se intenta cancelar una Retención Pago V1. y el RFC emisor es diferente al RFC que intenta cancelar. Cuando se trata de consultar, verificar o cancelar una Retención Pago V1.0 con un UUID que no existe. Cuando el token de autenticación no es válido para el servicio de cancelación. Cuando el XML de la Retención Pago V1. no cumple con la estructura definida por el SAT. Cuando la estructura Folio que contiene los UUID no es válida. Cuando la estructura en que se presenta el RFC del emisor no es válida. Cuando la estructura en que se presenta la fecha de expedición no es válida Cuando el Certificado del emisor de la Retención Pago V1.0 no coincide con el certificado con el cual fue firmado el CFDI. El CSD del emisor no está vigente para la fecha de emisión de la Retención Pago V1.0. Cuando se intenta cancelar una Retencion Pago V1.0 utilizando una FIEL El CSD del emisor se encuentra revocado de acuerdo a la lista LCO. Página 21
22 1309 Firma mal formada o inválida El sello del emisor no es válido Códigos de respuesta definidos por el Web Service Los siguientes códigos son definidos por CERTIPASS y pertenecen exclusivamente a su protocolo de comunicación y reglas de negocio. Código Mensaje Descripción 1000 Comando completado exitosamente Respuesta a un comando exitoso El comprobante no se encuentra en el sistema del SAT Error al validar la cantidad del parámetro 2309 Timbres no disponibles Comando falló, servidor cerrando conexión. Error en la estructura del comprobante El sistema del SAT no cuenta con el comprobante. Le sugerimos intentar más tarde. Cuando las cantidades utilizadas en el CFDI no concuerdan, por ejemplo, la suma de los conceptos no es igual a la cantidad del subtotal. 1 Cuando el Servicio recibe un comando para timbrar pero la cuenta no tiene timbres disponibles. Cuando hubo un error inesperado del lado del servidor. En cancelaciones puede indicar fallas por parte del servicio de cancelación del SAT. Cuando el xml del CFDI esta mal formado RFC emisor no coincide con el certificado emisor Fecha de expedición del comprobante no es válida Error en la validación del sello de la firma del comprobante Cuando el RFC del emisor del CFDI no coincide con el certificado con el cual fue firmado el CFDI. Cuando la fecha de expedición del CFDI no es válida. Cuando el certificado del emisor no esta en la lista del LCO. Cuando el CFDI es inválido debido a que fue modificado. Cuando hay problemas de enconding. 1 CERTIPASS valida los totales y subtotales de acuerdo a lo especificado en el Anexo 20. En un concepto o parte el valor unitario multiplicado por la cantidad no puede diferir del total más de medio centavo. El subtotal de los nodos de impuestos o conceptos debe ser igual a la suma de cada impuesto/concepto de dicho nodo. Se permite un margen de tolerancia de medio centavo por cada impuesto/concepto del nodo. El total de la factura debe ser igual a la suma del subtotal menos los descuentos, menos los impuestos retenidos y más los impuestos trasladados (ver Anexo 20, pag. 71). Se permite un margen de tolerancia de medio centavo por cada impuesto/descuento. Página 22
23 2700 CFDI No encontrado No fue posible realizar la validación del CFDI ante el SAt. Favor de intentar más tarde. No se encontró el certificado y la llave privada para el RFC Error interno al procesar el si comando El usuario o la contraseña no son válidos. Favor de verificar Los datos de autenticación están incompletos. Por favor, verifique el usuario y la contraseña 4212 La IP ha sido bloqueada 4213 La IP no es válida 4214 El usuario ha sido bloqueado 4215 La petición SOAP contiene elementos no reconociodos 4216 Error en el WSHeader El estatus del usuario no permite el acceso:<estatus> Se ha excedido el tamaño máximo de texto Error en la codificación base 64 de:<elemento> Cuando no se encuentra el CFDI correspondiente al signtransactionid o a la cadena original ingresada. Cuando ocurre un error en la conexión al servicio de validación del SAT o éste tiene una falla interna. Cuando se quiere timbrar un CFDI y no se tienen los archivos para generar el sello. Cuando ocurre un erro no esperado en la ejecución de un comando. Cuando las credenciales que se envían para la autenticación del usuario no corresponden a algún usuario de CERTIPASS. Cuando no se envían completos los datos de autenticación del usuario. Cuando el usuario intenta autenticarse 5 o más veces sin éxito. Si por alguna razón no es posible detectar su dirección IP. Cuando el usuario intenta autenticarse 5 o más veces sin éxito. Cuando la petición SOAP contiene elementos que no están definidos dentro de la estructura del Servicio web Cuando el usuario envía elementos no reconocidos en el header de autenticación de la petición SOAP Cuando un usuario que no se encuentra en Operación intenta acceder a los servicios del Servicio Web de CERTIPASS Cuando el usuario intenta enviar un elemento de texto con un tamaño superior al definido como máximo en el sistema. Cuando el usuario envía un dato que no corresponde con una codificación en Base Error en la estructura de la petición SOAP La fecha de cancelación debe ser poesterior a la fecha de emisión del CFDI Cuando la petición SOAP tiene elementos no válidos para su estructura Cuando se envía una fecha de cancelación anterior a la fecha de emisión del CFDI 4222 Archivo de certificado inválido Cuando el certificado del cliente no es válido. Página 23
24 4223 Archivo de llave privada inválido Cuando la llave privada no es válida Ocurrió un error al parsear uno o más de los parámetros de la petición, favor de verificar. Se ha excedido el máximo de caracteres de en la petición El valor de uno o más parámetros del comando están en un formato no válido y no pudo ser interpretado (error de conversión de tipos de datos). Cuando el tamaño de la petición SOAP (número de caracteres) supera el máximo permitido. Por favor proporciona: <valor> Cuando no se ingresa un valor requerido Por favor verifica la escritura de: <valor> Valor fuera de rango: <valor> Error en políticas: : <valor> La fecha no puede ser posterior a la actual: <valor> La fecha no puede ser anterior a la actual: <valor> No se encontró una operación de timbrado con el identificador de transacción proporcionado Cuando el valor ingresado tiene errores de sintaxis. Cuando el valor ingresado no esta dentro del rango permitido. Cuando el valor ingresado no cumple con alguna regla de negocio. Cuando el valor de la fecha ingresada es anterior a la actual y es requerido que sea posterior. Cuando el valor de la fecha ingresada es posterior a la actual y es requerido que sea anterior. Cuando el identificador de timbrado no has ido utilizado previamente para identificar una operación de timbrado o han transcurrido más de 72 horas desde que se utilizó. 4. Ejemplos de implementación El propósito de esta sección es explicar el proceso de creación de un cliente que consuma los servicios del Web Service de CERTIPASS JAVA Asunciones y dependencias Para iniciar el desarrollo del cliente es necesario contar con: 1. Archivo CERTIPASSWs.wsdl ( 2. Librería Apache CXF ( Página 24
25 Generación de clases del Web Service A continuación se describe como generar las clases del Web Service de CERTIPASS usando la herramienta Wsdl2Java de Apache CXF, es posible generar las clases del WSDL mediante otras herramientas como wsdl2java de Apache Axis2 o wsimport de Java. La generación de las clases se puede realizar desde línea de comandos o mediante código: a) Mediante línea de comando Ubicados en la carpeta bin del directorio de instalación de Apache CXF ingresamos el siguiente comando: wsdl2java -d rutadeloutput rutadelwsdl\certipassws.wsdl Ejemplo: Figura 13 - Ejemplo de uso de comando wsdl2java En la imagen anterior se puede apreciar que en la primera línea se accede a la ruta donde se encuentra la herramienta wsdl2java y en la segunda ingresamos el comando requerido, donde X es la ruta en donde se encuentra el archivo CERTIPASS.wsdl y X:\CERTIPASSCode es la ruta donde se creará el código. La estructura de salida se aprecia en la siguiente imagen: Figura 14 - Ejemplo del output del comando wsdl2java Después de ejecutar el comando, el siguiente paso es copiar la carpeta mx que se creó y agregarla a la carpeta src del proyecto en el que se desarrollará el cliente java. b) Mediante código Importando la clase org.apache.cxf.tools.wsdlto.wsdltojava (Contenida en la librería Apache CXF ) y ejecutando su método main: Página 25
26 WSDLToJava.main(new String[]{"- d","rutadeloutput","rutadelwsdl\certipassws.wsdl"); Ejemplo: package test; import org.apache.cxf.tools.wsdlto.wsdltojava; public class CodeGenerator { public static void main(string args[]) { try { WSDLToJava.main(new String[] { "-d", "src", "CertipassWs.wsdl"); System.out.println("finished"); catch (Exception e) { e.printstacktrace(); Figura 15 - Ejemplo de uso del método "main" de la clase WSDLToJava La estructura de salida se aprecia en la siguiente imagen: Figura 16 - Ejemplo del output del método "main" de la clase WSDLToJava Página 26
27 Página Cliente ejemplo En la imagen siguiente se muestra el código ejemplo de una clase que funciona como cliente del Web Service de CERTIPASS: public class CertipassClient { public static void main(string args[]) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setserviceclass(certipasssoapws.class); // URL de beta: String wsurl = " factory.setaddress(wsurl); factory.getininterceptors().add(new LoggingInInterceptor()); Map<String, Object> outprops = new HashMap<String, Object>(); outprops.put(wshandlerconstants.action, WSHandlerConstants.USERNAME_TOKEN); outprops.put(wshandlerconstants.user, "username "); outprops.put(wshandlerconstants.password_type, WSConstants.PW_TEXT); outprops.put(wshandlerconstants.pw_callback_class, ClientAutenticationCallBack.class.getName()); WSS4JOutInterceptor loggingoutinterceptor = new WSS4JOutInterceptor(outProps); factory.getoutinterceptors().add(loggingoutinterceptor); CertipassSOAPWS webservice = (CertipassSOAPWS) factory.create(); Client client = ClientProxy.getClient(webService); HTTPConduit conduit = (HTTPConduit) client.getconduit(); HTTPClientPolicy policy = new HTTPClientPolicy(); policy.setconnectiontimeout( l); policy.setreceivetimeout( l); policy.setallowchunking(false); conduit.setclient(policy); CfdiInfoWrapper wrapper = new CfdiInfoWrapper(); wrapper.setuuid("753e9e17-39f2-44f1-91fe-c7c0bec617a0"); wrapper.settransactionid("cii1"); try { CfdiInfoResult result=webservice.getcfdiinfo(wrapper); System.out.println("Cfdi: "+result.getcfdi()); System.out.println("Estatus: "+result.getcfdistatus()); System.out.println("Código de respuesta: "+result.getresponsecode()); System.out.println("Descripción de la respuesta: "+result.getresponsedescription()); System.out.println("Transaction ID: "+result.gettransactionid()); System.out.println("Server transaction ID: "+result.getservertransactionid()); System.out.println("Fecha de consulta: "+result.getrequestdate()); System.out.println("Fecha de respuesta: "+result.getresponsedate()); System.out.println("Tiempo de ejecución: "+result.getexecutiontime()); catch (OperationFailedException fault) {
28 System.out.println("Código: "+fault.getfaultinfo().geterrorcode()); System.out.println("Mensaje: "+fault.getfaultinfo().geterrordescription()); Figura 17 - Ejemplo de clase que consume los servicios del Web Service de CERTIPASS A continuación se describe brevemente las partes que componen el código anterior 1. Configuración del Factory necesario para obtener la instancia del Web Service: // Se crea el factory necesario para obtener una instancia del servicio web JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setserviceclass(certipasssoapws.class); // URL de beta: String wsurl = factory.setaddress(wsurl); // Creamos un interceptor de entrada default factory.getininterceptors().add(new LoggingInInterceptor()); Figura 18 - Ejemplo de configuración del factory Es importante notar que la url del web Service de CERTIPASS usa el protocolo HTTPS, ya que si tratamos de conectarnos mediante un protocolo HTTP el servicio no será accedido. IMPORTANTE: Es muy común que los sitios de beta tengan certificados firmados por el dueño del ambiente (mientras que los sitios de Producción sí tengan certificados firmados por una Autoridad Certificadora como Verisign, GlobalSign o Symantec). Es por ello que al apuntar al ambiente Beta se requiere añadir el certificado HTTPS del Web Service (%CERT_FILE% en el ejemplo) a la lista de trusted certificates de Java (archivo %JAVA_HOME%/lib/security/cacerts). La herramienta Keytool (de Java) cuenta con un comando para realizar este import (Ver: %2Ft_importing_certificates_into_the_java_cacerts_file.html). keytool import v storetype jks keystore %CACERT_FiLE% -alias %ALIAS% -file %CERT_FILE% Dado que el certificado HTTPS de Producción del Web Service de CERTIPASS sí está firmado por una autoridad certificadora, no es necesario realizar esto al apuntar a Producción. 2. Configuración de la autenticación del usuario: Para configurar la autenticación del usuario es necesario implementar una clase Callback que realizará la obtención del password del usuario necesario para autenticarse en el Web Service de CERTIPASS. El código de la clase se presenta a continuación: Página 28
29 import java.io.ioexception; import javax.security.auth.callback.callback; import javax.security.auth.callback.callbackhandler; import javax.security.auth.callback.unsupportedcallbackexception; import org.apache.ws.security.wspasswordcallback; public class ClientAutenticationCallBack implements CallbackHandler public void handle(callback[] cbarray) throws IOException, UnsupportedCallbackException { WSPasswordCallback passwordcallback = (WSPasswordCallback) cbarray[0]; // Password que se usa para acceder a Certipass passwordcallback.setpassword("password"); // User que se usa para acceder a Certipass passwordcallback.setidentifier("username"); Figura 19 - Ejemplo de clase Callback El siguiente paso es usar el Callback en la configuración de la autenticación: // Configuramos un interceptor de salida usando el callback de salida que // definimos que hará la validación de la contraseña contra el callback de // entrada del servicio web Map<String, Object> outprops = new HashMap<String, Object>(); outprops.put(wshandlerconstants.action, WSHandlerConstants.USERNAME_TOKEN); // Agregamos nuestro nombre de usuario de Certipass outprops.put(wshandlerconstants.user, "username "); outprops.put(wshandlerconstants.password_type, WSConstants.PW_TEXT); // Agregamos el callback que generamos para autenticar al usuario outprops.put(wshandlerconstants.pw_callback_class, ClientAutenticationCallBack.class.getName()); WSS4JOutInterceptor loggingoutinterceptor = new WSS4JOutInterceptor(outProps); factory.getoutinterceptors().add(loggingoutinterceptor); Figura 20 - Ejemplo de configuración de la autenticación del usuario 3. Configuración del cliente que consumirá el Web Service: // Obtenemos la instancia del servicio web CertipassSOAPWS webservice = (CertipassSOAPWS) factory.create(); // Creamos el cliente que consumirá el webservice Client client = ClientProxy.getClient(webService); // Configuramos el canal por el que se conectará el cliente al servicio web HTTPConduit conduit = (HTTPConduit) client.getconduit(); HTTPClientPolicy policy = new HTTPClientPolicy(); // Establecemos el tiempo máximo de conexión policy.setconnectiontimeout( l); // Establecemos el tiempo máximo que el cliente esperará una respuesta policy.setreceivetimeout( l); policy.setallowchunking(false); conduit.setclient(policy); Página 29
30 Figura 21 - Ejemplo de configuración del cliente Es importante establecer tiempos suficientes o considerables para permitir a la aplicación esperar por la conexión y el tiempo de respuesta de los servicios del Web Service, ya que si hay interferencias en la red podría ocasionar timeouts en la comunicación de los sistemas. 4. Llamada a métodos del Web Service: En este punto ya se tiene todo listo para usar los servicios del Web Service de CERTIPASS. A continuación se muestra una llamada al método getcfdiinfo: // Una vez configurada la conexión podemos llamar a los métodos del servicio web CfdiInfoWrapper wrapper = new CfdiInfoWrapper(); wrapper.setuuid("753e9e17-39f2-44f1-91fe-c7c0bec617a0"); wrapper.settransactionid("cii1"); try { CfdiInfoResult result=webservice.getcfdiinfo(wrapper); System.out.println("Cfdi: "+result.getcfdi()); System.out.println("Estatus: "+result.getcfdistatus()); System.out.println("Código de respuesta: "+result.getresponsecode()); System.out.println("Descripción de la respuesta: "+result.getresponsedescription()); System.out.println("Transaction ID: "+result.gettransactionid()); System.out.println("Server transaction ID: "+result.getservertransactionid()); System.out.println("Fecha de consulta: "+result.getrequestdate()); System.out.println("Fecha de respuesta: "+result.getresponsedate()); System.out.println("Tiempo de ejecución: "+result.getexecutiontime()); catch (OperationFailedException fault) { System.out.println("Código: "+fault.getfaultinfo().geterrorcode()); System.out.println("Mensaje: "+fault.getfaultinfo().geterrordescription()); Figura 22 - Ejemplo de llamada a métodos del Web Service Al ejecutar el código anterior se obtendrá la siguiente salida: Figura 23 -Ejemplo de salida de una ejecución exitosa Página 30
31 4.2..NET Asunciones y dependencias El propósito de esta sección es explicar el proceso de creación de clientes.net, usando C# y Visual Basic para consumir el Servicio Web de CERTIPASS. Utilizaremos Microsoft Visual Studio 2010 como plataforma de desarrollo, los pasos podrían variar ligeramente para versiones inferiores Referencia del Web service El primer paso para crear el cliente del servicio web agregar la referencia del Web Service de CERTIPASS al proyecto en que estará nuestro cliente. El proceso para agregar la referencia es el siguiente: 1) Seleccionar el proyecto al cual consumirá el servicio web : Figura 24 - Ejemplo de agregación de referencia de un servicio web, selección del proyecto 2) Ingresar la URL del Servicio Web de CERTIPASS y especificar el namespace que queremos usar para identificar las clases que se generarán. Página 31
32 Figura 25 - Ejemplo de creación de referencia de un servicio web, especificación de URL del servico Al realizar el paso anterior, tendremos importadas las clases del Servicio Web al proyecto Configuración de la conexión El siguiente paso es configurar la aplicación para que se conecte al Servicio Web. A continuación se muestra un ejemplo del archivo app.config configurado para realizar la conexión. <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <bindings> <wshttpbinding> <binding name="wsbinding" messageencoding="text" maxreceivedmessagesize=" " maxbufferpoolsize=" " textencoding="utf-8" > <readerquotas maxarraylength=" " maxstringcontentlength=" "/> <security mode="transport"> <transport clientcredentialtype="basic" /> <message clientcredentialtype="username" establishsecuritycontext="true"/> </security> </binding> </wshttpbinding> </bindings> <client> <endpoint name="certipassendpoint" address=" binding="wshttpbinding" bindingconfiguration="wsbinding" Página 32
33 contract="certipass.certipasssoapws" > <headers> <Wsse:Security xmlns:wsse=" wss-wssecurity-secext-1.0.xsd" > <Wsse:UsernameToken> <Wsse:Username>pfg_certipass</Wsse:Username> <Wsse:Password Type=" wss-username-token-profile-1.0#passwordtext">0certipass</wsse:password> </Wsse:UsernameToken> </Wsse:Security> </headers> </endpoint> </client> </system.servicemodel> </configuration> Figura 26 - Ejemplo de configuración de conexión en.net Cabe recordar que la URL de producción es mientras que la URL de Pruebas Beta es A continuación se describe brevemente las partes que componen el código anterior Configuración del Binding que indicará al cliente la forma en la que se transmiten los mensajes al servidor. <bindings> <wshttpbinding> <! Configuración de la encodificación del mensaje y el tamaño máximo permitido--> <binding name="wsbinding" messageencoding="text" maxreceivedmessagesize=" " maxbufferpoolsize=" " textencoding="utf-8" > <readerquotas maxarraylength=" " maxstringcontentlength=" "/> <! Se configura el modo de transferencia de mensajes--> <security mode="transport"> <transport clientcredentialtype="basic" /> <message clientcredentialtype="username" establishsecuritycontext="true"/> </security> </binding> </wshttpbinding> </bindings> Figura 27 - Ejemplo de configuración del binding Configuración del endpoint (con la URL de beta o producción): <! Se configura el endpoint indicando la dirección del servicio web y se usa el binding que se definió anteriormente, así mismo indicamos el nombre del contrato --> <endpoint name="certipassendpoint" address=" binding="wshttpbinding" bindingconfiguration="wsbinding" contract="certipass.certipasssoapws" > Figura 28 - Ejemplo de configuración del endpoint Configuración de la autenticación del usuario: Página 33
34 <headers> <--Se define elsecurity header que llevarán las peticiones realizadas al serivio web por el cliente--> <Wsse:Security xmlns:wsse=" wss-wssecurity-secext-1.0.xsd" > <--Establecer las credencialesc que usará el cliente para accede al servicio web--> <Wsse:UsernameToken> <Wsse:Username>username</Wsse:Username> <Wsse:Password Type=" wss-username-token-profile-1.0#passwordtext">password</wsse:password> </Wsse:UsernameToken> </Wsse:Security> </headers> Figura 29 - Ejemplo de configuración de la autenticación del usuario En este punto ya se tiene todo listo para usar los servicios del servicio web de Certipass, el siguiente paso es crear el cliente. Página Cliente ejemplo en C# A continuación se muestra el código de implementación de un cliente que consume el servicio web de Certipass en C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClientTest.Certipass; using System.ServiceModel; using System.Net; using System.ServiceModel.Channels; namespace ClientTest { class Program { static void Main(string[] args) { //Creamos el proxy que servirá como cliente y le especificamos el endpoint al cual debe apuntar CertipassSOAPWSClient clientproxy = new CertipassSOAPWSClient("CertipassEndpoint"); //Indicamos las credenciales con las que se idenficiará el cliente en el servicio web clientproxy.clientcredentials.username.username = "username"; clientproxy.clientcredentials.username.password = "password"; try { //Se llama a los métodos del Servicio web mediante las clases que importamos cfdiinfowrapper wrapper = new cfdiinfowrapper(); wrapper.uuid = "905b5fec-720e-480c-b679-61d8a3d7c71a";
35 CfdiInfoResult result = clientproxy.getcfdiinfo(wrapper); Console.WriteLine("Response Code: {0 " + result.responsecode); Console.WriteLine("Response Description: {0 " + result.responsedescription); Console.WriteLine("Request Date {0" + result.requestdate); Console.WriteLine("Response Date: {0 " + result.responsedate); Console.WriteLine("Server transaction ID: {0 " + result.servertransactionid); Console.WriteLine("Transaction ID: {0 " + result.transactionid); Console.WriteLine("Execution Time: {0 " + result.executiontime); Console.WriteLine("CfdiStatus: {0 " + result.cfdistatus); Console.WriteLine(" "); Console.WriteLine(result.cfdiStatus); Console.ReadLine(); catch (FaultException<operationFailed> e) { Console.WriteLine("Código de error: " + e.detail.errorcode); Console.WriteLine("Descripción del error: " + e.detail.errordescription); Console.ReadLine(); catch (FaultException e) { Console.WriteLine("Error en la petición: " + e.message); Console.ReadLine(); Figura 30 - Ejemplo de cliente en C# Cliente ejemplo en Visual Basic A continuación se muestra el código de implementación de un cliente que consume el servicio web de Certipass en Visual Basic: Imports System.ServiceModel Module Module1 Sub Main() System.Net.ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications 'Creamos el proxy que servirá como cliente y le especificamos el endpoint al cual debe apuntar Dim clientproxy As Certipass.CertipassSOAPWSClient clientproxy = New Certipass.CertipassSOAPWSClient Dim wrapper As Certipass.cfdiInfoWrapper wrapper = New Certipass.cfdiInfoWrapper Dim result As Certipass.CfdiInfoResult result = New Certipass.CfdiInfoResult Página 35
36 Try 'Indicamos las credenciales con las que se idenficiará el cliente en el servicio web clientproxy.clientcredentials.username.username = "username" clientproxy.clientcredentials.username.password = "password" 'Se llama a los métodos del Servicio web mediante las clases que importamos wrapper.uuid = "753e9e17-39f2-44f1-91fe-c7c0bec617a0" result = clientproxy.getcfdiinfo(wrapper) Console.WriteLine("Response Code: {0 " + result.responsecode); Console.WriteLine("Response Description: {0 " + result.responsedescription); Console.WriteLine("Execution Time: {0 " + result.executiontime); Console.WriteLine("Request Date {0" + result.requestdate); Console.WriteLine("Response Date: {0 " + result.responsedate); Console.WriteLine("Server transaction ID: {0 " + result.servertransactionid); Console.WriteLine("Transaction ID: {0 " + result.transactionid); Console.WriteLine("CfdiStatus: {0 " + result.cfdistatus); Console.ReadLine() Catch ex As FaultException(Of Certipass.operationFailed) ' Si ocurre algún error se imprime el código y la descripción Console.WriteLine("Código de error: " + ex.detail.errorcode.tostring ) Console.WriteLine("Descripción del error: " + ex.detail.errordescription) Next Console.ReadLine() End Try End Sub Public Function AcceptAllCertifications(ByVal sender As Object, ByVal certifications As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslpolicyerros As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function End Module Figura 31 - Ejemplo de cliente en Visual Basic. Al ejecutar cualquiera de los dos clientes anterior obtendremos obtendrá el siguiente resultado: Figura 32 - Ejemplo de Output del cliente en.net, cuando se consutla un cfdi Página 36
37 4.3. DELPHI Asunciones y dependencias Para iniciar el desarrollo del cliente daremos por hecho que el usuario usará Delphi XE6 como IDE Unidad CertipassWs El primer paso para crear el cliente del servicio web agregar la definición del Servicio Web de CERTIPASS al proyecto en que estará nuestro cliente, es decir, crear la unidad CertipassWs. El proceso para agregar la referencia es el siguiente: 1. Como Delphi no puede importar automáticamente el XSD en el WSDL con la etiqueta import, se necesita descargar el WSDL desde la url la estructura del wsdl se muestra en la siguiente imagen: necesitamos reemplazar la parte del wsdl que esta delimitada por el rectángulo azul con el contenido del XSD, el cual podemos descargar desde la url que viene en el atributo schemalocation y esta subrayada con rojo. La estructura del WSDL modificado se muestra en la siguiente imagen. Página 37
38 La parte delimitada por el rectángulo azul son los elementos que se incrustan manualmente desde el XSD, por cuestiones de tamaño de la imagen solo se muestra una parte del archivo, una vez hecho esto, se guarda el WSDL localmente y se procede a importarlo. 2. Seleccionar el proyecto al cual consumirá el servicio web e ir al menú File>New>other y seleccionar WSDL importer : Página 38
39 Figura 33 - Ejemplo de la importación del WSDL, parte 1 3. Ingresar la URL del Servicio Web de CERTIPASS y hacer clic en Next dejando las opciones default del Wizard. Página 39
40 Figura 34 - Ejemplo de la importación del WSDL, parte 2 IMPORTANTE La imagen anterior contiene la url como ubicación del wsdl, pero en este caso se tiene que buscar el wsdl que se generó manualmente en el paso 1, para que Delphi genere correctamente todas las definiciones de clases soap. Al realizar el paso anterior se creará la unidad services con la definición de las clases del Servicio Web de Certipass: Figura 35 - Ejemplo de la estructura del proyecto al terminar de crear la unidad Services Para fines prácticos, renombremos la unidad a CertipassWS. Página 40
41 Abrimos el archivo que acabamos de renombrar y nos dirigimos hacia las ultimas líneas de este. Ya que estemos ahí, veremos unas líneas como la siguiente. RemClassRegistry.RegisterXSClass(ValidateCfdiWrapper, ' 'ValidateCfdiWrapper'); Vemos que en el recuadro anterior, el tercer argumento del metodo RegisterXSClass tiene la primera letra coloreada con rojo. Dicha letra se tiene que cambiar de mayúscula a minúscula para que las peticiones soap puedan funcionar de forma correcta. Cabe mencionar que asi como esa línea hay varias mas, a las cuales se les tendrá que hacer el mismo cambio Unidad WSSecurity El siguiente paso es añadir al proyecto la unidad WS-Security que contiene la estructura del header de autenticación que usará en las peticiones del cliente : Figura 36 - Ejemplo de como agregar una unidad al proyecto Sobrescribimos el archivo con el siguiente código: unit WSSecurity; Página 41
42 interface uses SysUtils, InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns, XMLIntf; const IS_OPTN=$0001; IS_ATTR=$0010; IS_TEXT=$0020; IS_REF =$0080; IS_QUAL=$0100; NS_SECEXT = ' NS_UTILITY = ' type ttimestampfault=(wsu_messageexpired); Id = type WideString; Created=class(TXSDateTime) end; Expires=class(TXSDateTime) end; Timestamp=class(TRemotable) private FCreated:Created; FExpires:Expires; FId: Id; public destructor Destroy; override; published property Created:Created Index (IS_OPTN) read FCreated write FCreated; property Expires:Expires Index (IS_OPTN) read FExpires write FExpires; property Id:Id Index (IS_ATTR or IS_QUAL) read FId write FId; end; AttributedString=class(TRemotable) private FText:WideString; FId:Id; FId_Specified:boolean; procedure SetId(Index:Integer; const AId:Id); function Id_Specified(Index:Integer):boolean; published property Text:WideString Index (IS_TEXT) read FText write FText; property Id:Id Index (IS_ATTR or IS_OPTN or IS_QUAL) read FId write SetId stored Id_Specified; end; Página 42
43 Nonce=class(AttributedString) private FEncodingType: WideString; FEncodingType_Specified:boolean; procedure SetEncodingType(Index:Integer; const AWideString:WideString); function EncodingType_Specified(Index:Integer):boolean; published property EncodingType:WideString Index (IS_ATTR or IS_OPTN) read FEncodingType write SetEncodingType stored EncodingType_Specified; end; Password=class(AttributedString) private FType_:WideString; FType Specified:boolean; procedure SetType_(Index:Integer; const AWideString:WideString); function Type Specified(Index:Integer):boolean; published property Type_:WideString Index (IS_ATTR or IS_OPTN) read FType_ write SetType_ stored Type Specified; end; UsernameToken=class(TRemotable) private FUserName:string; FCreated:Created; FPassword:Password; FNonce: Nonce; FId: Id; public destructor Destroy; override; function ObjectToSOAP(RootNode, ParentNode: IXMLNode; const ObjConverter: IObjConverter; const NodeName, NodeNamespace, ChildNamespace: InvString; ObjConvOpts: TObjectConvertOptions; out RefID: InvString): IXMLNode; override; property Id:Id Index (IS_ATTR or IS_QUAL) read FId write FId; published property Username:String read FUsername write FUsername; property Password:Password read FPassword write FPassword; property Nonce: Nonce read FNonce write FNonce; property Created:Created index (IS_REF) read FCreated write FCreated; end; Security=class(TSOAPHeader) private FUserNameToken:UserNameToken; public destructor Destroy; override; Página 43
44 published property UsernameToken:UsernameToken index (IS_REF) read FUserNameToken write FUserNameToken; end; implementation destructor Timestamp.Destroy; begin FreeAndNIL(FCreated); FreeAndNIL(FExpires); inherited Destroy; end; destructor UsernameToken.Destroy; begin FreeAndNil(FCreated); FreeAndNil(FPassword); FreeAndNil(FNonce); inherited Destroy; end; function UsernameToken.ObjectToSOAP(RootNode, ParentNode: IXMLNode; const ObjConverter: IObjConverter; const NodeName, NodeNamespace, ChildNamespace: InvString; ObjConvOpts: TObjectConvertOptions; out RefID: InvString): IXMLNode; begin Result := inherited; if (Result <> nil) and (Length(FId) > 0) then begin Result.DeclareNamespace('wsu', NS_UTILITY); Result.SetAttributeNS('Id', NS_UTILITY, FId); end; end; procedure AttributedString.SetId(Index:Integer; const AId:Id); begin FId:=AId; FId_Specified:=True; end; function AttributedString.Id_Specified(Index:Integer):boolean; begin Result:=FId_Specified; end; procedure Password.SetType_(Index:Integer; const AWideString:WideString); begin FType_:=AWideString; FType Specified:=True; end; Página 44
45 function Password.Type Specified(Index:Integer):boolean; begin Result:=FType Specified; end; procedure Nonce.SetEncodingType(Index:Integer; const AWideString:WideString); begin FEncodingType:=AWideString; FEncodingType_Specified:=True; end; function Nonce.EncodingType_Specified(Index:Integer):boolean; begin Result:=FEncodingType_Specified; end; destructor Security.Destroy; begin FreeAndNIL(FUserNameToken); inherited Destroy; end; initialization RemClassRegistry.RegisterXSClass(Security, NS_SECEXT, 'Security'); RemClassRegistry.RegisterXSClass(UsernameToken, NS_SECEXT, 'UsernameToken'); RemClassRegistry.RegisterXSClass(Password, NS_SECEXT, 'Password'); RemClassRegistry.RegisterXSInfo(TypeInfo(Nonce), NS_SECEXT, 'Nonce'); RemClassRegistry.RegisterXSInfo(TypeInfo(tTimestampFault), NS_UTILITY, 'ttimestampfault'); RemClassRegistry.RegisterExternalPropName(TypeInfo(tTimestampFault), 'wsu_messageexpired', 'wsu:messageexpired'); RemClassRegistry.RegisterXSInfo(TypeInfo(Id), NS_UTILITY, 'Id'); RemClassRegistry.RegisterXSClass(AttributedString, NS_SECEXT, 'AttributedString'); RemClassRegistry.RegisterExternalPropName(TypeInfo(Password), 'Type_', 'Type'); end. Figura 37 - Código de la unidad WSSecurity Unidad Client A continuación se muestra el código de implementación de una unidad cliente que llama a los métodos del servicio web de Certipass (en el ejemplo se usa la URL de producción, no de beta) : unit Client; interface uses Página 45
46 certipasswsdl, xmldom,wssecurity, Soap.InvokeRegistry, Soap.Rio, Soap.SOAPHTTPClient,Xml.XMLIntf,Soap.XSBuiltIns; type TClient=Class published const //Las credenciales para autenticarse en Certipass stusername = 'pfg_certipass'; stpassword = '0certipass'; var stwebserviceproxy:certipasssoapws; constructor Create(); procedure addsecurityheader(service: CertipassSOAPWS); function cancelcfdi(transactionid:string; uuid:string; signaturevalue:string; canceldate:txsdatetime):cfdicancelresult; end; implementation //Configuración del endpoint constructor TClient.Create; var sthttprio1: THTTPRIO; begin sthttprio1:=thttprio.create(nil); sthttprio1.url:=' sthttprio1.wsdllocation:=' //Se obtiene la instancia del webservice stwebserviceproxy:=getcertipasssoapws(true,sthttprio1.wsdllocation,sthttprio1); //Se agrega el SegurityHeader addsecurityheader(stwebserviceproxy); end; Página 46 //Configuración del Header de seguridad procedure TClient.addSecurityHeader(Service: CertipassSOAPWS); var Header: Security; Headers: ISOAPHeaders; begin Header := Security.Create; Header.MustUnderstand := false; Header.UsernameToken := UsernameToken.Create; Header.UsernameToken.Id := 'UsernameToken'; Header.UsernameToken.Username := TClient.stUsername; Header.UsernameToken.Password := Password.Create; Header.UsernameToken.Password.Type_ :='
47 open.org/wss/2004/01/oasis wss-username-token-profile-1.0#passwordtext'; Header.UsernameToken.Password.Text := TClient.stPassword; Header.UsernameToken.Nonce := Nonce.Create; Header.UsernameToken.Nonce.EncodingType :=' Header.UsernameToken.Created := Created.Create; Headers := (Service as ISOAPHeaders); Headers.OwnsSentHeaders := True; Headers.Send(Header); end; // Llamada al método getcfdicancel de Certipass web service function TClient.cancelCfdi (transactionid:string; uuid:string; signaturevalue:string; canceldate:txsdatetime):cfdicancelresult; var stwrapper:cfdicancelwrapper; begin stwrapper:= CfdiCancelWrapper.Create; stwrapper.uuid:=uuid; stwrapper.transactionid:= transactionid; stwrapper.signaturevalue:= signaturevalue; stwrapper.canceldate:=canceldate; Result:= stwebserviceproxy.cancelcfdi(stwrapper); end; end. Figura 38 - Ejemplo de una unidad Cliente que hace llamadas a los métodos del Servicio web de CERTIPASS A continuación se describe brevemente las partes que componen el código anterior 1. Definición de la clase type TClient=Class published const //Las credenciales para autenticarse en Certipass stusername = 'username'; stpassword = 'password'; var stwebserviceproxy:certipasssoapws; constructor Create(); procedure addsecurityheader(service: CertipassSOAPWS); function cancelcfdi(transactionid:string; uuid:string; signaturevalue:string; canceldate:txsdatetime):cfdicancelresult; end; Figura 39 - Ejemplo de la sección de definición de una clase 2. Implementación de los procedure y functions: Página 47
48 implementation //Configuración del endpoint constructor TClient.Create; var sthttprio1: THTTPRIO; begin sthttprio1:=thttprio.create(nil); sthttprio1.url:=' sthttprio1.wsdllocation:=' //Se obtiene la instancia del webservice stwebserviceproxy:=getcertipasssoapws(true,sthttprio1.wsdllocation,sthttprio1); //Se agrega el SegurityHeader addsecurityheader(stwebserviceproxy); end; //Configuración del Header de seguridad procedure TClient.addSecurityHeader(Service: CertipassSOAPWS); var Header: Security; Headers: ISOAPHeaders; begin Header := Security.Create; Header.MustUnderstand := false; Header.UsernameToken := UsernameToken.Create; Header.UsernameToken.Id := 'UsernameToken'; Header.UsernameToken.Username := TClient.stUsername; Header.UsernameToken.Password := Password.Create; Header.UsernameToken.Password.Type_ :=' Header.UsernameToken.Password.Text := TClient.stPassword; Header.UsernameToken.Nonce := Nonce.Create; Header.UsernameToken.Nonce.EncodingType :=' Header.UsernameToken.Created := Created.Create; Headers := (Service as ISOAPHeaders); Headers.OwnsSentHeaders := True; Headers.Send(Header); end; // Llamada al método getcfdicancel de Certipass web service function TClient.cancelCfdi (transactionid:string; uuid:string; signaturevalue:string; canceldate:txsdatetime):cfdicancelresult; var stwrapper:cfdicancelwrapper; begin stwrapper:= CfdiCancelWrapper.Create; stwrapper.uuid:=uuid; stwrapper.transactionid:= transactionid; stwrapper.signaturevalue:= signaturevalue; stwrapper.canceldate:=canceldate; Página 48
49 Result:= stwebserviceproxy.cancelcfdi(stwrapper); end; end. Figura 40 - Ejemplo de la sección de implementación de una clase Cliente ejemplo El último paso es usar las unidades que se definieron anteriormente para consumir el Servicio Web. A continuación se muestra un ejemplo de cómo realizarlo: program Project1; {$APPTYPE CONSOLE {$R *.res uses System.SysUtils,Soap.XSBuiltIns, CertipassWs in 'CertipassWs.pas', WSSecurity in 'WSSecurity.pas', Client in 'Client.pas',ActiveX,Windows,InvokeRegistry; var proxy:tclient; userexit:string; //Variable de apoyo para evitar que la consola se cierre cuando se completa el proceso consultresult:cfdicancelresult; date:txsdatetime; begin date:=txsdatetime.create(); date.xstonative(' t00:00:00'); CoInitialize(nil); //Inicialización del cliente proxy:=tclient.create; //Inicialización del objeto que guardará la respuesta consultresult:=cfdicancelresult.create; WriteLn('Cliente creado'); try //Llamada al método que se definio en la unidad Client consultresult:=proxy.cancelcfdi('tran1';'d170f2c1-885f-4a64-95ec-5a22e75d07a4'; 'signaturevalue';date); WriteLn('Código de Respuesta: '+consultresult.responsecode.tostring()); WriteLn('Descripción de Respuesta: '+consultresult.responsedescription); WriteLn('ID de transacción: '+consultresult.transactionid); WriteLn('ID de transacción en el Servidor: '+consultresult.servertransactionid); WriteLn('Fecha de Solicitud: '+DateTimeToStr(consultResult.requestDate.AsDateTime)); WriteLn('Fecha de Respuesta: '+ DateTimeToStr(consultResult.responseDate.AsDateTime); WriteLn('Tiempo de Ejecución: '+consultresult.executiontime.tostring()); ReadLn(userExit); Página 49
50 except on E: ERemotableException do begin Writeln('Error '+E.FaultDetail); ReadLn(userExit); end; end; end. Figura 41 - Ejemplo de cliente en Delphi Al ejecutar el proyecto obtendremos obtendrá el siguiente resultado: Figura 42 - Ejemplo de Output del cliente en Delphi, cuando se quiere cancelar un CFDI que no existe 4.4. Python Asunciones y dependencias El propósito de este documento es describir el proceso de creación de clientes en python para consumir el Servicio Web de CERTIPASS. Para iniciar el desarrollo es necesario contar con: 1. IDE Eclipse. 2. Pydev, Plugin para el desarrollo de Python en Eclipse. 3. Archivo Suds, librería de Python para el desarrollo den clientes de web services. 4. La herramienta Cygwin para extraer los archivos.py de la librería Suds Librería Suds El primer paso para crear el cliente del servicio web agregar la librería Suds. El proceso para agregar la librería es el siguiente: 3.1. Obtener los archivos.py de la librería Suds, extrayéndolos del archivo python-suds- 0.4.tar.gz.En la herramienta Cygwin,ubicados en el directorio donde se encuentra el archivo.gz (Ejemplo, disco X ) y ejecutamos el siguiente comando. tar xvf python-suds-0.4.tar.gz Figura 43 - Ejemplo de comando para obtener los archivos de la librería Suds Ejemplo Página 50
Manual de Timbrado FEL
Facturar en Línea Manual de Timbrado FEL Le proporcionará de manara precisa los pasos y referencias del proceso de timbrado FEL Aquí podrán resolver todas sus dudas. 55029 www.fel.mx Proveedor autorizado
Más detallesEspecificación Nuevo Sistema de Timbrado
Especificación Nuevo Sistema de Timbrado Este documento abarca la especificación e información necesaria para poder llevar acabo la integración y consumo del nuevo servicio de timbrado. Este nuevo sistema
Más detallesCFDi Client Manual de Usuario
CFDi Client Manual de Usuario Título del documento: CFDi client Nombre del fichero: ES CFDiClient Manual de Usuario.odt Versión: Estado: VIGENTE Fecha: 28/02/2011 Autor: Oscar Albert Arcas Revisión, Aprobación
Más detallesGUÍA TÉCNICA DE USUARIO
GUÍA TÉCNICA DE USUARIO [SISTEMA FACTUREHOY] Página 1 de 33 CONTENIDO: 1 INTRODUCCIÓN... 4 2 PROCESO DE CONFIGURACIÓN DE CERTIFICADO DE SELLO DIGITAL Y LLAVE PRIVADA DEL EMISOR... 6 2.1 REGISTRO DE LA
Más detallesCONTENIDO PAC SASUMA. No. de Revisión: 00. Código: Manual de Usuario Aplicación Gratuita APLICACIÓN USUARIOS DE LA APP GRATUITA
CONTENIDO INTRODUCCIÓN. OBJETIVO. ALCANCE. PRE-REQUISITOS Registro Condiciones de Uso y Confidencialidad. Confirmación del Registro. Inicio de Sesión. Configuración. a) Carga de certificado de sello digital
Más detallesManual de Usuario. Terra Nómina Electrónica
Manual de Usuario Terra Nómina Electrónica Abril 2014 Contenido 1. Configuraciones 2. App Nómina 3. Emisión 4. Consulta de Comprobantes 5. Descarga de Facturas 6. Cancelación 7. Centro de Atención a Usuarios
Más detallesServicio Web de Timbrado
Servicio Web de Timbrado Este documento describe la información relacionada para la implementación del Servicio Web de Timbrado Versión documento 3.1 dotnet Desarrollo de Sistemas 01/01/2014 Contenido
Más detallesMódulo CEME Creación y Emisión de Mensajes Electrónicos. SSP Service Sender Provider
Módulo CEME Creación y Emisión de Mensajes Electrónicos SSP Service Sender Provider Manual de usuario Versión 1.0 BE-CAPMA-001 V 1.0 Confidencial y Restringido Jun. 23, 2014 Página 1 de 28 Contenido Módulo
Más detallesManual de Usuario para el Portal de Contribuyentes
Manual de Usuario para el Portal de Contribuyentes Factura Electrónica (CFDI) Servicio de Administración Tributaria (SAT) 26/03/2012 Versión 1.0 Final Contenido 1 Introducción... 1 2 Acceso al portal...
Más detallesGUÍA DE CONFIGURACIÓN DEL MÓDULO DE FACTURACIÓN ELECTRÓNICA. SoftRestaurant 2012 SISTEMA DE ADMINISTRACIÓN DE BARES Y RESTAURANTES SOFTRESTAURANT
GUÍA DE CONFIGURACIÓN DEL MÓDULO DE FACTURACIÓN ELECTRÓNICA SoftRestaurant 2012 SISTEMA DE ADMINISTRACIÓN DE BARES Y RESTAURANTES SOFTRESTAURANT Versión 8.0 National Soft de México Configuración de Facturación
Más detallesManual de Usuario para el Portal de Contribuyentes
Manual de Usuario para el Portal de Contribuyentes Comprobante Fiscal Digital a través de Internet (CFDI) Versión 1.0 Contenido 1 Introducción... 1 2 Acceso al portal... 1 Autenticación... 1 Ciec... 1
Más detallesELECTRONIC DOCUMENT LIBRARY
ELECTRONIC DOCUMENT LIBRARY Es conjunto de clases que permiten la generación de comprobantes fiscales digitales en sus diferentes versiones y las cuales están desarrolladas en código nativo para: Delphi
Más detallesManual de Usuario. Configuración de CFDI Comprobante Fiscal Digital por Internet PAC LunaSoft
Manual de Usuario Configuración de CFDI Comprobante Fiscal Digital por Internet PAC LunaSoft Hoja de Contenido Introducción a CFDI 3 CFDI se encuentra en el Sistema en: 4 Configuración CFDI 4 Pasos a seguir
Más detallesServicio Web para el Timbrado y Cancelación (TimbraSí)
Servicio Web para el Timbrado y Cancelación (TimbraSí) Conección con aplicaciónes.net FacturaSí 2011 S.A. de C.V., Todos los derechos reservados Configuración general del web service Para poder configurar
Más detallesRecepción de CFDIS MANUAL DE USUARIO PROVEEDOR. Weg México S.A. de C.V. http://189.254.22.113:8080/bfi
Recepción de CFDIS MANUAL DE USUARIO PROVEEDOR Weg México S.A. de C.V. http://189.254.22.113:8080/bfi INDICE 1. Cómo ingresar al Portal Web de Proveedores de Weg México S.A. de C.V.?... 3 2. Cómo obtener
Más detallesCancelación de un Comprobante Fiscal Digital
Cancelación de un Comprobante Fiscal Digital La cancelación de CFDI esta aplicada para los proceso de Notas de Crédito a clientes, Facturas a clientes y comprobantes de nomina, que se encuentren generadas
Más detallesManual de Usuario. Configuración de CFDI Comprobante Fiscal Digital por Internet PAC Forcogsa
Manual de Usuario Configuración de CFDI Comprobante Fiscal Digital por Internet PAC Forcogsa Hoja de Contenido Introducción a CFDI 3 CFDI se encuentra en el Sistema en: 4 Configuración CFDI 4 Pasos a seguir
Más detallesManual de Usuario. Guía rápida
Manual de Usuario Guía rápida ÍNDICE Instalación de sistema 2 Usuario y Contraseña de XPD 4 Componentes que integran el sistema Configuración de Emisor 5 Datos Fiscales Lugar de Expedición Regímenes Comprobantes
Más detallesConsultoría de D I S P O N I B L E S. Soluciones en Facturación electrónica. Desarrollo de Software Windows/Web
D I S P O N I B L E S Soluciones en Facturación electrónica Desarrollo de Software Windows/Web Desarrollo de portales corporativos y sitios Web Presencia y posicionamiento en internet Consultoría de Tecnología
Más detallesRV FACTURA ELECTRÓNICA WEB
2014 Real Virtual SA de CV Gustavo Arizmendi Fernández RV FACTURA ELECTRÓNICA WEB Manual de usuario de RV Factura Electrónica Web. INDICE INTRODUCCIÓN... 3 REQUISITOS DEL SISTEMA... 4 HARDWARE... 4 SOFTWARE...
Más detallesWEB SERVICE FACTORUMCFDISERVICE
WEB SERVICE FACTORUMCFDISERVICE HOME FactorumCFDiService es la plataforma web service de Factorum para generar los Comprobantes Fiscales Digitales (CFDi) y obtener el código bidimensional (QRCode), a través
Más detallesCONEXIÓN REMOTA CFDI. www.fel.mx Proveedor autorizado de certificación SAT Número de aprobación: 55029
CONEXIÓN REMOTA CFDI www.fel.mx Proveedor autorizado de certificación SAT Número de aprobación: 55029 Qué es la conexión remota? Es la capacidad de una computadora y un ERP de poderse comunicar con una
Más detallesSFacil FACTURA-E en LINEA Versión en Línea MANUAL DEL USUARIO
Versión en Línea MANUAL DEL USUARIO Página Web http://www.sfacilenlinea.com 1 Contenido Página Principal... 3 Datos de la Empresa... 4 Parámetros de Funcionamiento... 5 Alianzas PAC*... 6 Control de Sellos...
Más detallesGuía Documentos Tributarios Electrónicos en organismos públicos
Guía Documentos Tributarios Electrónicos en organismos públicos Mayo 2012 2 Introducción El sistema para la gestión de Documentos Tributarios Electrónicos (DTE) en organismos públicos, es una aplicación
Más detallesWeb Service INSIGNA. Página 1
Web Service INSIGNA Página 1 Contenido 1. Introducción... 5 1.1. Tipos de CFDI... 5 2. Funcionalidad del Web Service... 5 2.1. Timbrado de CFDI... 5 2.1.1. Datos de entrada... 6 2.1.2. Estructura de petición
Más detallesEsquema de Facturación 2012. Facturación electrónica y en papel
Esquema de Facturación 2012 Facturación electrónica y en papel Febrero de 2012 Contenido 1. Antecedentes y conceptos 2. Facturación electrónica i. Modelo. ii. Modelo 2012. 3. Servicio de Verificación de
Más detallesScript de pruebas para generar timbre fiscal digital
Script de pruebas para generar timbre fiscal digital Pre-requisitos: 1. Aplicar el patch que proporciona la funcionalidad de la rutina Generación de Timbres Fiscales, utilice el archivo correspondiente
Más detallesHOJA INFORMATIVA. Implementación Sellos Digitales para el ingreso a la Ventanilla Única
HOJA INFORMATIVA Implementación Sellos Digitales para el ingreso a la Ventanilla Única Las personas morales que cuenten con un certificado de firma electrónica avanzada vigente, podrán tramitar la obtención
Más detallesFRAMEWORK 2 Creación de Servicios Web
Creación de Versión 1.1 Área de Aplicaciones Especiales y Arquitectura de Software Página 1 de 21 Hoja de Control Título Documento Referencia Responsable de Creación de Área de Aplicaciones Especiales
Más detallesManual Portal de Proveedores Agosto, 2015
Manual Portal de Proveedores Agosto, 2015 Página 1 de 14 Tabla de Contenido Tabla de Contenido 2 Introducción 3 Manual de Portal de Proveedor 4 1. Menú Principal 4 1.1 Aviso de privacidad 4 1.2 Verificar
Más detallesManual de la aplicación WEB. Versión: 1.0.2
Manual de la aplicación WEB Versión: 1.0.2 Fecha: 17/11/2015 Índice de contenido Registrar a contribuyente...3 Ingreso a la aplicación web...4 Ajustes del sistema...4 Datos del contribuyente...6 Certificados...7
Más detallesCFDI Facturación Electrónica
CFDI Facturación Electrónica Emisión de Factura Electrónica CFDI en SAP La integración de la factura electrónica les permite obtener los máximos beneficios de SAP ECC, ADC integra la emisión del Comprobante
Más detallesTUTORIAL PARA INGRESAR FACTURAS DE PROVEEDORES. Fecha de realización: Febrero 2015
1. OBJETIVO 1.1. Recibir facturas de proveedores a través de un portal web. 2. OBJETIVOS ESPECIFICOS O PARTICULARES 2.1. Valida que el RFC del Emisor corresponda al RFC ingresado en el formulario. 2.2.
Más detallesManual de usuario. Facturación Electrónica por Internet CFD-I. EdifactMx Free EMISION GRATUITA. Versión 3.0
Manual de usuario Facturación Electrónica por Internet CFD-I Versión 3.0 EdifactMx Free EMISION GRATUITA 0 INDICE MANUAL EDIFACTMX FREE CARATULA PRINCIPAL---------------------------------------------------------------
Más detallesDCISERVICIOS, SA DE CV
DCISERVICIOS, SA DE CV MANUAL DE OPERACIÓN WEB. PERFIL ADMINISTRADOR. SISTEMA DE FACTURACIÓN ELECTRÓNICA PARA GENERACIÓN DE CFDI Enlace para accesar al sistema de facturación electrónica y generación de
Más detallesManual de Usuario Comprador Módulo de Compras
Manual de Usuario Comprador Módulo de Compras Descripción General El módulo de Compras es un medio confiable, cómodo y de fácil manejo para gestionar sus adquisiciones. Este servicio permite desarrollar
Más detallesManual de Usuario. www.factorum.com.mx Allende 115-1, Col Centro, C.P. 86000, Villahermosa, Tabasco
Manual de Usuario INDICE 1. Acceso al Sistema 1.1.Firma Electrónica del Contrato 1.2.Paso 1: Razón Social 1.3.Paso 2: Alta de Sello Digital Matriz 1.4.Paso 3: Alta de productos 1.5.Alta de Logotipo 2.
Más detallesAplicación gratuita para la Generación y Certificación de CFDI
Aplicación gratuita para la Generación y Certificación de CFDI 1 MANUAL DE USUARIO Contenido Descripción... 3 Requerimientos mínimos... 3 Registro... 3 Ingreso al sistema... 3 Registro de CSD... 5 Datos
Más detallesCREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx
CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx En este documento explicaré brevemente cómo construir un servicio web con Java Axis2 y cómo invocarlo desde un cliente
Más detallesEspecificación WebService para:
Especificación WebService para: Bandeja de salida Carga masiva Consulta de reportes Bogotá, Diciembre 2010 Modelo Unico de Ingresos, Servicio y Control Automatizado Contenido Procedimiento y Especificación
Más detallesMANUAL DE USUARIO. EMISIÓN DE CFDIs AZENTA
MANUAL DE USUARIO EMISIÓN DE CFDIs AZENTA 1 Introducción... 3 Objetivo del Manual.... 3 Especificaciones Técnicas.... 3 1. CFDIs... 4 1.1. Factura.... 4 1.1.1. Datos del emisor... 4 1.1.2. Cliente... 6
Más detalles.Manual de Proveedores e-factura Buzón
.Manual de Proveedores e-factura Buzón Bosques de Duraznos 75-1103 Col. Bosques de las Lomas 11700 México, D.F. Doc. ID: Doc. Version: 1.0 Classification: Business Use Only Phone. 5245 7093 // 5887 3517
Más detallesGUÍA DE IMPLEMENTACIÓN ADDENDA SANOFI
GUÍA DE IMPLEMENTACIÓN ADDENDA SANOFI 1. Proceso de Comercio Electrónico con transacciones y plantillas 2. Requisitos 3. Administrador 2000 3.1. Configuración: 3.1.1. Parámetros de la Empresa. 3.1.2. Catálogos
Más detallesConfiguración de CFDI
Nombre del Podcast: PodCast 05-2013 Tema: Configuración de CFDI en los sistemas Microsip. Objetivos: URL de los archivos: Mostrar cómo se configura el esquema CFDI en cada uno de los sistemas correspondientes
Más detallesMANUAL DE USUARIO SICVECA DESKTOP. Código: R-02-I-IF-312 Versión: 1.0 1 de 19 SICVECA DESKTOP. Manual de Usuario Versión 1.0.
Código: R-02-I-IF-312 Versión: 1.0 1 de 19 Manual de Usuario Versión 1.0 Página 1 Código: R-02-I-IF-312 Versión: 1.0 2 de 19 Tabla de Contenido Descripción General del Sistema... 3 Pasos iniciales... 3
Más detallesGUÍA DE FACTURACIÓN. Índice. 2. Configuración. Se realiza una sola vez Datos de la empresa Definición de IVA. De clic en los temas color azul
GUÍA DE FACTURACIÓN Índice De clic en los temas color azul Factura rápida Todos los temas de facturación 1. Trámite externo. Se realiza una sola vez Trámite en el SAT Relación con el PAC 2. Configuración.
Más detallesWeb Service INSIGNA. Página 1
Web Service INSIGNA Página 1 Contenido 1. Introducción... 5 1.1 Tipos de CFDI... 5 2. Funcionalidad del Web Service... 5 2.1 Timbrado de CFDI... 5 2.1.1 Datos de entrada... 6 2.1.2 Estructura de petición
Más detallesNombre SITE para generación de CFDI en PAC - Bancomer. Fecha Última Actualización 05/02/2016 INTRODUCCIÓN... 2
Ámbito Aplicación Creado por José Luis Aguilar Escamilla Nombre SITE para generación de CFDI en PAC - Bancomer Fecha Última Actualización 05/02/2016 Nº de versión País 1.5 México INTRODUCCIÓN... 2 DESCRIPCIÓN
Más detallesManual Portal Proveedores (Proveedores)
Manual Portal Proveedores (Proveedores) Autor: Ivan Orlando Fierro Ramos Fecha Actualización: 20/10/2015 Página 1 de 17 Contenido MANUAL DE USUARIO PORTAL DE PROVEEDORES... 3 Descripción de iconos... 3
Más detallesManual para la obtención del certificado del sello digital. Manual para la obtención del certificado del sello digital
Manual para la obtención del certificado del sello digital Manual para la obtención del certificado del sello digital. 1. Introducción 1.1. Objetivo. El objetivo de este documento es proporcionarle al
Más detallesSISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública
JEFATURA DE GABINETE DE MINISTROS SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública Manual para los Organismos Índice Índice... 2 Descripción... 3 Cómo solicitar la intervención
Más detallesGeneración de CFDI con Aspel-CAJA 3.5 en renta (Todo Incluido).
Generación de CFDI con Aspel-CAJA 3.5 en renta (Todo Incluido). Para generar Comprobantes Fiscal Digital por Internet (CFDI) con Aspel-CAJA 3.5 contratado en renta con la modalidad de Todo Incluido, realiza
Más detallesGuía Facturación Electrónica
Objetivo El objetivo de éste documento consiste en presentar una guía a seguir para comenzar con la facturación electrónica, desde adquirir el servicio de timbrado hasta la parte de configuración en el
Más detallesGuía para solicitar el Certificado de Sello Digital (CSD)
Guía para solicitar el Certificado de Sello Digital (CSD) Introducción Un Certificado de Sello Digital es un archivo con extensión.cer que asocia una clave pública con la identidad de su propietario. Contiene
Más detallesIntroducción Descripción del servicio
507953 1 Contenido Contenido Cambios Introducción Descripción del servicio Introducción Arquitectura Paso a paso Capa de negocio Adapter Interface Service Proxy Fichero de propiedades Despliegue del servicio
Más detallesGuía del Usuario CER-Factur@
Derechos Reservados Certif@c 2012 Versión 2.0 La presente Guía del Usuario fue elaborada como una herramienta de apoyo para los usuarios del sistema de facturación electrónica CER-Factur@ y se considera
Más detallesINTRODUCCION... 3 INGRESO AL SISTEMA... 4 PROFESIONAL... 6 PUBLICO EN GENERAL... 7. 1 - NUEVOS USUARIOS... 10 Ejemplo: Ingreso de Profesional...
IND I C E INTRODUCCION... 3 INGRESO AL SISTEMA... 4 PROFESIONAL... 6 PUBLICO EN GENERAL... 7 1 - NUEVOS USUARIOS... 10 Ejemplo: Ingreso de Profesional... 11 2 - USUARIOS REGISTRADOS... 13 Ejemplo 1: Actualización
Más detallesPortal INAPI INAPI Conecta Instructivo de Gestión en Sitio Web
Organización: INAPI Portal INAPI INAPI Conecta Instructivo de Gestión en Sitio Web Perfil: Vendedor Versión: 1.0 Año 2016 Tabla de Contenidos 1. Introducción... 3 2. Creación de Cuenta Perfil Vendedor...
Más detallesMANUAL DE USUARIO CFD a CFDI
MANUAL DE USUARIO CFD a CFDI Herramienta para la Conversión de archivos XML de CFD a CFDI CAPITULO 1 INTRODUCCIÓN 2 Introducción La herramienta CFD a CFDI ofrece una solución completa y de fácil utilización
Más detallesP/. Factura Electrónica D/. Manual de Usuario Proveedores
Control documental Versión del Fecha Autor Modificaciones/Comentarios documento 1.0 10/02/2011 Diputación de Teruel Versión inicial del documento 1.1 05/04/2011 Diputación de Teruel Revisado estilo 1.2
Más detallesGUIA RÁPIDA PARA REGISTRO DE
GUIA RÁPIDA PARA REGISTRO DE RÁPIDO, FÁCIL Y CONFIABLE GUIA PARA EL REGISTRO ANTE RFC.mx Para empezar. Si usted ha adquirido un paquete de folios con su distribuidor autorizado, debió haber llegado a su
Más detallesInside. Gestión de Expedientes y Documentos Electrónicos
Inside Gestión de Expedientes y Documentos Electrónicos Documento de Integración Sistemas Desarrollo Versión 1.0 Fecha de revisión 25/02/2013 Realizado por Sistemas Desarrollo Inside v_1.0 / 1 ÍNDICE 1
Más detallesManual de Usuario. Factura Electrónica Bancomer
Manual de Usuario Factura Electrónica Bancomer Junio 2011 Contenido Configuraciones 2 Certificados de Sello Digital 2 Emisión 3 Clientes 3 Captura 4 Menú Administración. 7 Series y Folios. 7 Clientes.
Más detallesOBJETIVO DEL MANUAL... 3 Alta de Usuario... 5
30/05/2012 PASO A PASO OBJETIVO DEL MANUAL... 3 Alta de Usuario... 5 Paso 1 - Pagina Web... 5 Paso 2 - Alta de Usuario... 6 Paso 3 - Ingreso de Usuario... 7 Paso 4 - Cambio de Contraseña... 8 Paso 5 -
Más detallesWeb Service de Timbrado
Web Service de Timbrado Soluciones para los posibles errores en el Servicio de Timbrado(Pruebas ó Producción) dot NET Desarrollo de Sistemas V2.0 01/01/2013 El Web Service de Timbrado, hace una serie de
Más detallesTramitar Certificado de Sello Digital (CSD). Duración aprox. 72 horas o menos.
Tramitar Certificado de Sello Digital (CSD). Duración aprox. 72 horas o menos. Los certificados de sello digital son expedidos por el SAT, y para un propósito específico: Firmar digitalmente los Comprobantes
Más detallesManual del Protocolo XML-RPC de Mensajería Negocios
Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...
Más detallesFACTURA ELECTRÓNICA. WEB SERVICE MTXCAService. Manual para el Desarrollador
FACTURA ELECTRÓNICA WEB SERVICE MTXCAService Manual para el Desarrollador Contenido 1 Introducción... 1 1.1 Objetivo... 1 1.2 Alcance... 1 1.3 Tratamiento de errores Excepcionales en el WS... 2 1.4 Tratamiento
Más detallesGUÍA RÁPIDA COMPROBANTES>ADMINISTRAR
GUÍA RÁPIDA COMPROBANTES>ADMINISTRAR TIP: EN TODA LA APLICACIÓN LOS CAMPOS MARCADOS CON ASTERISCO (*) SON OBLIGATORIOS Secciones en la Pantalla Principal Sección Información General: En la parte izquierda
Más detallesBuzón de Recepción Institucional
Respuesta a Preguntas Frecuentes ACCESO Buzón de Recepción Institucional 1. Cómo ingreso al buzón de recepción? Para ingresar al Buzón de Recepción, debe de ir a la URL proporcionada por su cliente, donde
Más detallesManual de Usuario. Facturandote Corporativo Mérida, Yucatán, México www.facturandote.com
Manual de Usuario 1. Ingreso al Sistema La ruta de acceso al portal de facturación es: https://portal.facturandote.com/crm/login.jsp Inmediatamente se abrirá la pantalla para ingreso a la aplicación: 1.1.
Más detallesBuzón E Lite v1.0. Manual de Usuario Octubre, 2010
Buzón E Lite v1.0 Manual de Usuario Octubre, 2010 Contenido Bienvenido a Buzón E Lite 2 Objetivos 2 Introducción 1 3 Página de Inicio 3 Menú de Inicio 3 Registro de usuarios 4 Desbloquear/Activar cuenta
Más detallesSISTEMA DE APARTADO DE SALAS PARA EVENTOS
SISTEMA DE APARTADO DE SALAS PARA EVENTOS Dirección General de Comunicaciones e Informática Febrero 2008 1 INDICE 1. Objetivos del Sistema... 3 10. Solución de problemas... 23 2. Introducción... 4 3. Requisitos...
Más detallesModulo conexión Cliente WS DGI
Modulo conexión Cliente WS DGI El desarrollo fue echo con eclipse (eclipse-jee-kepler) utilizando herramientas Apache. De la misma forma puede hacerse con otro lenguaje que acepte estas librerias porque
Más detallesDocumentación Técnica Conector
Documentación Técnica Conector Torre Ejecutiva Sur Liniers 1324, piso 4 Montevideo Uruguay Tel/Fax: (+598) 2901.2929* Email: contacto@agesic.gub.uy www.agesic.gub.uy Indice 1 Introducción...4 2 Casos
Más detallesAntes de comenzar con este trámite es muy importante contar con los siguientes requisitos para poder llevar el trámite con éxito:
Cómo tramitar los folios para la factura electrónica Este instructivo muestra como tramitar los folios para la elaboración de facturas electrónicas en el esquema de "medios propios" disponible hasta el
Más detallesInstructivo para el uso de Mis Cuentas (Sistema de Registro Fiscal)
Página1 Instructivo para el uso de Mis Cuentas (Sistema de Registro Fiscal) Página2 Contenido 1. Introducción 2. Ingreso a la aplicación 3. Uso de los servicios de Mis Cuentas (Sistema de Registro Fiscal)
Más detallesInstrucciones de instalación de IBM SPSS Modeler (licencia concurrente)
Instrucciones de instalación de IBM SPSS Modeler (licencia concurrente) Contenido Instrucciones para la instalación.... 1 Requisitos del sistema........... 1 Instalación............... 1 Instalación desde
Más detallesMOJICA Y COMPAÑÍA, S.C.
MOJICA Y COMPAÑÍA, S.C. Diciembre 6, 2010 Circular No.15 A nuestros clientes LOS 10 ASPECTOS MÁS IMPORTANTES EN TORNO A LA FACTURACIÓN QUE SE EXPEDIRÁ DURANTE EL AÑO 2011 Con motivo de la reforma fiscal
Más detallesGuía del usuario de DocuShare Email Agent
Guía del usuario de DocuShare Email Agent Fecha de publicación: Febrero de 2011 Este documento cubre DocuShare versión 6.6.1. Preparado por: Xerox Corporation DocuShare Business Unit 3400 Hillview Avenue
Más detallesManual de Usuario FACTURA99 FACTURACIÓN. Factura99 FACTURA 99
Factura99 Manual de Usuario FACTURA99 FACTURACIÓN FACTURA 99 CONTENIDO 1 Asistente de Registro Paso a Paso... 4 1.1 Paso 1... 4 1.2 Paso 2... 5 1.3 Paso 3... 5 1.4 Paso 4... 6 1.5 Paso 5... 6 2 Tablero
Más detallesSecretaría de Salud. Subsecretaria de Innovación y Calidad. Dirección General de Calidad y Educación en Salud
Secretaría de Salud Subsecretaria de Innovación y Calidad Dirección General de Calidad y Educación en Salud Dirección General Adjunta de Calidad en Salud Dirección de Mejora de Procesos Manual de Usuario
Más detallesCertific@2 (Altas de prestaciones por ERE S): guía para las empresas
Certific@2 (Altas de prestaciones por ERE S): guía para las empresas Servicio Público de Empleo Estatal Madrid, Octubre - 2011 Índice Qué es y recepción de las altas de trabajadores por ERE S Acceso a
Más detallesFacturación Electrónica CBB, CFD y CFDI
Facturación Electrónica CBB, CFD y CFDI Índice Qué es factura electrónica?... 1 Tipos de Factura Electrónica... 1 Qué es la factura con Código Bidimensional o CBB?... 1 Qué es CFD?... 1 Qué es CFDI?...
Más detallesEmite CFDI con la app de Aspel-FACTURe móvil Windows 8
Emite CFDI con la app de Aspel-FACTURe móvil Windows 8 Aspel-FACTURe Móvil genera Comprobantes Fiscales Digitales por Internet (CFDI) a través de una aplicación Web. Para generar comprobantes, se deben
Más detallesUsos de la Firma Electrónica en México
Usos de la Firma Electrónica en México A pesar de que la firma electrónica es relativamente nueva y su regulación aun no es la adecuada en nuestro país existen varias formas de usarla. En el artículo 17D
Más detallesManual de Distribuidor MiContador.MX
Manual de Distribuidor MiContador.MX Revisión Noviembre de 2015 Documento que contiene el manual de Distribuidor para la solución Mi Contador facturación electrónica CFDI 3.2 del SAT en México. Contenido
Más detalles.NET Framework 3.5 Visual Studio Express 2008 Tabla 1 Requerimientos de Software
Tutorial: Consumir un servicio sincrónico de la PGE Autor: Guzmán Llambías Primera versión: 15 de noviembre, 2010 Última actualización: 29 de noviembre, 2010 Objetivo El objetivo de este tutorial es proveer
Más detallesTabla de contenido. Manual B1 Time Task
Tabla de contenido Introducción... 2 Configuración... 2 Prerrequisitos... 2 Configuración de la tarea... 2 Configurando las horas estándar de trabajo... 3 Datos maestros de empleados... 4 Utilización...
Más detallesGuía del usuario. Manual para la migración al nuevo esquema CFDI versión 3.2 en Facture APP Revisión 1.0 Junio del 2012.
Manual para la migración al nuevo esquema CFDI versión 3.2 en Facture APP Revisión 1.0 Junio del 2012. Este documento presenta los pasos a seguir dentro de Facture APP para migrar a la versión 3.2 de los
Más detallesNuevo Esquema de Emisión de Comprobantes Electrónicos
Nuevo Esquema de Emisión de Comprobantes Electrónicos Nuevo Esquema de Emisión de Comprobantes Electrónicos Misión.- - Reducir los costos para la ciudadanía en la gestión de los procesos de facturación.
Más detallesall: doctrine: class: sfdoctrinedatabase param: dsn: mysql:host=localhost;dbname= bdd_erhaj username: erhaj password: admin
MANUAL TÉCNICO Creado el proyecto podemos hacer uso de los comandos, para lo cual presionamos clic derecho sobre el proyecto, escogemos Symfony, seguidamente pulsamos sobre Run Command. Esto abrirá una
Más detallesAspel- 2.0. Índice: Beneficios Requerimientos Técnicos Características Instalación Configuración Funcionamiento
2.0 Índice: Beneficios Requerimientos Técnicos Características Instalación Configuración Funcionamiento 2.0 Aspel-FACTURe 2.0 es un sistema dirigido a personas físicas y morales que no poseen una solución
Más detallesFACTURACIÓN ELECTRÓNICA
FACTURACIÓN ELECTRÓNICA INTRODUCCIÓN Esta presentación esta diseñada con el objetivo que, nuestros clientes, tengan el conocimiento y la herramienta necesaria para cumplir con el nuevo requisito de emitir
Más detallesConsulta o Recupera una Factura Electrónica CFDI
Consulta o Recupera una Factura Electrónica CFDI Consulta o Recupera una Factura Electrónica CFDI Este manual muestra el proceso para consultar, ver el detalle o recuperar una Factura Electrónica (CFDI).
Más detallesRESERVACIONES ONLINE MANUAL DE REFERENCIA
MÓDULO RESERVACIONES ONLINE Versión 3.0 MANUAL DE REFERENCIA National Soft de México INDICE GENERAL 1. INTRODUCCIÓN... 4 1.1. ANTES DE COMENZAR... 4 2. REGISTRO AL SERVICIO... 5 2.1. CREACIÓN DE SU CUENTA
Más detallesManual de Usuario Portal Privado
Factura Electrónica (CFDI) Servicio de Administración Tributaria (SAT) Contenido 1 Introducción... 1 2 Roles... 1 3 Acceso al portal... 1 Autenticación CIEC... 1 Autenticación FIEL... 2 Servicio de Generación
Más detallesTienda Virtual Synergy (Parte 2)
Tienda Virtual Synergy (Parte 2) El catálogo electrónico de productos es la base de toda la aplicación por lo que siempre será necesario instalarlo. Los siguientes dos módulos (tienda virtual y módulo
Más detallesCrear el directorio donde almacenaremos los archivos del trámite
Como tramitar mi certificado de sello digital Instructivo paso a paso para obtener el certificado de sello digital ante el SAT. Reunir todos los requisitos para el trámite Primero, hay que asegurarse que
Más detallesPortal de Proveedores Grupo Gigante Manual de proveedor
Manual de proveedor Título del documento: Portal de Proveedores Grupo Gigante Nombre del fichero: Manual_proveedores_Gigante.odt Versión: 1 Estado: VIGENTE Fecha: 11/10/12 Autor: Fermín Hernández Revisión,
Más detalles