Skip to content

Librería para el consumo de los servicios de SmarterWeb a través de Java. Requiere versión de Java 1.6 o superior.

Notifications You must be signed in to change notification settings

RobertoFranco/sw-sdk-java

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smarter Web

SDK JAVA

Registrate en sw.com.mx

Requirementos

Java 1.6 o superior

Dependencias

Instalación

Descargas el modulo mediante Maven:

<dependencies>

        <dependency>
            <groupId>mx.com.sw.services</groupId>
            <artifactId>SW-JAVA</artifactId>

            <version>0.0.4.1</version>

        </dependency>
</dependencies>

Instalación manual (sin Maven)

Descargar el modulo directamente de los siguientes links:

Asi como instalar manualmente cada una de las dependencias:

Alternativamente tambien se cuenta con un archivo JAR en el que se incluyen todas las dependencias, este se encuentra en la carpeta Relase Github, con el sufijo "jar-with-dependencies.jar"

Timbrar XML

try{
	//Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Si deseas utilizar un proxy customizado, debes agregar dos parametros mas
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV1Response)sdk.Stamp("String o File XML","v1");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // tfd: El campo donde se encuentra el timbre fiscal digital
    if(response.Status.equals("success")){
	    System.out.println(response.Status);
        System.out.println(response.HttpStatusCode);
        System.out.println(response.tfd);
    }
    else{
	    //En caso de obtener estatus "fail", "error"
        //Se puede identificar el error en los campos message, messageDetail
        System.out.println(response.message);
        System.out.println(response.messageDetail);
        // ***Como observacion***
        //El campo messageDetail puede no incluirse en ciertos errores                        
    }
}
catch(Exception e){
	System.out.println(e.getMessage());
}
            

Timbrar CFDI V1

TimbrarV1 Recibe el contenido de un XML ya emitido (sellado) en formato String ó tambien puede ser en Base64, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD), en caso contrario lanza una excepción.

Timbrar XML en formato string utilizando usuario y contraseña

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV1Response) sdk.Stamp(stringXML, "v1");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor
    //En este caso arrojara el complemento timbre: {"tfd":"<Complemento>"}
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar XML en formato string utilizando token

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService("T2lYQ0t4L0R....", "http://services.test.sw.com.mx");
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV1Response) sdk.Stamp(stringXML, "v1");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor
    //En este caso arrojara el complemento timbre: {"tfd":"<Complemento>"}
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar CFDI V2

TimbrarV2 Recibe el contenido de un XML ya emitido (sellado) en formato String , posteriormente si la factura y el token son correctos devuelve el CFDI ya tibrado, en caso contrario lanza una excepción.

Timbrar XML en formato string utilizando usuario y contraseña

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV2Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV2Response) sdk.Stamp(stringXML, "v2");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor

    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar XML en formato string utilizando token

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService("T2lYQ0t4L0R....", "http://services.test.sw.com.mx");
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV2Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV2Response) sdk.Stamp(stringXML, "v2");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor

    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar CFDI V3

TimbrarV3 Recibe el contenido de un XML ya emitido (sellado) en formato String , posteriormente si la factura y el token son correctos devuelve el CFDI ya tibrado, en caso contrario lanza una excepción.

Timbrar XML en formato string utilizando usuario y contraseña

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV3Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV3Response) sdk.Stamp(stringXML, "v3");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor

    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);

    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar XML en formato string utilizando token

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService("T2lYQ0t4L0R....", "http://services.test.sw.com.mx");
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV3Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV3Response) sdk.Stamp(stringXML, "v3");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor

    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar CFDI V4

TimbrarV4 Recibe el contenido de un XML ya emitido (sellado) en formato String , posteriormente si la factura y el token son correctos devuelve el cfdi ya timbrado, y campos extras como qr en formato base64, entre otros.

