/* 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.*;
/*
* - Enviar una factura a la DIAN, en modo producció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 isvDocument = new JsonObject();
isvDocument.addProperty("code", "01");
isvDocument.addProperty("format", "Estandar");
isvDocument.addProperty("emailSender", "");
isvDocument.addProperty("consecutive", 990004336);
isvDocument.addProperty("externalNumber", "54554");
isvDocument.addProperty("currencyCode", "COP");
isvDocument.addProperty("currencyRate", 0);
isvDocument.addProperty("date", "2020-1-20");
isvDocument.addProperty("dateDue", "2020-1-24");
isvDocument.addProperty("dateStart", "2020-1-20");
isvDocument.addProperty("dateEnd", "2020-1-24");
isvDocument.addProperty("typeOfOperation", "10");
isvDocument.addProperty("incoterms", "");
isvDocument.addProperty("terms", "");
isvDocument.addProperty("remark", "");
isvDocument.addProperty("observation", "");
isvDocument.addProperty("termDay", 0);
isvDocument.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", "");
isvDocument.add("branch", branchObj);
JsonObject resolutionObj = new JsonObject();
resolutionObj.addProperty("resolutionKey", "fc8eac422eba16e22ffd8c6f94b3f40a6e38162c");
resolutionObj.addProperty("resolutionPrefix", "SETT");
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");
isvDocument.add("resolution", resolutionObj);
JsonObject supplierObj = new JsonObject();
supplierObj.addProperty("companyName", "Customer");
supplierObj.addProperty("personType", "1");
supplierObj.addProperty("regimeType", "04");
supplierObj.addProperty("firstName", "Customer");
supplierObj.addProperty("lastName", "Customer");
supplierObj.addProperty("identification", "000000001");
supplierObj.addProperty("digitCheck", "8");
supplierObj.addProperty("identificationTypeCode", "13");
supplierObj.addProperty("email", "");
supplierObj.addProperty("phone", "0000001");
supplierObj.addProperty("merchantRegistration", "");
supplierObj.addProperty("responsibleFor", "ZZ");
supplierObj.addProperty("responsibilities", "R-99-PN");
supplierObj.addProperty("economicActivities", "2817;3092");
supplierObj.addProperty("billingAddress", "KR con Calle");
supplierObj.addProperty("billingCountryName", "Colombia");
supplierObj.addProperty("billingCountryCode", "CO");
supplierObj.addProperty("billingRegionName", "Cundinamarca");
supplierObj.addProperty("billingRegionCode", "25");
supplierObj.addProperty("billingCityName", "Chipaque");
supplierObj.addProperty("billingCityCode", "25178");
supplierObj.addProperty("billingPostalCode", "");
supplierObj.addProperty("billingNeighborhood", "");
supplierObj.addProperty("billingPhone", "");
supplierObj.addProperty("billingContactName", "");
supplierObj.addProperty("shippingAddress", "");
supplierObj.addProperty("shippingCountryName", "");
supplierObj.addProperty("shippingCountryCode", "");
supplierObj.addProperty("shippingRegionName", "");
supplierObj.addProperty("shippingRegionCode", "");
supplierObj.addProperty("shippingCityName", "");
supplierObj.addProperty("shippingCityCode", "");
supplierObj.addProperty("shippingPostalCode", "");
supplierObj.addProperty("shippingNeighborhood", "");
supplierObj.addProperty("shippingPhone", "");
supplierObj.addProperty("shippingContactName", "");
isvDocument.add("supplier", supplierObj);
JsonArray documentDetailsArr = new JsonArray();
JsonObject documentDetailsObj = new JsonObject();
documentDetailsObj.addProperty("standardType", "");
documentDetailsObj.addProperty("standardCode", "");
documentDetailsObj.addProperty("itemCode", "0001");
documentDetailsObj.addProperty("itemName", "Item");
documentDetailsObj.addProperty("itemModel", "");
documentDetailsObj.addProperty("description", "Item prueba");
documentDetailsObj.addProperty("brandName", "");
documentDetailsObj.addProperty("itemCodeSupplier", "");
documentDetailsObj.addProperty("isPresent", false);
documentDetailsObj.addProperty("isRemmitance", false);
documentDetailsObj.addProperty("remmitanceNumber", "");
documentDetailsObj.addProperty("remmitanceConsecutive", "");
documentDetailsObj.addProperty("remmitanceValue", 0);
documentDetailsObj.addProperty("remmitanceQuantityValue", 0);
documentDetailsObj.addProperty("remmitanceMeasurementUnit", "");
documentDetailsObj.addProperty("unitMeasurementCode", "");
documentDetailsObj.addProperty("unitMeasurementName", "");
documentDetailsObj.addProperty("price", 25);
documentDetailsObj.addProperty("quantity", 2);
documentDetailsObj.add(documentDetailsObj );
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);
documentDetailsObj.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);
documentDetailsObj.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);
documentDetailsObj.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);
documentDetailsObj.add("withholdings", withholdingsArr);
JsonObject isvMandanteObj = new JsonObject();
isvMandanteObj.addProperty("name", "Mandante");
isvMandanteObj.addProperty("identification", "00001");
isvMandanteObj.addProperty("digitCheck", "8");
isvMandanteObj.addProperty("identificationTypeCode", "13");
documentDetailsObj.add("isvMandante", isvMandanteObj);
isvDocument.add("documentDetails", documentDetailsArr);
JsonObject totals = new JsonObject();
totals.addProperty("amount", 68);
totals.addProperty("prepaymentAmount", 0);
isvDocument.add("totals", totals);
JsonArray documentDiscountsArr = new JsonArray();
JsonObject documentDiscountsObj = new JsonObject();
documentDiscountsObj.addProperty("name", "");
documentDiscountsObj.addProperty("type", "");
documentDiscountsObj.addProperty("rate", 0);
documentDiscountsObj.addProperty("amount", 0);
invoiceDiscountsArr.add(invoiceDiscountsObj);
isvInvoice.add("discounts", invoiceDiscountsArr);
JsonArray documentChargesArr = new JsonArray();
JsonObject documentChargesObj = new JsonObject();
documentChargesObj.addProperty("name", "");
documentChargesObj.addProperty("type", "");
documentChargesObj.addProperty("rate", 0);
documentChargesObj.addProperty("amount", 0);
documentChargesArr.add(documentChargesObj);
isvDocument.add("discounts", documentChargesArr);
JsonArray customFieldsArr = new JsonArray();
JsonObject customFieldsObj = new JsonObject();
customFieldsObj.addProperty("666", "personalizado");
customFieldsArr.add(customFieldsObj);
isvDocument.add("customFields", customFieldsArr);
JsonArray customFieldsArr = new JsonArray();
JsonObject customFieldsObj = new JsonObject();
customFieldsObj.addProperty("666", "personalizado");
customFieldsArr.add(customFieldsObj);
isvDocument.add("customFields", customFieldsArr);
// Realizar request por metodo POST
HttpRequestWithBody request = Unirest.post("https://isv.aliaddo.net/api/v1/public/documents/support");
// 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 documento soporte
request.body(isvDocument).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());
});
});
}
}