diff --git a/src/main/java/com/mercadopago/client/order/OrderClient.java b/src/main/java/com/mercadopago/client/order/OrderClient.java index 1dcb22dc..24d39ec2 100644 --- a/src/main/java/com/mercadopago/client/order/OrderClient.java +++ b/src/main/java/com/mercadopago/client/order/OrderClient.java @@ -21,6 +21,8 @@ public class OrderClient extends MercadoPagoClient { private static final Logger LOGGER = Logger.getLogger(OrderClient.class.getName()); + private static final String URL_WITH_ID = "/v1/orders/%s"; + /** Default constructor. Uses the default http client used by the SDK. */ public OrderClient() { this(MercadoPagoConfig.getHttpClient()); @@ -66,7 +68,7 @@ public Order create(OrderCreateRequest request, MPRequestOptions requestOptions) } /** - * Method responsible for creating order with request options + * Method responsible for creating order without request options * * @param request request * @return order response @@ -77,4 +79,37 @@ public Order create(OrderCreateRequest request) throws MPException, MPApiExcepti return this.create(request, null); } + /** + * Method responsible for obtaining order by id + * + * @param id orderId + * @return order response + * @throws MPException an error if the request fails + * @throws MPApiException an error if the request fails + */ + public Order get(String id) throws MPException, MPApiException { + return this.get(id, null); + } + + /** + * Method responsible for obtaining order by id with request options + * + * @param id orderId + * @param requestOptions metadata to customize the request + * @return order response + * @throws MPException an error if the request fails + * @throws MPApiException an error if the request fails + */ + public Order get(String id, MPRequestOptions requestOptions) throws MPException, MPApiException { + LOGGER.info("Sending order get request"); + + MPResponse response = + send(String.format(URL_WITH_ID, id), HttpMethod.GET, null, null, requestOptions); + + Order result = Serializer.deserializeFromJson(Order.class, response.getContent()); + result.setResponse(response); + + return result; + + } } diff --git a/src/main/java/com/mercadopago/example/apis/order/createOrder.java b/src/main/java/com/mercadopago/example/apis/order/CreateOrder.java similarity index 98% rename from src/main/java/com/mercadopago/example/apis/order/createOrder.java rename to src/main/java/com/mercadopago/example/apis/order/CreateOrder.java index dfd6c9f3..f251b752 100644 --- a/src/main/java/com/mercadopago/example/apis/order/createOrder.java +++ b/src/main/java/com/mercadopago/example/apis/order/CreateOrder.java @@ -10,7 +10,7 @@ import java.util.List; import java.util.Map; -public class createOrder { +public class CreateOrder { public static void main(String[] args) { MercadoPagoConfig.setAccessToken("{{ACCESS_TOKEN}}"); diff --git a/src/main/java/com/mercadopago/example/apis/order/GetOrderById.java b/src/main/java/com/mercadopago/example/apis/order/GetOrderById.java new file mode 100644 index 00000000..5c81bdd7 --- /dev/null +++ b/src/main/java/com/mercadopago/example/apis/order/GetOrderById.java @@ -0,0 +1,33 @@ +package com.mercadopago.example.apis.order; + +import com.mercadopago.MercadoPagoConfig; +import com.mercadopago.client.order.OrderClient; +import com.mercadopago.core.MPRequestOptions; +import com.mercadopago.exceptions.MPApiException; +import com.mercadopago.exceptions.MPException; +import com.mercadopago.resources.order.Order; + +import java.util.HashMap; +import java.util.Map; + +public class GetOrderById { + + public static void main(String[] args) { + MercadoPagoConfig.setAccessToken("{{ACCESS_TOKEN}}"); + + OrderClient client = new OrderClient(); + + Map headers = new HashMap<>(); + headers.put("X-Sandbox", "true"); + MPRequestOptions requestOptions = MPRequestOptions.builder() + .customHeaders(headers) + .build(); + + try { + Order order = client.get("{{ORDER_ID}}", requestOptions); + System.out.println("Getting order: " + order.getId()); + } catch (MPException | MPApiException e) { + System.out.println("Error getting order: " + e.getMessage()); + } + } +} diff --git a/src/test/java/com/mercadopago/client/order/OrderClientTest.java b/src/test/java/com/mercadopago/client/order/OrderClientTest.java index f57c1547..03c8eeb0 100644 --- a/src/test/java/com/mercadopago/client/order/OrderClientTest.java +++ b/src/test/java/com/mercadopago/client/order/OrderClientTest.java @@ -68,4 +68,17 @@ private static OrderCreateRequest getMinimumOrderCreateRequest() { .build()) .build(); } + + @Test + void getSuccess() throws MPException, MPApiException, IOException { + HttpResponse response = MockHelper.generateHttpResponseFromFile(CREATE_ORDER_RESPONSE_FILE, HttpStatus.OK); + Mockito.doReturn(response).when(HTTP_CLIENT).execute(any(HttpRequestBase.class), any(HttpContext.class)); + + String orderId = "123"; + Order order = client.get(orderId); + + Assertions.assertNotNull(order); + Assertions.assertEquals(orderId, order.getId()); + + } } \ No newline at end of file