Timbrar XML en formato string utilizando usuario y contraseña

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV4Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV4Response) sdk.Stamp(stringXML, "v4");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor

    System.out.println(response.message);
    System.out.println(response.Status);
    System.out.println(response.cfdi);
    System.out.println(response.qrCode);
    System.out.println(response.cadenaOriginalSAT);
    System.out.println(response.selloCFDI);
    System.out.println(response.selloSAT);
    System.out.println(response.noCertificadoCFDI);
    System.out.println(response.noCertificadoSAT);
    System.out.println(response.fechaTimbrado);
    System.out.println(response.uuid);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar XML en formato string utilizando token

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWStampService sdk = new SWStampService("T2lYQ0t4L0R....", "http://services.test.sw.com.mx");
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV4Response response = null;
    //Se asigna el resultado de la respuesta a dicho objeto
    //Se ejecuta el metodo "Stamp", que timbrara nuestro comprobante posteriormente sellado, asi como la versión del servicio de timbrado,
    //puede ver mas de estas versiones en el apartado "Versiones de timbrado"
    response = (SuccessV4Response) sdk.Stamp(stringXML, "v4");
    //El objeto response tendra así los atributos:
    // Status: estado de la petición procesada, puede ser : "success", "fail", "error"
    // HttpStatusCode: Codigo de respuesta HTTP del servidor: eg. 200, 400, 500
    // Data: Cuerpo de la respuesta que arroja el servidor

    System.out.println(response.message);
    System.out.println(response.Status);
    System.out.println(response.qrCode);
    System.out.println(response.cadenaOriginalSAT);
    System.out.println(response.selloCFDI);
    System.out.println(response.selloSAT);
    System.out.println(response.noCertificadoCFDI);
    System.out.println(response.noCertificadoSAT);
    System.out.println(response.fechaTimbrado);
    System.out.println(response.uuid);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar Json

Métodos mediante los cuales se envía un string o byte array de un JSON.

Timbrar Json v1

Recibe un String o byte array del JSON. Retorna TFD de la factura. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueJson(stringJson, "v1");
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar Json v2

Recibe un String o byte array del JSON. Retorna TFD y el CFDI. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueJson(stringJson, "v2");
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar Json v3

Recibe un String o byte array del JSON. Retorna CFDI y el TFD ya unidos. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueJson(stringJson, "v3");
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Timbrar Json v4

Recibe un String o byte array del JSON. Retorna CFDI, TFD, CadenaOriginal, noCertificadoSat, noCertificadoCFDI, UUID, selloSAT, selloCFDI, fechaTimbrado y QR. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueJson(stringJson, "v4");
    System.out.println(response.Status);
	System.out.println(response.cfdi);
	System.out.println(response.qrCode);
	System.out.println(response.cadenaOriginalSAT);
	System.out.println(response.selloCFDI);
	System.out.println(response.selloSAT);
	System.out.println(response.noCertificadoCFDI);
	System.out.println(response.noCertificadoSAT);
	System.out.println(response.fechaTimbrado);
	System.out.println(response.uuid);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Emisión Timbrado XML

Métodos mediante los cuales se envía un XML sin sellar.

Emisión Timbrado v1

Recibe un String o byte array del XML. Retorna TFD de la factura. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueXml(stringXml, "v1");
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Emisión Timbrado v2

Recibe un String o byte array del XML. Retorna TFD y el CFDI. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueXml(stringXml, "v2");
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.tfd);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Emisión Timbrado v3

Recibe un String o byte array del XML. Retorna CFDI y el TFD ya unidos. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueXml(stringXml, "v3");
    System.out.println(response.Status);
    System.out.println(response.HttpStatusCode);
    System.out.println(response.cfdi);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Emisión Timbrado v4

Recibe un String o byte array del XML. Retorna CFDI, TFD, CadenaOriginal, noCertificadoSat, noCertificadoCFDI, UUID, selloSAT, selloCFDI, fechaTimbrado y QR. Ejemplo de uso

try {
    //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso
    //Se especifica el base path, esto para consumir el api de pruebas o productivo
    SWIssueService api = new SWIssueService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
    //Se inicializa un objeto response, que obtendra la respuesta del api
    SuccessV1Response response = null;
    response = (SuccessV1Response) api.IssueXml(stringXml, "v4");
    System.out.println(response.Status);
	System.out.println(response.cfdi);
	System.out.println(response.qrCode);
	System.out.println(response.cadenaOriginalSAT);
	System.out.println(response.selloCFDI);
	System.out.println(response.selloSAT);
	System.out.println(response.noCertificadoCFDI);
	System.out.println(response.noCertificadoSAT);
	System.out.println(response.fechaTimbrado);
	System.out.println(response.uuid);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Cancelación

Cancelacion CSD

Recibe los archivos CSD y KEY en Base64, password, asi como el rfc emisor y el UUID del CFDI a cancelar

SWCancelationService app = new SWCancelationService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CancelationResponse response = null;
response = (CancelationResponse) app.Cancelation(uuid, password_csd, rfc, b64Cer, b64Key);

System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.acuse);
System.out.println(response.uuid);
System.out.println(response.uuidStatusCode);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Cancelación XML

Recibe el XML de cancelacion

