Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 125 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Luego agregar la dependencia:
</dependency>
```

## Configuracion
## Configuración

Para empezar a enviar peticiones al API de Culqi debes configurar tu llave pública (pk), llave privada (sk).
Para habilitar encriptación de payload debes configurar tu rsa_id y rsa_public_key.
Expand Down Expand Up @@ -113,6 +113,18 @@ protected Map<String, Object> createCharge() throws Exception {
}
```

Para realizar un cargo recurrente, puedes utilizar el siguiente código:

```java
protected Map<String, Object> createCharge() throws Exception {
String source_id = createToken().get("id").toString();
Map<String, String> customHeaders = new HashMap<String, String>();
customHeaders.put("X-Charge-Channel", "recurrent");

return init().charge.create(jsondata.jsonCharge(source_id), customHeaders);
}
```

### Crear Devolución

Solicita la devolución de las compras de tus clientes (parcial o total) de forma gratuita a través del API y CulqiPanel.
Expand Down Expand Up @@ -265,6 +277,118 @@ Luego agregas la siguiente dependencia en el pom.xml
- [Jackson Core Databind](https://github.com/FasterXML/jackson-databind/wiki)
- [Wiki](https://github.com/culqi/culqi-java/wiki)

### Instalar Java
Descarga Spring Tools Suite 4-4.21.0 archivo del siguiente link:

```bash
https://cdn.spring.io/spring-tools/release/STS4/4.21.0.RELEASE/dist/e4.30/spring-tool-suite-4-4.21.0.RELEASE-e4.30.0-linux.gtk.x86_64.tar.gz
```

### Instalar jdk (Kit de Desarrollo de Java)
Asegúrate de tener instalado el JDK 8 mediante los siguientes comandos:

```bash
sudo apt-get update
sudo apt-get install openjdk-8-jdk
```
### Configurar Variables de Entorno para Java y Maven
Edita el archivo .bashrc con el siguiente comando:

```bash
#Abre el archivo .bashrc
nano ~/.bashrc
```
Añade las siguientes líneas al final del archivo:

```bash
#Agrega las siguientes líneas al final del archivo:
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
M2_HOME=/usr/share/maven
PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
```
Guarda los cambios y cierra el editor (Ctrl + o >> Enter >> Ctrl + x).

### Instalar Maven
Instala Maven con el siguiente comando

```bash
sudo apt-get install maven
```


### Como abrir el archvio SDK

Abre Spring Tools Suite y selecciona:
```bash
FILE >> IMPORT >> MAVEN >> EXISTING MAVEN PROJECTS
```

### Instalar Dependencias
Haz clic derecho en la carpeta raíz del proyecto y selecciona:

```bash
RUN AS >> MAVEN CLEAN
RUN AS >> MAVEN INSTALL
```

### Ejecutar Tests
Haz clic derecho en la carpeta src/test/java y selecciona:

```bash
RUN AS >> JUnit Test
```
Espera a que se ejecuten todas las pruebas unitarias y, luego, ejecuta cada prueba individualmente según las necesidades.

```bash
CulqiCreateTest:
test05_createPlan
test08_createSubscription

CulqiDeleteTest:
test01_deleteSubscription
test02_deletePlan

CulqiGetTest:
test06_findPlan
test07_findSubscription

CulqiAllTest:
test04_allPlan
test06_allSubscriptions
```
Click derecho en el nombre del test_0** >> RUN

### Donde Encontrar los ejemplos para Pruebas
Dentro de la estructura del proyecto, encontrarás ejemplos de pruebas que puedes utilizar para verificar el funcionamiento del SDK. Sigue estos pasos para acceder y ejecutar los ejemplos:

# Ubicación de los Ejemplos:
* Haz clic derecho en la carpeta src/test/java.
* Abre el archivo CulqiCRUD.java.
* En la linea 27 puedes configurar el secreto:

```bash
culqi.secret_key = "sk_live_************";
```

* Haz clic derecho en la carpeta src/test/java.
* Abre el archivo JsonData.java.

* Ejemplo de JSON:
En el archivo JsonData.java, encontrarás ejemplos de datos en formato JSON que se utilizan en las pruebas. Puedes modificar estos datos según tus necesidades.

```bash
php examples/plan/02-create-plan.php
Crear Plan: jsonPlan
Actualizar Plan: jsonUpdatePlan
All Plan: jsonPlanFilter

Crear Subscription: jsonSubscription
Actualizar Subscription: jsonUpdateSubscription
All Subscription: jsonListSubscriptions
```
Modifica estos ejemplos según tus necesidades y asegúrate de tener configuradas correctamente tus credenciales de Culqi antes de ejecutar las pruebas.


## Changelog

Todos los cambios en las versiones de esta biblioteca están listados en [CHANGELOG](CHANGELOG).
Expand Down
21 changes: 20 additions & 1 deletion src/main/java/com/culqi/apioperation/ObjectResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,32 @@ public ResponseCulqi create(Map<String, Object> body, String url) throws Excepti
return response;
}

public ResponseCulqi create (Map<String, Object> body, String url, Map<String, String> customHeaders) throws Exception {
String jsonData = mapper.writeValueAsString(body);
ResponseCulqi response = new ResponseHelper().create(url, jsonData, customHeaders);
return response;
}

public ResponseCulqi create(Map<String, Object> body, String url, String rsaPublicKey, String rsaId ) throws Exception {
String jsonData = mapper.writeValueAsString(body);

EncryptAESRSA encryptAESRSA = new EncryptAESRSA();
jsonData = encryptAESRSA.getJsonEncryptAESRSA(jsonData, rsaPublicKey);

ResponseCulqi response = new ResponseHelper().create(url, jsonData, rsaId);System.out.println(jsonData);
ResponseCulqi response = new ResponseHelper().create(url, jsonData, rsaId);
System.out.println(jsonData);
System.out.println(response.getStatusCode());
return response;
}

public ResponseCulqi create(Map<String, Object> body, String url, String rsaPublicKey, String rsaId, Map<String, String> customHeaders ) throws Exception {
String jsonData = mapper.writeValueAsString(body);

EncryptAESRSA encryptAESRSA = new EncryptAESRSA();
jsonData = encryptAESRSA.getJsonEncryptAESRSA(jsonData, rsaPublicKey);

ResponseCulqi response = new ResponseHelper().create(url, jsonData, rsaId, customHeaders);
System.out.println(jsonData);
System.out.println(response.getStatusCode());
return response;
}
Expand Down
83 changes: 81 additions & 2 deletions src/main/java/com/culqi/apioperation/ResponseHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,16 @@ public ResponseCulqi list(String url, String params) {

try {
HttpUrl.Builder builder = new HttpUrl.Builder();
builder.scheme("https").host(Config.DOMAIN).addPathSegment("v2").addPathSegment(url);

builder.scheme("https").host(Config.DOMAIN).addPathSegment("v2");
if (url.contains("plans")) {
builder.addPathSegment("recurrent").addPathSegment("plans");
} else if (url.contains("subscriptions")) {
builder.addPathSegment("recurrent").addPathSegment("subscriptions");
} else {
builder.scheme("https").host(Config.DOMAIN).addPathSegment("v2").addPathSegment(url);
}

if (params != null) {
HashMap<String, Object> map = new HashMap<String, Object>();
String[] pairs = params.replace("{", "").replace("}", "").split(",");
Expand Down Expand Up @@ -72,7 +81,8 @@ public ResponseCulqi list(String url, String params) {
return responseCulqi(GENERIC_ERROR, result);
}

public ResponseCulqi create(String url, String jsonData) {System.out.println("jsonData "+jsonData);
public ResponseCulqi create(String url, String jsonData) {
System.out.println("jsonData "+jsonData);
String result = "";
try {
String api_key = url.contains("tokens") || url.contains("confirm") ? Culqi.public_key : Culqi.secret_key;
Expand All @@ -81,6 +91,7 @@ public ResponseCulqi list(String url, String params) {
env = Config.X_CULQI_ENV_LIVE;
}
String base_url = url.contains("tokens") ? config.API_SECURE : config.API_BASE;
url = (url.contains("plans") || url.contains("subscriptions")) ? url + "create" : url;
RequestBody body = RequestBody.create(JSON, jsonData);
Request request = new Request.Builder()
.url(base_url+url)
Expand All @@ -99,6 +110,35 @@ public ResponseCulqi list(String url, String params) {
return responseCulqi(GENERIC_ERROR, result);
}

public ResponseCulqi create(String url, String jsonData, Map<String, String> customHeaders) {
String result = "";
try {
String api_key = url.contains("tokens") || url.contains("confirm") ? Culqi.public_key : Culqi.secret_key;
String env = Config.X_CULQI_ENV_TEST;
if(api_key.contains("live")) {
env = Config.X_CULQI_ENV_LIVE;
}
String base_url = url.contains("tokens") ? config.API_SECURE : config.API_BASE;
url = (url.contains("plans") || url.contains("subscriptions")) ? url + "create" : url;
RequestBody body = RequestBody.create(JSON, jsonData);
Request.Builder builder = new Request.Builder()
.url(base_url+url)
.header("Authorization","Bearer " + api_key)
.header("x-culqi-env", env)
.header("x-culqi-client", Config.X_CULQI_CLIENT)
.header("x-culqi-client-version", Config.X_CULQI_CLIENT_VERSION)
.header("x-api-version", Config.X_API_VERSION)
.post(body);
builder = addCustomHeadersToRequest(customHeaders, builder);
Request request = builder.build();
Response response = client.newCall(request).execute();
return responseCulqi(response.code(), response.body().string());
} catch (IOException e) {
result = exceptionError();
}
return responseCulqi(GENERIC_ERROR, result);
}

public ResponseCulqi create(String url, String jsonData, String rsaId) {
String result = "";
try {
Expand All @@ -108,6 +148,7 @@ public ResponseCulqi create(String url, String jsonData, String rsaId) {
env = Config.X_CULQI_ENV_LIVE;
}
String base_url = url.contains("tokens") ? config.API_SECURE : config.API_BASE;
url = (url.contains("plans") || url.contains("subscriptions")) ? url + "create" : url;
RequestBody body = RequestBody.create(JSON, jsonData);
Request request = new Request.Builder()
.url(base_url+url)
Expand All @@ -127,6 +168,36 @@ public ResponseCulqi create(String url, String jsonData, String rsaId) {
return responseCulqi(GENERIC_ERROR, result);
}

public ResponseCulqi create(String url, String jsonData, String rsaId, Map<String, String> customHeaders) {
String result = "";
try {
String api_key = url.contains("tokens") || url.contains("confirm") ? Culqi.public_key : Culqi.secret_key;
String env = Config.X_CULQI_ENV_TEST;
if(api_key.contains("live")) {
env = Config.X_CULQI_ENV_LIVE;
}
String base_url = url.contains("tokens") ? config.API_SECURE : config.API_BASE;
url = (url.contains("plans") || url.contains("subscriptions")) ? url + "create" : url;
RequestBody body = RequestBody.create(JSON, jsonData);
Request.Builder builder = new Request.Builder()
.url(base_url+url)
.header("Authorization","Bearer " + api_key)
.header("x-culqi-rsa-id", rsaId)
.header("x-culqi-env", env)
.header("x-culqi-client", Config.X_CULQI_CLIENT)
.header("x-culqi-client-version", Config.X_CULQI_CLIENT_VERSION)
.header("x-api-version", Config.X_API_VERSION)
.post(body);
builder = addCustomHeadersToRequest(customHeaders, builder);
Request request = builder.build();
Response response = client.newCall(request).execute();
return responseCulqi(response.code(), response.body().string());
} catch (IOException e) {
result = exceptionError();
}
return responseCulqi(GENERIC_ERROR, result);
}

public ResponseCulqi update(String url, String jsonData, String id) {
String result = "";
try {
Expand Down Expand Up @@ -256,6 +327,14 @@ public ResponseCulqi confirm(String url, String id) throws Exception {
return responseCulqi(GENERIC_ERROR, result);
}

private Request.Builder addCustomHeadersToRequest(Map<String, String> customHeaders, Request.Builder builder) {
for (Map.Entry<String, String> entry : customHeaders.entrySet()) {
System.out.println("Adding header '" + entry.getKey() + "' with value = " + entry.getValue());
builder.header(entry.getKey(), entry.getValue());
}
return builder;
}

private String exceptionError() {
String result = "";
Map<String, Object> errorResponse = new HashMap<String, Object>();
Expand Down
Loading