From d8f69bc3bfc8176431ef702f0feb8d92d38a338c Mon Sep 17 00:00:00 2001 From: aqudsilva_meli Date: Mon, 17 Nov 2025 10:13:32 -0300 Subject: [PATCH 1/4] implementing orders point --- .../client/order/OrderConfigRequest.java | 3 + .../client/order/OrderPointConfig.java | 26 +++++ .../order/CreateOrderWithPointConfig.java | 96 +++++++++++++++++++ .../resources/order/OrderConfig.java | 3 + .../resources/order/OrderPointConfig.java | 24 +++++ .../client/order/OrderPointConfigTest.java | 41 ++++++++ 6 files changed, 193 insertions(+) create mode 100644 src/main/java/com/mercadopago/client/order/OrderPointConfig.java create mode 100644 src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java create mode 100644 src/main/java/com/mercadopago/resources/order/OrderPointConfig.java create mode 100644 src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java 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..f8f93b22 --- /dev/null +++ b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java @@ -0,0 +1,26 @@ +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. Pattern: ^(GERTEC_MP35P|INGENICO_MOVE2500|PAX_A910|NEWLAND_N950)__[a-zA-Z0-9]+$ */ + private String terminalId; + + /** Print on terminal option. Values: seller_ticket, no_ticket. Default: seller_ticket */ + private String printOnTerminal; + + /** Ticket number (1-20 characters). */ + private String ticketNumber; + + /** Screen time in ISO 8601 duration format (e.g. 'PT30S' for 30 seconds). */ + private String screenTime; + + /** Congratulations time in ISO 8601 duration format (e.g. 'PT30S' for 30 seconds). */ + private String congratsTime; +} 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..9c0989e1 --- /dev/null +++ b/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java @@ -0,0 +1,96 @@ +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("GERTEC_MP35P__12345678") + .printOnTerminal("seller_ticket") + .ticketNumber("ticket_01") + .screenTime("PT30S") + .congratsTime("PT30S") + .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("Ticket Number: " + pointConfig.getTicketNumber()); + + 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..06229abd --- /dev/null +++ b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java @@ -0,0 +1,24 @@ +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. Values: SELLER_TICKET, NO_TICKET */ + private String printOnTerminal; + + /** Ticket number. */ + private String ticketNumber; + + /** Screen time in ISO 8601 duration format. */ + private String screenTime; + + /** Congratulations time in ISO 8601 duration format. */ + private String congratsTime; +} 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..64b71e90 --- /dev/null +++ b/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java @@ -0,0 +1,41 @@ +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("GERTEC_MP35P__12345678") + .printOnTerminal("seller_ticket") + .ticketNumber("ticket_01") + .screenTime("PT30S") + .congratsTime("PT30S") + .build(); + + assertNotNull(pointConfig); + assertEquals("GERTEC_MP35P__12345678", pointConfig.getTerminalId()); + assertEquals("seller_ticket", pointConfig.getPrintOnTerminal()); + assertEquals("ticket_01", pointConfig.getTicketNumber()); + assertEquals("PT30S", pointConfig.getScreenTime()); + assertEquals("PT30S", pointConfig.getCongratTime()); + } + + @Test + void testOrderPointConfigMinimalBuilder() { + OrderPointConfig pointConfig = OrderPointConfig.builder() + .terminalId("GERTEC_MP35P__12345678") + .build(); + + assertNotNull(pointConfig); + assertEquals("GERTEC_MP35P__12345678", pointConfig.getTerminalId()); + assertNull(pointConfig.getPrintOnTerminal()); + assertNull(pointConfig.getTicketNumber()); + assertNull(pointConfig.getScreenTime()); + assertNull(pointConfig.getCongratTime()); + } +} + From 039de5b7b309b7f6ee860f5cc1216cead28f6a52 Mon Sep 17 00:00:00 2001 From: aqudsilva_meli Date: Mon, 17 Nov 2025 10:26:09 -0300 Subject: [PATCH 2/4] supported fields --- .../client/order/OrderPointConfig.java | 6 ------ .../apis/order/CreateOrderWithPointConfig.java | 8 +++----- .../resources/order/OrderPointConfig.java | 6 ------ .../client/order/OrderPointConfigTest.java | 18 ++++++------------ 4 files changed, 9 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/mercadopago/client/order/OrderPointConfig.java b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java index f8f93b22..18853106 100644 --- a/src/main/java/com/mercadopago/client/order/OrderPointConfig.java +++ b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java @@ -15,12 +15,6 @@ public class OrderPointConfig { /** Print on terminal option. Values: seller_ticket, no_ticket. Default: seller_ticket */ private String printOnTerminal; - /** Ticket number (1-20 characters). */ - private String ticketNumber; - /** Screen time in ISO 8601 duration format (e.g. 'PT30S' for 30 seconds). */ private String screenTime; - - /** Congratulations time in ISO 8601 duration format (e.g. 'PT30S' for 30 seconds). */ - private String congratsTime; } diff --git a/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java b/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java index 9c0989e1..2313c2a3 100644 --- a/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java +++ b/src/main/java/com/mercadopago/example/apis/order/CreateOrderWithPointConfig.java @@ -24,11 +24,9 @@ public static void main(String[] args) { // Configure Point settings OrderPointConfig pointConfig = OrderPointConfig.builder() - .terminalId("GERTEC_MP35P__12345678") + .terminalId("") .printOnTerminal("seller_ticket") - .ticketNumber("ticket_01") - .screenTime("PT30S") - .congratsTime("PT30S") + .screenTime("") .build(); // Configure Order config with Point @@ -65,7 +63,7 @@ public static void main(String[] args) { System.out.println("Point Terminal ID: " + pointConfig.getTerminalId()); System.out.println("Print on Terminal: " + pointConfig.getPrintOnTerminal()); - System.out.println("Ticket Number: " + pointConfig.getTicketNumber()); + System.out.println("Screen Time: " + pointConfig.getScreenTime()); Map headers = new HashMap<>(); headers.put("X-Idempotency-Key", "{{IDEMPOTENCY_KEY}}"); diff --git a/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java index 06229abd..fe08cf9e 100644 --- a/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java +++ b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java @@ -13,12 +13,6 @@ public class OrderPointConfig { /** Print on terminal option. Values: SELLER_TICKET, NO_TICKET */ private String printOnTerminal; - /** Ticket number. */ - private String ticketNumber; - /** Screen time in ISO 8601 duration format. */ private String screenTime; - - /** Congratulations time in ISO 8601 duration format. */ - private String congratsTime; } diff --git a/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java b/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java index 64b71e90..425b6c9d 100644 --- a/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java +++ b/src/test/java/com/mercadopago/client/order/OrderPointConfigTest.java @@ -9,33 +9,27 @@ class OrderPointConfigTest { @Test void testOrderPointConfigBuilder() { OrderPointConfig pointConfig = OrderPointConfig.builder() - .terminalId("GERTEC_MP35P__12345678") + .terminalId("") .printOnTerminal("seller_ticket") - .ticketNumber("ticket_01") - .screenTime("PT30S") - .congratsTime("PT30S") + .screenTime("") .build(); assertNotNull(pointConfig); - assertEquals("GERTEC_MP35P__12345678", pointConfig.getTerminalId()); + assertEquals("", pointConfig.getTerminalId()); assertEquals("seller_ticket", pointConfig.getPrintOnTerminal()); - assertEquals("ticket_01", pointConfig.getTicketNumber()); - assertEquals("PT30S", pointConfig.getScreenTime()); - assertEquals("PT30S", pointConfig.getCongratTime()); + assertEquals("", pointConfig.getScreenTime()); } @Test void testOrderPointConfigMinimalBuilder() { OrderPointConfig pointConfig = OrderPointConfig.builder() - .terminalId("GERTEC_MP35P__12345678") + .terminalId("") .build(); assertNotNull(pointConfig); - assertEquals("GERTEC_MP35P__12345678", pointConfig.getTerminalId()); + assertEquals("", pointConfig.getTerminalId()); assertNull(pointConfig.getPrintOnTerminal()); - assertNull(pointConfig.getTicketNumber()); assertNull(pointConfig.getScreenTime()); - assertNull(pointConfig.getCongratTime()); } } From 58f6c74ef97f5525cc7dc6d02dfa5747b67e0d8e Mon Sep 17 00:00:00 2001 From: aqudsilva Date: Mon, 17 Nov 2025 10:29:20 -0300 Subject: [PATCH 3/4] Update OrderPointConfig.java --- .../java/com/mercadopago/client/order/OrderPointConfig.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/mercadopago/client/order/OrderPointConfig.java b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java index 18853106..711394da 100644 --- a/src/main/java/com/mercadopago/client/order/OrderPointConfig.java +++ b/src/main/java/com/mercadopago/client/order/OrderPointConfig.java @@ -9,12 +9,12 @@ @Builder public class OrderPointConfig { - /** Terminal ID for Point integration. Pattern: ^(GERTEC_MP35P|INGENICO_MOVE2500|PAX_A910|NEWLAND_N950)__[a-zA-Z0-9]+$ */ + /** Terminal ID for Point integration.*/ private String terminalId; - /** Print on terminal option. Values: seller_ticket, no_ticket. Default: seller_ticket */ + /** Print on terminal option. */ private String printOnTerminal; - /** Screen time in ISO 8601 duration format (e.g. 'PT30S' for 30 seconds). */ + /** Screen time in ISO 8601 duration format*/ private String screenTime; } From 58e122ecfd34c780a467a1fa407110f857c2ff7d Mon Sep 17 00:00:00 2001 From: aqudsilva Date: Mon, 17 Nov 2025 10:29:42 -0300 Subject: [PATCH 4/4] Update OrderPointConfig.java --- .../java/com/mercadopago/resources/order/OrderPointConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java index fe08cf9e..8ad83586 100644 --- a/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java +++ b/src/main/java/com/mercadopago/resources/order/OrderPointConfig.java @@ -10,7 +10,7 @@ public class OrderPointConfig { /** Terminal ID for Point integration. */ private String terminalId; - /** Print on terminal option. Values: SELLER_TICKET, NO_TICKET */ + /** Print on terminal option.*/ private String printOnTerminal; /** Screen time in ISO 8601 duration format. */