SWCancelationService app = new SWCancelationService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CancelationResponse response = null;

response = (CancelationResponse) app.Cancelation(xml);

System.out.println(response.Status);
System.out.println(response.message);
System.out.println(response.HttpStatusCode);
System.out.println(response.acuse);
System.out.println(response.uuid);
System.out.println(response.uuidStatusCode);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail);  

Cancelacion Pfx

Recibe el Pfx (.pfx, password), asi como el rfc emisor y el UUID del CFDI a cancelar

SWCancelationService app = new SWCancelationService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CancelationResponse response = null;
response = (CancelationResponse) app.Cancelation(uuid, password_csd, rfc, b64Pfx);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.acuse);
System.out.println(response.uuid);
System.out.println(response.uuidStatusCode);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail);  

Cancelacion Uuid

Recibe el rfc emisor y el UUID del CFDI a cancelar (Los archivos .Cer y .Key deben estar en tu administrador de timbres).

SWCancelationService app = new SWCancelationService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CancelationResponse response = null;
response = (CancelationResponse) app.Cancelation(uuid, rfc);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.acuse);
System.out.println(response.uuid);
System.out.println(response.uuidStatusCode);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail); 

Validación

Validación Xml

Recibe el Xml del CFDI a validar.

La respuesta vendrá representada con datos planos y un par de listas anidadas. Para obtener la información de las mismas se iterará.

Ejemplo de uso

SWValidateService api = new SWValidateService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
ValidateXmlResponse response = null;
response = (ValidateXmlResponse) api.ValidateXml(xml);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.message);
LinkedList <DetailNode> List = response.detail;
for (int i = 0; i < List.size(); i++) {
    DetailNode node = List.get(i);
    LinkedList <DetailData> ListData = node.detail;
    for (int j = 0; j < ListData.size(); j++) {
        DetailData datos = ListData.get(j);
        System.out.println("\t\t" + datos.message);
        System.out.println("\t\t" + datos.messageDetail);
        System.out.println("\t\t" + datos.type);
    }
    System.out.println("\t" + node.section);
}
System.out.println(response.cadenaOriginalComprobante);
System.out.println(response.cadenaOriginalSAT);
System.out.println(response.uuid);
System.out.println(response.statusSat);
System.out.println(response.statusCodeSat);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail); 

Validación Lco

Recibe el número de certificado a validar.

Ejemplo de uso

SWValidateService api = new SWValidateService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
ValidateLcoResponse response = null;
response = (ValidateLcoResponse) api.ValidateLco("20001000000300022815");
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.message);
System.out.println(response.noCertificado);
System.out.println(response.rfc);
System.out.println(response.validezObligaciones);
System.out.println(response.estatusCertificado);
System.out.println(response.fechaInicio);
System.out.println(response.fechaFinal);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail); 

Validación Lrfc

Recibe el rfc a validar.

Ejemplo de uso

SWValidateService api = new SWValidateService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
ValidateLrfcResponse response = null;
response = (ValidateLrfcResponse) api.ValidateLrfc("LAN7008173R5");
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.message);
System.out.println(response.contribuyenteRFC);
System.out.println(response.sncf);
System.out.println(response.subcontratacion);
//En caso de obtener un error, este puede obtenerse de los campos
System.out.println(response.message);
System.out.println(response.messageDetail); 

Consulta de Saldos

Se obtiene el balance de nuestra cuenta con respecto a los timbres

SWBalanceAccountService app = new SWBalanceAccountService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
BalanceAcctResponse response = null;
response = (BalanceAcctResponse) app.GetBalanceAccount();
System.out.println(response.Status);
System.out.println(response.timbresAsignados);
System.out.println(response.HttpStatusCode);
System.out.println(response.fechaExpiracion);
System.out.println(response.idClienteUsuario);
System.out.println(response.idSaldoCliente);
System.out.println(response.saldoTimbres);
System.out.println(response.timbresUtilizados);
System.out.println(response.unlimited);
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Status CFDI

Método necesario para conocer el estado de un CFDI a través del servicio de consulta del SAT. Será necesario conocer el RFC emisor, RFC receptor, total de la factura, y UUID de la factura que vamos a consultar. [Este servicio es consumido directamente del SAT].

StatusCfdiService app = new StatusCfdiService("https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc", "http://tempuri.org/IConsultaCFDIService/Consulta");

