diff --git a/pom.xml b/pom.xml
index e0e9df8..46fdfa7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
com.mercadopago
sdk-java
- 1.11.0
+ 2.0.0
com.google.code.gson
diff --git a/src/main/java/com/mercadopago/sample/controller/CardPaymentController.java b/src/main/java/com/mercadopago/sample/controller/CardPaymentController.java
index 7a64f4e..2b6d325 100644
--- a/src/main/java/com/mercadopago/sample/controller/CardPaymentController.java
+++ b/src/main/java/com/mercadopago/sample/controller/CardPaymentController.java
@@ -1,8 +1,9 @@
package com.mercadopago.sample.controller;
-import com.mercadopago.sample.dto.PaymentResponseDTO;
import com.mercadopago.sample.dto.CardPaymentDTO;
+import com.mercadopago.sample.dto.PaymentResponseDTO;
import com.mercadopago.sample.service.CardPaymentService;
+import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -11,12 +12,10 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import javax.validation.Valid;
-
@RestController
@RequestMapping("/process_payment")
public class CardPaymentController {
- private CardPaymentService cardPaymentService;
+ private final CardPaymentService cardPaymentService;
@Autowired
public CardPaymentController(CardPaymentService cardPaymentService) {
diff --git a/src/main/java/com/mercadopago/sample/dto/CardPaymentDTO.java b/src/main/java/com/mercadopago/sample/dto/CardPaymentDTO.java
index 0242dcb..fd6202a 100644
--- a/src/main/java/com/mercadopago/sample/dto/CardPaymentDTO.java
+++ b/src/main/java/com/mercadopago/sample/dto/CardPaymentDTO.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigDecimal;
import javax.validation.constraints.NotNull;
public class CardPaymentDTO {
@@ -14,7 +15,7 @@ public class CardPaymentDTO {
private String paymentMethodId;
@NotNull
- private Float transactionAmount;
+ private BigDecimal transactionAmount;
@NotNull
private Integer installments;
@@ -53,11 +54,11 @@ public void setPaymentMethodId(String paymentMethodId) {
this.paymentMethodId = paymentMethodId;
}
- public Float getTransactionAmount() {
+ public BigDecimal getTransactionAmount() {
return transactionAmount;
}
- public void setTransactionAmount(Float transactionAmount) {
+ public void setTransactionAmount(BigDecimal transactionAmount) {
this.transactionAmount = transactionAmount;
}
diff --git a/src/main/java/com/mercadopago/sample/dto/PaymentResponseDTO.java b/src/main/java/com/mercadopago/sample/dto/PaymentResponseDTO.java
index 44f36a5..092e40b 100644
--- a/src/main/java/com/mercadopago/sample/dto/PaymentResponseDTO.java
+++ b/src/main/java/com/mercadopago/sample/dto/PaymentResponseDTO.java
@@ -1,21 +1,21 @@
package com.mercadopago.sample.dto;
public class PaymentResponseDTO {
- private String id;
+ private Long id;
private String status;
private String detail;
- public PaymentResponseDTO(String id, String status, String detail) {
+ public PaymentResponseDTO(Long id, String status, String detail) {
this.id = id;
this.status = status;
this.detail = detail;
}
- public String getId() {
+ public Long getId() {
return id;
}
- public void setId(String id) {
+ public void setId(Long id) {
this.id = id;
}
diff --git a/src/main/java/com/mercadopago/sample/service/CardPaymentService.java b/src/main/java/com/mercadopago/sample/service/CardPaymentService.java
index 4af1165..716e490 100644
--- a/src/main/java/com/mercadopago/sample/service/CardPaymentService.java
+++ b/src/main/java/com/mercadopago/sample/service/CardPaymentService.java
@@ -1,69 +1,60 @@
package com.mercadopago.sample.service;
+import com.mercadopago.MercadoPagoConfig;
+import com.mercadopago.client.common.IdentificationRequest;
+import com.mercadopago.client.payment.PaymentClient;
+import com.mercadopago.client.payment.PaymentCreateRequest;
+import com.mercadopago.client.payment.PaymentPayerRequest;
+import com.mercadopago.exceptions.MPApiException;
+import com.mercadopago.exceptions.MPException;
+import com.mercadopago.resources.payment.Payment;
+import com.mercadopago.sample.dto.CardPaymentDTO;
import com.mercadopago.sample.dto.PaymentResponseDTO;
import com.mercadopago.sample.exception.MercadoPagoException;
-import com.mercadopago.sample.dto.CardPaymentDTO;
-import com.mercadopago.MercadoPago;
-import com.mercadopago.exceptions.MPException;
-import com.mercadopago.resources.Payment;
-import com.mercadopago.resources.datastructures.payment.Identification;
-import com.mercadopago.resources.datastructures.payment.Payer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class CardPaymentService {
- @Value("${mercado_pago_sample_access_token}")
- private String mercadoPagoAccessToken;
-
- public PaymentResponseDTO processPayment(CardPaymentDTO cardPaymentDTO) {
- try {
- MercadoPago.SDK.setAccessToken(mercadoPagoAccessToken);
-
- Payment payment = new Payment();
- payment.setTransactionAmount(cardPaymentDTO.getTransactionAmount())
- .setToken(cardPaymentDTO.getToken())
- .setDescription(cardPaymentDTO.getProductDescription())
- .setInstallments(cardPaymentDTO.getInstallments())
- .setPaymentMethodId(cardPaymentDTO.getPaymentMethodId());
-
- Identification identification = new Identification();
- identification.setType(cardPaymentDTO.getPayer().getIdentification().getType())
- .setNumber(cardPaymentDTO.getPayer().getIdentification().getNumber());
-
- Payer payer = new Payer();
- payer.setEmail(cardPaymentDTO.getPayer().getEmail());
- payer.setIdentification(identification);
-
- payment.setPayer(payer);
-
- Payment createdPayment = payment.save();
-
- this.validatePaymentResult(createdPayment);
-
- PaymentResponseDTO paymentResponseDTO = new PaymentResponseDTO(
- createdPayment.getId(),
- String.valueOf(createdPayment.getStatus()),
- createdPayment.getStatusDetail()
- );
-
- return paymentResponseDTO;
- } catch (MPException exception) {
- System.out.println(exception.getMessage());
- throw new MercadoPagoException(exception.getMessage());
- }
- }
-
- private void validatePaymentResult(Payment createdPayment) throws MPException {
- if(createdPayment.getId() == null) {
- String errorMessage = "Unknown error cause";
-
- if(createdPayment.getLastApiResponse() != null) {
- String sdkErrorMessage = createdPayment.getLastApiResponse().getJsonElementResponse().getAsJsonObject().get("message").getAsString();
- errorMessage = sdkErrorMessage != null ? sdkErrorMessage : errorMessage;
- }
-
- throw new MPException(errorMessage);
- }
+ @Value("${mercado_pago_sample_access_token}")
+ private String mercadoPagoAccessToken;
+
+ public PaymentResponseDTO processPayment(CardPaymentDTO cardPaymentDTO) {
+ try {
+ MercadoPagoConfig.setAccessToken(mercadoPagoAccessToken);
+
+ PaymentClient paymentClient = new PaymentClient();
+
+ PaymentCreateRequest paymentCreateRequest =
+ PaymentCreateRequest.builder()
+ .transactionAmount(cardPaymentDTO.getTransactionAmount())
+ .token(cardPaymentDTO.getToken())
+ .description(cardPaymentDTO.getProductDescription())
+ .installments(cardPaymentDTO.getInstallments())
+ .paymentMethodId(cardPaymentDTO.getPaymentMethodId())
+ .payer(
+ PaymentPayerRequest.builder()
+ .email(cardPaymentDTO.getPayer().getEmail())
+ .identification(
+ IdentificationRequest.builder()
+ .type(cardPaymentDTO.getPayer().getIdentification().getType())
+ .number(cardPaymentDTO.getPayer().getIdentification().getNumber())
+ .build())
+ .build())
+ .build();
+
+ Payment createdPayment = paymentClient.create(paymentCreateRequest);
+
+ return new PaymentResponseDTO(
+ createdPayment.getId(),
+ String.valueOf(createdPayment.getStatus()),
+ createdPayment.getStatusDetail());
+ } catch (MPApiException apiException) {
+ System.out.println(apiException.getApiResponse().getContent());
+ throw new MercadoPagoException(apiException.getApiResponse().getContent());
+ } catch (MPException exception) {
+ System.out.println(exception.getMessage());
+ throw new MercadoPagoException(exception.getMessage());
}
+ }
}