Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/SS-250 #91

Merged
merged 12 commits into from
Dec 14, 2023
177 changes: 177 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,183 @@ public class ExampleReadme {
```
</details>

# Consulta y Asignación de Timbres #
Métodos para realizar la consulta de saldo así como la asignación y eliminación de timbres a un usuario.
<details>
<summary>
Consulta de timbres
</summary>

<br>Este método recibe los siguientes parametros:
* Usuario y contraseña o Token
* Url Servicios SW

**Ejemplo de consumo de la libreria para consultar el saldo utilizando Token**

```java
package com.mycompany.examplereadme;

import Exceptions.AuthException;
import Exceptions.GeneralException;
import Services.BalanceAccount.SWBalanceAccountService;
import Utils.Responses.BalanceAccount.BalanceAcctResponse;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ExampleReadme {

public static void main(String[] args) {

try {
//Intancia del servicio de Consulta de saldo y autenticación
SWBalanceAccountService sdk = new SWBalanceAccountService("T2lYQ0t4L0R...", "https://services.test.sw.com.mx");
BalanceAcctResponse response = null;
response = (BalanceAcctResponse) sdk.GetBalanceAccount();

//Imprimimos los datos de la respuesta que se obtuvo
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);
} catch (AuthException ex) {
System.out.println(ex);
} catch (GeneralException ex) {
Logger.getLogger(ExampleReadme.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ExampleReadme.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

```
</details>

<details>
<summary>
Agregar timbres
</summary>

<br>Este método recibe los siguientes parametros:
* Usuario y contraseña o Token
* Url Servicios SW
* Url Api
* IdUser
* Número de timbres
* Comentario
* Action

**Ejemplo de consumo de la libreria para agregar timbres utilizando Token**

```java
package com.mycompany.examplereadme;

import Exceptions.AuthException;
import Exceptions.GeneralException;
import Services.BalanceAccount.SWBalanceAccountService;
import Utils.Responses.BalanceAccount.BalanceAcctResponse;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ExampleReadme {

public static void main(String[] args) {

try {
//Intancia del servicio para agregar timbres y autenticación
SWBalanceAccountService sdk = new SWBalanceAccountService("T2lYQ0t4L0R...", "http://api.test.sw.com.mx", "add");
BalanceAcctResponse response = null;
response = (BalanceAcctResponse) sdk.AddStamp("32701CF2-DC63-4370-B47D-25024C44E131", 1, "PruebaJava16");

//Imprimimos los datos de la respuesta que se obtuvo
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.message);

//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);
} catch (AuthException ex) {
System.out.println(ex);
} catch (GeneralException ex) {
Logger.getLogger(ExampleReadme.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ExampleReadme.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

```
</details>

<details>
<summary>
Eliminar timbres
</summary>

<br>Este método recibe los siguientes parametros:
* Usuario y contraseña o Token
* Url Servicios SW
* Url Api
* IdUser
* Número de timbres
* Comentario
* Action

**Ejemplo de consumo de la libreria para eliminar timbres utilizando Token**

```java
package com.mycompany.examplereadme;

import Exceptions.AuthException;
import Exceptions.GeneralException;
import Services.BalanceAccount.SWBalanceAccountService;
import Utils.Responses.BalanceAccount.BalanceAcctResponse;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ExampleReadme {

public static void main(String[] args) {

try {
//Intancia del servicio para agregar timbres y autenticación
SWBalanceAccountService sdk = new SWBalanceAccountService("T2lYQ0t4L0R...", "http://api.test.sw.com.mx", "remove");
BalanceAcctResponse response = null;
response = (BalanceAcctResponse) sdk.RemoveStamp("32701CF2-DC63-4370-B47D-25024C44E131", 1, "PruebaJava16");

//Imprimimos los datos de la respuesta que se obtuvo
System.out.println(response.Status);
System.out.println(response.HttpStatusCode);
System.out.println(response.message);

//En caso de obtener error, este puede obtenerse de los siguientes campos
System.out.println(response.message);
System.out.println(response.messageDetail);
} catch (AuthException ex) {
System.out.println(ex);
} catch (GeneralException ex) {
Logger.getLogger(ExampleReadme.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ExampleReadme.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

```
</details>

# Estatus CFDI #
Método necesario para conocer el estado de un CFDI a través del servicio de consulta del SAT.[Este servicio es consumido directamente del SAT].

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>
<artifactId>SW-JAVA</artifactId>
<version>1.0.14.1</version>
<version>1.0.15.1</version>
<packaging>jar</packaging>
<scm>
<url>https://github.com/lunasoft/sw-sdk-java</url>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ public SWBalanceAccountService(String user, String password, String URI) throws
super(user, password, URI);
}

public SWBalanceAccountService(String user, String password, String URI, String URIAPI) throws AuthException {
SebastianSW marked this conversation as resolved.
Show resolved Hide resolved
super(user, password, URI, URIAPI);
}

public SWBalanceAccountService(String user, String password, String URI, String URIAPI, String action) throws AuthException {
SebastianSW marked this conversation as resolved.
Show resolved Hide resolved
super(user, password, URI, URIAPI, action);
}

public SWBalanceAccountService(String token, String URI) {
super(token, URI);
}
Expand All @@ -33,4 +41,16 @@ public IResponse GetBalanceAccount() throws AuthException, GeneralException, IOE
BalanceAcctRequest req = new BalanceAcctRequest();
return req.sendRequest(settings);
}
}

public IResponse AddStamp(String idUser, int stamps, String comment) throws AuthException, GeneralException, IOException {
SebastianSW marked this conversation as resolved.
Show resolved Hide resolved
BalanceAcctOptionsRequest settings = new BalanceAcctOptionsRequest(getToken(), getURI(), idUser, stamps, comment, getProxyHost(), getProxyPort());
BalanceAcctRequest req = new BalanceAcctRequest();
return req.AddStamp(settings);
}

public IResponse RemoveStamp(String idUser, int stamps, String comment) throws AuthException, GeneralException, IOException {
BalanceAcctOptionsRequest settings = new BalanceAcctOptionsRequest(getToken(), getURI(), idUser, stamps, comment, getProxyHost(), getProxyPort());
BalanceAcctRequest req = new BalanceAcctRequest();
return req.RemoveStamp(settings);
}
}
20 changes: 19 additions & 1 deletion src/main/java/Services/SWService.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,25 @@ protected SWService(String user, String password, String URI, String URIAPI) thr
} catch (IOException e) {
throw new AuthException(409, e.getMessage());
}
}
}
protected SWService(String user, String password, String URI, String URIAPI, String action) throws AuthException {
User = user;
Password = password;
this.URI = URIAPI;
this.URIAPI = URI;
try {
generateToken();
this.URI = URI;
this.URIAPI = URIAPI;
} catch (AuthException e) {
throw new AuthException(e.getHttpStatusCode(), e.getErrorMSG());
} catch (GeneralException e) {
throw new AuthException(e.getHttpStatusCode(), e.getErrorMSG());
} catch (IOException e) {
throw new AuthException(409, e.getMessage());
}
}

protected SWService(String user, String password, String URI, String ProxyHost, int ProxyPort) throws AuthException {
User = user;
Password = password;
Expand Down
1 change: 1 addition & 0 deletions src/main/java/Utils/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class Constants {
public static String CANCELATION_PFX_PATH = "/cfdi33/cancel/pfx";
public static String CANCELATION_UUID_PATH = "/cfdi33/cancel/";
public static String BALANCE_ACCOUNT_PATH = "/account/balance/";
public static String BALANCE_ACCOUNT_MANAGEMENT_PATH = "/management/api/balance/";
public static String VALIDATE_XML_PATH = "/validate/cfdi33";
public static String GENERATE_PDF_PATH = "/pdf/v1/api/GeneratePdf";
public static String ACEPTAR_RECHAZAR_CANCELACION_CSD_PATH = "/acceptreject/csd";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,9 @@ public class BalanceAcctOptionsRequest extends IRequest {
public BalanceAcctOptionsRequest(String token, String URI, String proxyHost, int proxyPort) {
super(token, URI+ Constants.BALANCE_ACCOUNT_PATH, proxyHost, proxyPort);
}

public BalanceAcctOptionsRequest(String token, String URI, String idUser, int stamps, String comment, String proxyHost, int proxyPort) {
super(token, URI+ Constants.BALANCE_ACCOUNT_MANAGEMENT_PATH, idUser, stamps, comment, proxyHost, proxyPort);
SebastianSW marked this conversation as resolved.
Show resolved Hide resolved
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
Expand Down Expand Up @@ -61,4 +63,86 @@ public IResponse sendRequest(IRequest request) throws GeneralException, AuthExce

}

}
public IResponse AddStamp(IRequest request) throws GeneralException, AuthException, GeneralException, IOException {
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(request.URI + request.idUser + "/add/" + request.stamps);
httpPost.setHeader("Authorization", "Bearer " + request.Token);
httpPost.setHeader("Content-Type", "application/json");
RequestHelper.setTimeOut(request.options, 3500);
RequestHelper.setProxy(request.options, request.proxyHost, request.proxyPort);
httpPost.setConfig(request.options.build());

JSONObject json = new JSONObject();
json.put("Comentario", request.comment);

StringEntity entity = new StringEntity(json.toString());
httpPost.setEntity(entity);

CloseableHttpResponse responseB = client.execute(httpPost);

int status = responseB.getStatusLine().getStatusCode();
String responseString = EntityUtils.toString(responseB.getEntity(), "UTF-8");
JSONObject body = new JSONObject(responseString);

client.close();
responseB.close();

if (status == 200) {
return new BalanceAcctResponse(status, body.getString("status"), body.getString("data"), "");
}else{
String messageDetail = "";

if (!body.isNull("messageDetail")) {
messageDetail = body.getString("messageDetail");
}
return new BalanceAcctResponse(status, body.getString("status"), body.getString("message"), messageDetail);
}

} catch (JSONException e) {
throw new GeneralException(500, e.getMessage());
}

}

public IResponse RemoveStamp (IRequest request) throws GeneralException, AuthException, GeneralException, IOException {
SebastianSW marked this conversation as resolved.
Show resolved Hide resolved
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(request.URI + request.idUser + "/remove/" + request.stamps);
httpPost.setHeader("Authorization", "Bearer " + request.Token);
httpPost.setHeader("Content-Type", "application/json");
RequestHelper.setTimeOut(request.options, 3500);
RequestHelper.setProxy(request.options, request.proxyHost, request.proxyPort);
httpPost.setConfig(request.options.build());

JSONObject json = new JSONObject();
json.put("Comentario", request.comment);

StringEntity entity = new StringEntity(json.toString());
httpPost.setEntity(entity);

CloseableHttpResponse responseB = client.execute(httpPost);

int status = responseB.getStatusLine().getStatusCode();
String responseString = EntityUtils.toString(responseB.getEntity(), "UTF-8");
JSONObject body = new JSONObject(responseString);

client.close();
responseB.close();

if (status == 200) {
return new BalanceAcctResponse(status, body.getString("status"), body.getString("data"), "");
} else {
String messageDetail = "";

if (!body.isNull("messageDetail")) {
messageDetail = body.getString("messageDetail");
}
return new BalanceAcctResponse(status, body.getString("status"), body.getString("message"),
messageDetail);
}
} catch (JSONException e) {
throw new GeneralException(500, e.getMessage());
}
}
}
16 changes: 14 additions & 2 deletions src/main/java/Utils/Requests/IRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ public abstract class IRequest {
public String Password;
public String version;
public String xml;
public String idUser;
public String comment;
public int stamps;
public byte[] XML;
public boolean isb64;
public Builder options = RequestConfig.custom();
Expand Down Expand Up @@ -68,5 +71,14 @@ public IRequest(String token, String URI, String proxyHost, int proxyPort) {
this.proxyHost = proxyHost;
this.proxyPort = proxyPort;
}

}

public IRequest(String token, String URI, String idUser, int stamps, String comment, String proxyHost, int proxyPort) {
Token = token;
this.URI = URI;
this.idUser = idUser;
this.stamps = stamps;
this.comment = comment;
this.proxyHost = proxyHost;
this.proxyPort = proxyPort;
}
}
Loading