StatusCfdiResponse response = null;
response = (StatusCfdiResponse) app.StatusCfdi("LSO1306189R5", "LSO1306189R5", "1.16", "E0AAE6B3-43CC-4B9C-B229-7E221000E2BB");
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.codigoEstatus);
System.out.println(response.estado);
System.out.println(response.esCancelable);
System.out.println(response.estatusCancelacion);
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

CFDI Relacionados

Método necesario para conocer los CFDI relacionados que existen a una factura. Con el nuevo método de cancelación, no se podrá cancelar una factura si existen CFDI que lo relacionen.

CFDI Relacionados por CSD

Para el consumo a través de este método necesitaremos el UUID de la factura, RFC emisor, Certificado en base64, Llave en base64 y Password del Certificado.

SWRelationsService app = new SWRelationsService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CfdiRelacionadosResponse response = null;
response = (CfdiRelacionadosResponse) app.CfdiRelacionadosCSD(uuid, password_csd, rfc, b64Cer, b64Key);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.resultado);
LinkedList<RelacionData> padres = (LinkedList<RelacionData>) response.uuidsRelacionadosPadres;
if(padres != null) {
	for (int i = 0; i < padres.size(); i++) {
		RelacionData datos = padres.get(i);
		System.out.println(datos.uuid);
		System.out.println(datos.rfcEmisor);
		System.out.println(datos.rfcReceptor);
	}
}
LinkedList<RelacionData> hijos = (LinkedList<RelacionData>) response.uuidsRelacionadosHijos;
if(hijos != null) {
for (int i = 0; i < hijos.size(); i++) {
	RelacionData datos = hijos.get(i);
	System.out.println(datos.uuid);
	System.out.println(datos.rfcEmisor);
	System.out.println(datos.rfcReceptor);
	}
}
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

CFDI Relacionados por PFX

Para el consumo a través de este método necesitaremos el UUID de la factura, RFC emisor, PFX en base64 y Password del Certificado.

SWRelationsService app = new SWRelationsService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CfdiRelacionadosResponse response = null;
response = (CfdiRelacionadosResponse) app.CfdiRelacionadosPFX(uuid, password_csd, rfc, b64Pfx);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.resultado);
LinkedList < RelacionData > padres = (LinkedList < RelacionData > ) response.uuidsRelacionadosPadres;
if (padres != null) {
    for (int i = 0; i < padres.size(); i++) {
        RelacionData datos = padres.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.rfcEmisor);
        System.out.println(datos.rfcReceptor);
    }
}
LinkedList < RelacionData > hijos = (LinkedList < RelacionData > ) response.uuidsRelacionadosHijos;
if (hijos != null) {
    for (int i = 0; i < hijos.size(); i++) {
        RelacionData datos = hijos.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.rfcEmisor);
        System.out.println(datos.rfcReceptor);
    }
}
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

CFDI Relacionados por XML

Para el consumo a través de este método necesitaremos el XML.

SWRelationsService app = new SWRelationsService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CfdiRelacionadosResponse response = null;
response = (CfdiRelacionadosResponse) app.CfdiRelacionadosXML(xmlRelacionados);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.resultado);
LinkedList < RelacionData > padres = (LinkedList < RelacionData > ) response.uuidsRelacionadosPadres;
if (padres != null) {
    for (int i = 0; i < padres.size(); i++) {
        RelacionData datos = padres.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.rfcEmisor);
        System.out.println(datos.rfcReceptor);
    }
}
LinkedList < RelacionData > hijos = (LinkedList < RelacionData > ) response.uuidsRelacionadosHijos;
if (hijos != null) {
    for (int i = 0; i < hijos.size(); i++) {
        RelacionData datos = hijos.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.rfcEmisor);
        System.out.println(datos.rfcReceptor);
    }
}
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

CFDI Relacionados por UUID

Para el consumo a través de este método necesitaremos el UUID de la factura, así como el RFC del Emisor.

SWRelationsService app = new SWRelationsService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
CfdiRelacionadosResponse response = null;
response = (CfdiRelacionadosResponse) app.CfdiRelacionadosUUID(uuid, rfc);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.resultado);
LinkedList < RelacionData > padres = (LinkedList < RelacionData > ) response.uuidsRelacionadosPadres;
if (padres != null) {
    for (int i = 0; i < padres.size(); i++) {
        RelacionData datos = padres.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.rfcEmisor);
        System.out.println(datos.rfcReceptor);
    }
}
LinkedList < RelacionData > hijos = (LinkedList < RelacionData > ) response.uuidsRelacionadosHijos;
if (hijos != null) {
    for (int i = 0; i < hijos.size(); i++) {
        RelacionData datos = hijos.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.rfcEmisor);
        System.out.println(datos.rfcReceptor);
    }
}
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Consulta Pendientes por Aceptar/Rechazar

