diff --git a/src/main/java/com/mercadopago/client/order/OrderConfigRequest.java b/src/main/java/com/mercadopago/client/order/OrderConfigRequest.java index 31550389..30842311 100644 --- a/src/main/java/com/mercadopago/client/order/OrderConfigRequest.java +++ b/src/main/java/com/mercadopago/client/order/OrderConfigRequest.java @@ -14,4 +14,7 @@ public class OrderConfigRequest { /** Online config. */ private OrderOnlineConfig online; + + /** Point config. */ + private OrderPointConfig point; } diff --git a/src/main/java/com/mercadopago/client/order/OrderPointConfig.java b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java new file mode 100644 index 00000000..711394da --- /dev/null +++ b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java @@ -0,0 +1,20 @@ +package com.mercadopago.client.order; + +import lombok.Builder; +import lombok.Getter; + +// API version: 1ff4822a-2dfd-4393-800e-a562edb3fe32 +/** OrderPointConfig class. */ +@Getter +@Builder +public class OrderPointConfig { + + /** Terminal ID for Point integration.*/ + private String terminalId; + + /** Print on terminal option. */ + private String printOnTerminal; + + /** Screen time in ISO 8601 duration format*/ + private String screenTime; +} diff --git a/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java b/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java new file mode 100644 index 00000000..2313c2a3 --- /dev/null +++ b/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java @@ -0,0 +1,94 @@ +package com.mercadopago.example.apis.order; + +import com.mercadopago.MercadoPagoConfig; +import com.mercadopago.client.order.*; +import com.mercadopago.core.MPRequestOptions; +import com.mercadopago.exceptions.MPApiException; +import com.mercadopago.exceptions.MPException; +import com.mercadopago.resources.order.Order; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** Example: Create Order with Point Configuration */ +public class CreateOrderWithPointConfig { + + public static void main(String[] args) { + MercadoPagoConfig.setAccessToken("{{ACCESS_TOKEN}}"); + + OrderClient client = new OrderClient(); + + System.out.println("Creating OrderCreateRequest with Point configuration..."); + + // Configure Point settings + OrderPointConfig pointConfig = OrderPointConfig.builder() + .terminalId("") + .printOnTerminal("seller_ticket") + .screenTime("") + .build(); + + // Configure Order config with Point + OrderConfigRequest config = OrderConfigRequest.builder() + .point(pointConfig) + .build(); + + // Create payment request + OrderPaymentRequest payment = OrderPaymentRequest.builder() + .amount("100.00") + .paymentMethod(OrderPaymentMethodRequest.builder() + .id("debit_card") + .type("debit_card") + .installments(1) + .build()) + .build(); + + List payments = new ArrayList<>(); + payments.add(payment); + + // Create order request + OrderCreateRequest request = OrderCreateRequest.builder() + .type("point") + .processingMode("automatic") + .totalAmount("100.00") + .externalReference("ext_ref_point_1234") + .description("Example Point - Payment") + .config(config) + .payer(OrderPayerRequest.builder().email("{{PAYER_EMAIL}}").build()) + .transactions(OrderTransactionRequest.builder() + .payments(payments) + .build()) + .build(); + + System.out.println("Point Terminal ID: " + pointConfig.getTerminalId()); + System.out.println("Print on Terminal: " + pointConfig.getPrintOnTerminal()); + System.out.println("Screen Time: " + pointConfig.getScreenTime()); + + Map headers = new HashMap<>(); + headers.put("X-Idempotency-Key", "{{IDEMPOTENCY_KEY}}"); + + MPRequestOptions requestOptions = MPRequestOptions.builder() + .customHeaders(headers) + .build(); + + try { + System.out.println("Attempting to create Point order..."); + Order order = client.create(request, requestOptions); + System.out.println("Point Order created: " + order.getId()); + System.out.println("Order type: " + order.getType()); + System.out.println("Order status: " + order.getStatus()); + + if (order.getConfig() != null && order.getConfig().getPoint() != null) { + System.out.println("Terminal ID configured: " + order.getConfig().getPoint().getTerminalId()); + } + } catch (MPApiException mpApiException) { + System.out.println("Error creating Point order: " + mpApiException.getMessage()); + System.out.println("Status Code: " + mpApiException.getStatusCode()); + System.out.println("Error Details: " + mpApiException.getApiResponse()); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("Error creating Point order: " + e.getMessage()); + } + } +} diff --git a/src/main/java/com/mercadopago/resources/order/OrderConfig.java b/src/main/java/com/mercadopago/resources/order/OrderConfig.java index 0bc9b87c..df073886 100644 --- a/src/main/java/com/mercadopago/resources/order/OrderConfig.java +++ b/src/main/java/com/mercadopago/resources/order/OrderConfig.java @@ -15,5 +15,8 @@ public class OrderConfig { /** Online config. */ private OrderOnlineConfig online; + + /** Point config. */ + private OrderPointConfig point; } diff --git a/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java new file mode 100644 index 00000000..8ad83586 --- /dev/null +++ b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java @@ -0,0 +1,18 @@ +package com.mercadopago.resources.order; + +import lombok.Getter; + +// API version: 1ff4822a-2dfd-4393-800e-a562edb3fe32 +/** OrderPointConfig class. */ +@Getter +public class OrderPointConfig { + + /** Terminal ID for Point integration. */ + private String terminalId; + + /** Print on terminal option.*/ + private String printOnTerminal; + + /** Screen time in ISO 8601 duration format. */ + private String screenTime; +} diff --git a/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java b/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java new file mode 100644 index 00000000..425b6c9d --- /dev/null +++ b/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java @@ -0,0 +1,35 @@ +package com.mercadopago.client.order; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +/** OrderPointConfigTest class. */ +class OrderPointConfigTest { + + @Test + void testOrderPointConfigBuilder() { + OrderPointConfig pointConfig = OrderPointConfig.builder() + .terminalId("") + .printOnTerminal("seller_ticket") + .screenTime("") + .build(); + + assertNotNull(pointConfig); + assertEquals("", pointConfig.getTerminalId()); + assertEquals("seller_ticket", pointConfig.getPrintOnTerminal()); + assertEquals("", pointConfig.getScreenTime()); + } + + @Test + void testOrderPointConfigMinimalBuilder() { + OrderPointConfig pointConfig = OrderPointConfig.builder() + .terminalId("") + .build(); + + assertNotNull(pointConfig); + assertEquals("", pointConfig.getTerminalId()); + assertNull(pointConfig.getPrintOnTerminal()); + assertNull(pointConfig.getScreenTime()); + } +} +