/* Agregue este código a su POM
***** CONTENIDO DEL POM *****
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
// Clase donde se ejecuta el request
<mainClass>Program</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>10</source>
<target>10</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
// Agregar dependencia de UniRest para manejar los request
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.1.00</version>
</dependency>
// Agregar dependencia de GSON para serializar los objetos de Java a JSON
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
*/
// **** Clase donde se ejecuta el request ****
// Agregue las dependencias de UniRest a su POM como se indica en el código superior
import com.google.gson.*;
import kong.unirest.*;
/*
* /invoice/{testSetId}:
* - Enviar una factura para set de pruebas, en modo habilitación
* - Añada las dependencias de UniRest y GSON a su POM como se muestra en el código de la parte superior
*/
public class Program {
public static void main(String[] args) {
// Crear objeto factura con resolución ejemplo
JsonObject isvInvoice = new JsonObject();
isvInvoice.addProperty("code", "01");
isvInvoice.addProperty("format", "Estandar");
isvInvoice.addProperty("emailSender", "");
isvInvoice.addProperty("consecutive", 990004336);
isvInvoice.addProperty("externalNumber", "54554");
isvInvoice.addProperty("currencyCode", "COP");
isvInvoice.addProperty("currencyRate", 0);
isvInvoice.addProperty("date", "2020-1-20");
isvInvoice.addProperty("dateDue", "2020-1-24");
isvInvoice.addProperty("dateStart", "2020-1-20");
isvInvoice.addProperty("dateEnd", "2020-1-24");
isvInvoice.addProperty("typeOfOperation", "10");
isvInvoice.addProperty("dueDiligence", "");
isvInvoice.addProperty("incoterms", "");
isvInvoice.addProperty("terms", "");
isvInvoice.addProperty("remark", "");
isvInvoice.addProperty("observation", "");
isvInvoice.addProperty("termDay", 0);
isvInvoice.addProperty("paymentCode", 48);
JsonObject branchObj = new JsonObject();
branchObj.addProperty("name", "");
branchObj.addProperty("address", "");
branchObj.addProperty("phone", "");
branchObj.addProperty("countryCode", "");
branchObj.addProperty("countryName", "");
branchObj.addProperty("departmentCode", "");
branchObj.addProperty("departmentName", "");
branchObj.addProperty("cityCode", "");
branchObj.addProperty("cityName", "");
isvInvoice.add("branch", branchObj);
JsonObject resolutionObj = new JsonObject();
resolutionObj.addProperty("resolutionKey", "fc8eac422eba16e22ffd8c6f94b3f40a6e38162c");
resolutionObj.addProperty("resolutionPrefix", "SETP");
resolutionObj.addProperty("resolutionNumber", 18760000001f); // La f indica tipo float
resolutionObj.addProperty("resolutionRangeInitial", 990000000);
resolutionObj.addProperty("resolutionRangeFinal", 995000000);
resolutionObj.addProperty("resolutionValidFrom", "2019-01-19");
resolutionObj.addProperty("resolutionValidUntil", "2030-01-19");
isvInvoice.add("resolution", resolutionObj);
JsonObject customerObj = new JsonObject();
customerObj.addProperty("companyName", "Customer");
customerObj.addProperty("personType", "1");
customerObj.addProperty("regimeType", "04");
customerObj.addProperty("firstName", "Customer");
customerObj.addProperty("lastName", "Customer");
customerObj.addProperty("identification", "000000001");
customerObj.addProperty("digitCheck", "8");
customerObj.addProperty("identificationTypeCode", "13");
customerObj.addProperty("email", "");
customerObj.addProperty("phone", "0000001");
customerObj.addProperty("merchantRegistration", "");
customerObj.addProperty("responsibleFor", "ZZ");
customerObj.addProperty("responsibilities", "R-99-PN");
customerObj.addProperty("economicActivities", "2817;3092");
customerObj.addProperty("billingAddress", "KR con Calle");
customerObj.addProperty("billingCountryName", "Colombia");
customerObj.addProperty("billingCountryCode", "CO");
customerObj.addProperty("billingRegionName", "Cundinamarca");
customerObj.addProperty("billingRegionCode", "25");
customerObj.addProperty("billingCityName", "Chipaque");
customerObj.addProperty("billingCityCode", "25178");
customerObj.addProperty("billingPostalCode", "");
customerObj.addProperty("billingNeighborhood", "");
customerObj.addProperty("billingPhone", "");
customerObj.addProperty("billingContactName", "");
customerObj.addProperty("shippingAddress", "");
customerObj.addProperty("shippingCountryName", "");
customerObj.addProperty("shippingCountryCode", "");
customerObj.addProperty("shippingRegionName", "");
customerObj.addProperty("shippingRegionCode", "");
customerObj.addProperty("shippingCityName", "");
customerObj.addProperty("shippingCityCode", "");
customerObj.addProperty("shippingPostalCode", "");
customerObj.addProperty("shippingNeighborhood", "");
customerObj.addProperty("shippingPhone", "");
customerObj.addProperty("shippingContactName", "");
isvInvoice.add("customer", customerObj);
JsonArray invoiceDetailsArr = new JsonArray();
JsonObject invoiceDetailsObj = new JsonObject();
invoiceDetailsObj.addProperty("standardType", "");
invoiceDetailsObj.addProperty("standardCode", "");
invoiceDetailsObj.addProperty("itemCode", "0001");
invoiceDetailsObj.addProperty("itemName", "Item");
invoiceDetailsObj.addProperty("itemModel", "");
invoiceDetailsObj.addProperty("description", "Item prueba");
invoiceDetailsObj.addProperty("brandName", "");
invoiceDetailsObj.addProperty("itemCodeSupplier", "");
invoiceDetailsObj.addProperty("isPresent", false);
invoiceDetailsObj.addProperty("isRemmitance", false);
invoiceDetailsObj.addProperty("remmitanceNumber", "");
invoiceDetailsObj.addProperty("remmitanceConsecutive", "");
invoiceDetailsObj.addProperty("remmitanceValue", 0);
invoiceDetailsObj.addProperty("remmitanceQuantityValue", 0);
invoiceDetailsObj.addProperty("remmitanceMeasurementUnit", "");
invoiceDetailsObj.addProperty("unitMeasurementCode", "");
invoiceDetailsObj.addProperty("unitMeasurementName", "");
invoiceDetailsObj.addProperty("price", 25);
invoiceDetailsObj.addProperty("quantity", 2);
invoiceDetailsArr.add(invoiceDetailsObj);
JsonArray discountsArr = new JsonArray();
JsonObject discountsObj = new JsonObject();
discountsObj.addProperty("name", "");
discountsObj.addProperty("type", "V");
discountsObj.addProperty("rate", 1);
discountsObj.addProperty("amount", 1);
discountsArr.add(discountsObj);
invoiceDetailsObj.add("discounts", discountsArr);
JsonArray chargesArr = new JsonArray();
JsonObject chargesObj = new JsonObject();
chargesObj.addProperty("name", "");
chargesObj.addProperty("type", "V");
chargesObj.addProperty("rate", 10);
chargesObj.addProperty("amount", 10);
chargesArr.add(chargesObj);
invoiceDetailsObj.add("charges", chargesArr);
JsonArray taxesArr = new JsonArray();
JsonObject taxesObj = new JsonObject();
taxesObj.addProperty("name", "Iva");
taxesObj.addProperty("code", "01");
taxesObj.addProperty("type", "P");
taxesObj.addProperty("rate", 19);
taxesObj.addProperty("amount", 6.46);
taxesArr.add(taxesObj);
invoiceDetailsObj.add("taxes", taxesArr);
JsonArray withholdingsArr = new JsonArray();
JsonObject withholdingsObj = new JsonObject();
withholdingsObj.addProperty("name", "ReteFuente");
withholdingsObj.addProperty("code", "06");
withholdingsObj.addProperty("type", "P");
withholdingsObj.addProperty("rate", 10);
withholdingsObj.addProperty("amount", 3.4);
withholdingsArr.add(withholdingsObj);
invoiceDetailsObj.add("withholdings", withholdingsArr);
JsonObject isvMandanteObj = new JsonObject();
isvMandanteObj.addProperty("name", "Mandante");
isvMandanteObj.addProperty("identification", "00001");
isvMandanteObj.addProperty("digitCheck", "8");
isvMandanteObj.addProperty("identificationTypeCode", "13");
invoiceDetailsObj.add("isvMandante", isvMandanteObj);
isvInvoice.add("invoiceDetails", invoiceDetailsArr);
JsonObject totals = new JsonObject();
totals.addProperty("amount", 68);
totals.addProperty("prepaymentAmount", 0);
isvInvoice.add("totals", totals);
JsonArray invoiceDiscountsArr = new JsonArray();
JsonObject invoiceDiscountsObj = new JsonObject();
invoiceDiscountsObj.addProperty("name", "");
invoiceDiscountsObj.addProperty("type", "");
invoiceDiscountsObj.addProperty("rate", 0);
invoiceDiscountsObj.addProperty("amount", 0);
invoiceDiscountsArr.add(invoiceDiscountsObj);
isvInvoice.add("discounts", invoiceDiscountsArr);
JsonArray invoiceChargesArr = new JsonArray();
JsonObject invoiceChargesObj = new JsonObject();
invoiceChargesObj.addProperty("name", "");
invoiceChargesObj.addProperty("type", "");
invoiceChargesObj.addProperty("rate", 0);
invoiceChargesObj.addProperty("amount", 0);
invoiceChargesArr.add(invoiceChargesObj);
isvInvoice.add("discounts", invoiceChargesArr);
JsonArray customFieldsArr = new JsonArray();
JsonObject customFieldsObj = new JsonObject();
customFieldsObj.addProperty("666", "invoiceId");
customFieldsArr.add(customFieldsObj);
isvInvoice.add("customFields", customFieldsArr);
/*
* - Realizar request con TestId ejemplo 4bf6673a-7a71-496e-8cfd-f7246067e4ca, cambie este TestId por el que
* usted generó en la DIAN para habilitarse como facturador electrónico, si va realizar pruebas de conexión a
* la API puede realizarlo con el que esta en este ejemplo
* - Realizar request por metodo POST
*/
HttpRequestWithBody request = Unirest.post("https://isv.aliaddo.net/api/v1/public/documents/invoice/habilitation/4bf6673a-7a71-496e-8cfd-f7246067e4ca");
// Adicionar cabeceras de autenticación con token Bearer generado en el panel izquierdo
request.header("x-api-key", "{{x-api-key}}");
// Tipo de requerimiento formato json
request.header("content-type", "application/json");
request.header("cache-control", "no-cache");
request.header("accept", "application/json");
// Añadir el objeto de factura
request.body(isvInvoice).asJson()
// Manejar respuesta o error si hay alguno
.ifSuccess(response -> System.out.println("Response: " + "status -> " + response.getStatus() + " Body -> " + response.getBody() ))
.ifFailure(response -> {
System.out.println("Oh No! Status " + response.getStatus());
response.getParsingError().ifPresent(e -> {
System.out.println("Parsing Exception: " + e);
System.out.println("Original body: " + e.getOriginalBody());
});
});
}
}