Este servicio devuelve una lista con los UUID que tiene pendientes por Aceptación/Rechazo un RFC. Para el consumo de este método necesitaremos el RFC del cual consultaremos las facturas que tiene por Aceptar/Rechazar.

SWPendingsService app = new SWPendingsService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
String rfc = "LAN7008173R5";
PendientesCancelarResponse response = null;
response = (PendientesCancelarResponse) app.PendientesPorCancelar(rfc);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.message);
System.out.println(response.CodStatus);
List < String > uuids = (LinkedList < String > ) response.UUIDS;
if (uuids != null) {
    for (int i = 0; i < uuids.size(); i++) {
        String datos = uuids.get(i);
        System.out.println(datos);
    }
}
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Aceptar/Rechazar

Método para Aceptar o Rechazar una o más facturas.

Aceptar/Rechazar CSD

Para el consumo a través de este método necesitaremos el un Map con los UUID y la acción a realizar, password del certificado, RFC emisor, certificado en base64, llave en base64.

SWAcceptRejectService app = new SWAcceptRejectService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
Map < String, String > uuids = new HashMap < String, String > ();
uuids.put("06a46e4b-b154-4c12-bb77-f9a63ed55ff2", "Aceptacion");
AceptarRechazarCancelationResponse response = null;
response = (AceptarRechazarCancelationResponse) app.AceptarRechazarCancelacionCSD(uuids, password_csd, rfc, b64Cer, b64Key);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
LinkedList < CancelationData > folios = (LinkedList < CancelationData > ) response.folios;
if (folios != null) {
    for (int i = 0; i < folios.size(); i++) {
        CancelationData datos = folios.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.estatusUUID);
        System.out.println(datos.respuesta);
    }
}
System.out.println(response.acuse);
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Aceptar/Rechazar PFX

Para el consumo a través de este método necesitaremos el un Map con los UUID y la acción a realizar, password del certificado, RFC emisor, PFX en base64.

SWAcceptRejectService app = new SWAcceptRejectService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
Map < String, String > uuids = new HashMap < String, String > ();
uuids.put("06a46e4b-b154-4c12-bb77-f9a63ed55ff2", "Aceptacion");
AceptarRechazarCancelationResponse response = null;
response = (AceptarRechazarCancelationResponse) app.AceptarRechazarCancelacionPFX(uuids, password_csd, rfc, b64Pfx);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
LinkedList < CancelationData > folios = (LinkedList < CancelationData > ) response.folios;
if (folios != null) {
    for (int i = 0; i < folios.size(); i++) {
        CancelationData datos = folios.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.estatusUUID);
        System.out.println(datos.respuesta);
    }
}
System.out.println(response.acuse);
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Aceptar/Rechazar XML

Para el consumo a través de este método necesitaremos el XML para la Aceptación/Rechazo.

SWAcceptRejectService app = new SWAcceptRejectService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
AceptarRechazarCancelationResponse response = null;
response = (AceptarRechazarCancelationResponse) app.AceptarRechazarCancelacionXML(xml);
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
List < CancelationData > folios = response.folios;
if (folios != null) {
    for (int i = 0; i < folios.size(); i++) {
        CancelationData datos = folios.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.estatusUUID);
        System.out.println(datos.respuesta);
    }
}
System.out.println(response.acuse);
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

Aceptar/Rechazar UUID

Para el consumo a través de este método necesitaremos el un String con el UUID y la acción a realizar, así como el RFC emisor.

SWAcceptRejectService app = new SWAcceptRejectService(Utils.userSW, Utils.passwordSW, Utils.urlSW);
AceptarRechazarCancelationResponse response = null;
response = (AceptarRechazarCancelationResponse) app.AceptarRechazarCancelacionUUID(uuid, rfc, "Aceptacion");//Acción → "Aceptacion" o "Rechazo"
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
LinkedList < CancelationData > folios = (LinkedList < CancelationData > ) response.folios;
if (folios != null) {
    for (int i = 0; i < folios.size(); i++) {
        CancelationData datos = folios.get(i);
        System.out.println(datos.uuid);
        System.out.println(datos.estatusUUID);
        System.out.println(datos.respuesta);
    }
}
System.out.println(response.acuse);
//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);

About

Librería para el consumo de los servicios de SmarterWeb a través de Java. Requiere versión de Java 1.6 o superior.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 79.2%
  • XSLT 20.8%