Le ofrecemos una API en JAVA muy sencilla para que pueda integrarse rápidamente a nuestro servicio de timbrado y cancelación, adaptada para ambas versiones 3.3 y 4.0
¿Qué es?
Es una Interfaz de Programación de Aplicaciones (del inglés API: Application Programming Interface) en JAVA que te permite interactuar con nuestros servicios.
Para poder timbrar los CFDI, primero se necesitan firmarlos utilizando los certificados (CSDs) emitidos por el SAT, con cualquiera de los siguientes métodos permitirá firmar los xml, los cuales regresarán un String con el xml firmado, para posteriormente poder enviarlos a nuestro servicio de timbrado.
Nombre | Tipo de dato | Descripción | Tipo de parámetro |
---|---|---|---|
xml | String | String con el XML del CFDI que desea timbrar. | Entrada |
certificate | File | String Base64 | bytes[ ] | Certificado público del emisor. | Entrada |
privateKey | File | String Base64 | bytes[ ] | Llave privada del emisor. | Entrada |
privateKeyPassword | String | Contraseña de la llave privada del emisor. | Entrada |
Certificados como File
String signedXml = UtilSignature.signInvoice(xml, certificateFile, privateKeyFile, privateKeyPassword);
Certificados como String de Base64
String signedXml = UtilSignature.signInvoice(xml, certificateB64, privateKeyB64, privateKeyPassword);
Certificados como un Array de bytes
String signedXml = UtilSignature.signInvoice(xml, certificateBytes, privateKeyBytes, privateKeyPassword);
Para enviar a timbrar el CFDI previamente firmado, serán necesarios los siguientes parámetros:
Nombre | Tipo de dato | Descripción | Tipo de parámetro |
---|---|---|---|
signedXml | String | String con el XML sellado del CFDI que desea timbrar. | Entrada |
username | String | Username o Alias del servicio de timbrado. | Entrada |
password | String | Contraseña correspondiente al usuario de timbrado. | Entrada |
url | String | La url indica a que entorno seráa enviado los parametros(pruebas o producción) | Entrada |
com.forsedi.cfdi.ws.timbrado.AcuseCFDI acuse = Invoice.send(signedXml, username, password, String url);
El método anterior regresa un objeto de tipo Acuse, con la respuesta recibida por el servicio de timbrado.
Nombre | Tipo de dato | Descripción | Tipo de parámetro |
---|---|---|---|
xmlTimbrado | String | CFDI validado y timbrado en caso de que la respuesta sea exitosa. | Salida |
codigoError | String | Código de error. | Salida |
error | String | Mensaje para orientar sobre la causa del error. | Salida |
Para solicitar la cancelación de uno o varios CFDI, es necesario construir un Objeto SignatureType, que sirve para verificar la integridad de la información de manera segura.
Nombre | Tipo de dato | Descripción | Tipo de parámetro |
---|---|---|---|
rfcEmisor | String | RFC emisor de los CFDIs a cancelar. | Entrada |
cancellationDate | String | Fecha con formato yyyy-MM-ddTHH:mm:ss | Entrada |
folios | List<Folio> | Lista de objetos tipo Folio. | Entrada |
certificate | File | String Base64 | bytes[ ] | Certificado público del emisor. | Entrada |
privateKey | File | String Base64 | bytes[ ] | Llave privada del emisor. | Entrada |
privateKeyPassword | String | Contraseña de la llave privada del emisor. | Entrada |
Certificados como File
com.forsedi.cfdi.ws.cancelacion.SignatureType signatureType = UtilSignature.getCancellationSignatureType(rfcEmisor, cancellationDate, folios, fileCertificate, filePrivateKey, privateKeyPassword);
Certificados como String de Base64
com.forsedi.cfdi.ws.cancelacion.SignatureType signatureType = UtilSignature.getCancellationSignatureType(rfcEmisor, cancellationDate, folios, certificateB64, privateKeyB64, privateKeyPassword);
Certificados como un Array de bytes
com.forsedi.cfdi.ws.cancelacion.SignatureType signatureType = UtilSignature.getCancellationSignatureType(rfcEmisor, cancellationDate, folios, certificateBytes, privateKeyBytes, privateKeyPassword);
Para enviar solicitud de cancelación del listado de CFDIs, serán necesarios los siguientes parámetros:
Nombre | Tipo de dato | Descripción | Tipo de parámetro |
---|---|---|---|
rfcEmisor | String | RFC emisor de los CFDIs a cancelar. | Entrada |
cancellationDate | String | Fecha con formato yyyy-MM-ddTHH:mm:ss | Entrada |
folios | List<Folio> | Lista de objetos tipo Folio. | Entrada |
signatureType | SignatureType | Objeto con la información firmada de la solicitud. | Entrada |
USERNAME | String | Username o Alias del servicio de timbrado. | Entrada |
USERNAME_PASSWORD | String | Contraseña correspondiente al usuario de timbrado. | Entrada |
url | String | url que indica a que ambiente establacerá la conexión (Pruebas o Producción) | Entrada |
com.forsedi.cfdi.ws.cancelacion.v40.WsCancelacionResponse response = Invoice.sendCancelation(rfcEmisor, cancellationDate, folios, signatureType, USERNAME, USERNAME_PASSWORD, url);
Nombre | Tipo de dato | Descripción | Tipo de parámetro |
---|---|---|---|
acuse | String | Acuse con la respuesta recibida por parte del SAT. | Salida |
codEstatus | String | Código de estatus de la solicitud. | Salida |
mensaje | String | Mensaje informativo sobre la solicitud. | Salida |
folios | WsFoliosResponse | Objeto que contiene el listado de UUIDs y las respuestas correspondientes a cada uno. | Salida |
Método que permite obtener información sobre el estatus del CFDI. Para hacer uso del método unicamente hay que pasarle como parametro el xml en un String.
Nombre | Tipo de datos | Descripción | Tipo de parámetro |
---|---|---|---|
xml | String | Comprobante Fiscal Digital (CFDI) | Entrada |
com.forsedi.cfdi.ws.sat.consultaqr.Acuse acuse = Invoice.consulta(xml);
Este método, regresará un Objeto de tipo Acuse, con la respuesta recibida por el servicio de cancelación.
Nombre | Tipo de datos | Descripción | Tipo de parametro |
---|---|---|---|
CodigoEstatus | String | Permite saber cual es el estatus actual del CFDI. | Salida |
esCancelable | String | Indica si el CFDI es cancelable o no. | Salida |
estado | String | Permite conocer el estado en el que se encuentra el CFDI, (Vigente,Cancelado) | Salida |
validacionEFOS | String | Permite conocer el codigo en el que se encuentra tanto el RFC del emisor como del receptor. | Salida |