From 3a3c9bcd6f7af4128380fe47b4ce3dcd103485c5 Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Wed, 13 Mar 2024 11:43:43 +0200 Subject: [PATCH 1/9] added new params for paypal --- src/main/java/com/mangopay/core/LineItem.java | 12 ++++++++++++ .../core/deserializer/PayInDeserializer.java | 3 +++ .../mangopay/core/serializer/PayInSerializer.java | 1 + .../subentities/PayInPaymentDetailsPayPal.java | 12 ++++++++++++ .../java/com/mangopay/core/PayInApiImplTest.java | 4 +++- 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mangopay/core/LineItem.java b/src/main/java/com/mangopay/core/LineItem.java index 205cc6bd..8694626b 100644 --- a/src/main/java/com/mangopay/core/LineItem.java +++ b/src/main/java/com/mangopay/core/LineItem.java @@ -35,6 +35,9 @@ public class LineItem extends Dto{ @SerializedName("Description") private String description; + @SerializedName("Category") + private String category; + public LineItem(String name, Integer quantity, Integer unitAmount, Integer taxAmount, String description) { this.name = name; this.quantity = quantity; @@ -87,4 +90,13 @@ public LineItem setDescription(String description) { this.description = description; return this; } + + public String getCategory() { + return category; + } + + public LineItem setCategory(String category) { + this.category = category; + return this; + } } diff --git a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java index b28aeb02..6dc8f6ea 100644 --- a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java +++ b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java @@ -81,6 +81,9 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont if (object.has("Reference") && !object.get("Reference").isJsonNull()) { payInPaymentDetailsPayPal.setReference(object.get("Reference").getAsString()); } + if (object.has("CancelURL") && !object.get("CancelURL").isJsonNull()) { + payInPaymentDetailsPayPal.setCancelUrl(object.get("CancelURL").getAsString()); + } payIn.setPaymentDetails(payInPaymentDetailsPayPal); break; case PAYCONIQ: diff --git a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java index 8217782f..01e6e0f9 100644 --- a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java +++ b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java @@ -50,6 +50,7 @@ public JsonElement serialize(PayIn src, Type typeOfSrc, JsonSerializationContext object.add("LineItems", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getLineItems())); object.add("ShippingPreference", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getShippingPreference())); object.add("Reference", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getReference())); + object.add("CancelURL", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getCancelUrl())); break; case "PayInPaymentDetailsPayconiq": object.add("Country", context.serialize(((PayInPaymentDetailsPayconiq) src.getPaymentDetails()).getCountry())); diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java index 3bb907fe..49fed78e 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java @@ -46,6 +46,9 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail @SerializedName("Reference") private String reference; + @SerializedName("CancelURL") + private String cancelUrl; + public ShippingAddress getShippingAddress() { return shippingAddress; } @@ -81,6 +84,15 @@ public PayInPaymentDetailsPayPal setLineItems(List lineItems) { return this; } + public String getCancelUrl() { + return cancelUrl; + } + + public PayInPaymentDetailsPayPal setCancelUrl(String cancelUrl) { + this.cancelUrl = cancelUrl; + return this; + } + @Override public Map getSubObjects() { Map subObjects = super.getSubObjects(); diff --git a/src/test/java/com/mangopay/core/PayInApiImplTest.java b/src/test/java/com/mangopay/core/PayInApiImplTest.java index 9f5d6bda..0a8fcc93 100644 --- a/src/test/java/com/mangopay/core/PayInApiImplTest.java +++ b/src/test/java/com/mangopay/core/PayInApiImplTest.java @@ -606,11 +606,13 @@ public void createPayPalWebV2() throws Exception { 1000, 0, "test descr" - )); + ) + .setCategory("Category1")); paymentDetails.setLineItems(lineItems); paymentDetails.setShippingPreference(ShippingPreference.GET_FROM_FILE); paymentDetails.setReference("Reference"); paymentDetails.setStatementDescriptor("sttm"); + paymentDetails.setCancelUrl("http://cancelurl.com"); payIn.setPaymentDetails(paymentDetails); From c2d66d9e16ffd197bb51f92c069b31ad283ac644 Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Wed, 13 Mar 2024 14:08:00 +0200 Subject: [PATCH 2/9] updated test --- src/test/java/com/mangopay/core/PayInApiImplTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/mangopay/core/PayInApiImplTest.java b/src/test/java/com/mangopay/core/PayInApiImplTest.java index 0a8fcc93..1b1ddabc 100644 --- a/src/test/java/com/mangopay/core/PayInApiImplTest.java +++ b/src/test/java/com/mangopay/core/PayInApiImplTest.java @@ -607,7 +607,7 @@ public void createPayPalWebV2() throws Exception { 0, "test descr" ) - .setCategory("Category1")); + .setCategory("PHYSICAL_GOODS")); paymentDetails.setLineItems(lineItems); paymentDetails.setShippingPreference(ShippingPreference.GET_FROM_FILE); paymentDetails.setReference("Reference"); @@ -631,6 +631,7 @@ public void createPayPalWebV2() throws Exception { assertEquals(PayInExecutionType.WEB, createdPayIn.getExecutionType()); assertFalse(((PayInPaymentDetailsPayPal) createdPayIn.getPaymentDetails()).getLineItems().isEmpty()); assertTrue(((PayInPaymentDetailsPayPal) createdPayIn.getPaymentDetails()).getLineItems().get(0) instanceof LineItem); + assertNotNull(((PayInPaymentDetailsPayPal) createdPayIn.getPaymentDetails()).getLineItems().get(0).getCategory()); } @Test From 285e5be329b8d1218c319f841a0ca1f204f1d5ef Mon Sep 17 00:00:00 2001 From: Mihai Moiseanu Date: Wed, 27 Mar 2024 11:42:39 +0200 Subject: [PATCH 3/9] add missing parameters added payin tracking endpoint --- .../java/com/mangopay/core/APIs/ApiBase.java | 1 + .../java/com/mangopay/core/APIs/PayInApi.java | 14 ++++ .../APIs/implementation/PayInApiImpl.java | 6 ++ .../PayInPaymentDetailsPayPal.java | 77 +++++++++++++++++++ .../subentities/PayPalWebTrackingData.java | 51 ++++++++++++ 5 files changed, 149 insertions(+) create mode 100644 src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java diff --git a/src/main/java/com/mangopay/core/APIs/ApiBase.java b/src/main/java/com/mangopay/core/APIs/ApiBase.java index cecde9e8..c794dc20 100644 --- a/src/main/java/com/mangopay/core/APIs/ApiBase.java +++ b/src/main/java/com/mangopay/core/APIs/ApiBase.java @@ -100,6 +100,7 @@ protected MangoPayApi getRoot() { put("payins_klarna-web_create", new String[]{"/payins/payment-methods/klarna", RequestType.POST.toString()}); put("payins_ideal-web_create", new String[]{"/payins/payment-methods/ideal", RequestType.POST.toString()}); put("payins_giropay-web_create", new String[]{"/payins/payment-methods/giropay", RequestType.POST.toString()}); + put("add_tracking_info", new String[]{"/payins/%s/trackings", RequestType.PUT.toString()}); put("payment_method-metadata", new String[]{"/payment-methods/metadata", RequestType.POST.toString()}); diff --git a/src/main/java/com/mangopay/core/APIs/PayInApi.java b/src/main/java/com/mangopay/core/APIs/PayInApi.java index 94d450a0..2fca425e 100644 --- a/src/main/java/com/mangopay/core/APIs/PayInApi.java +++ b/src/main/java/com/mangopay/core/APIs/PayInApi.java @@ -4,6 +4,7 @@ import com.mangopay.core.Sorting; import com.mangopay.entities.*; import com.mangopay.entities.subentities.CreateCardPreAuthorizedDepositPayIn; +import com.mangopay.entities.subentities.PayPalWebTrackingData; import java.util.List; @@ -142,4 +143,17 @@ public interface PayInApi { * @throws Exception */ PaymentMethodMetadata getPaymentMethodMetadata(PaymentMethodMetadata metadata) throws Exception; + + + /** + * Add tracking information to a PayPal PayIn (add the tracking number and carrier for LineItems shipments.) + * Caution – Tracking information cannot be edited + * You can’t modify the TrackingNumber, Carrier, or NotifyBuyer once added. + * You can only send a unique tracking number once. + * + * @param payInId The ID of the PayIn + * @param trackingData trackingInformation object + * @return {PayIn} object returned by the API + */ + PayIn addPayPalTrackingInformation(String payInId, PayPalWebTrackingData trackingData) throws Exception; } diff --git a/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java b/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java index 3b7cc249..fb02ec23 100644 --- a/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java +++ b/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java @@ -11,6 +11,7 @@ import com.mangopay.core.serializer.PayInSerializer; import com.mangopay.entities.*; import com.mangopay.entities.subentities.CreateCardPreAuthorizedDepositPayIn; +import com.mangopay.entities.subentities.PayPalWebTrackingData; import java.util.List; @@ -134,4 +135,9 @@ public PayIn createPayPal(PayIn payIn) throws Exception { public PaymentMethodMetadata getPaymentMethodMetadata(PaymentMethodMetadata metadata) throws Exception { return this.createObject(PaymentMethodMetadata.class, null, "payment_method-metadata", metadata); } + + @Override + public PayIn addPayPalTrackingInformation(String payInId, PayPalWebTrackingData trackingData) throws Exception { + return this.updateObject(PayIn.class, "add_tracking_info", trackingData, payInId); + } } diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java index 49fed78e..ca4b4f41 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java @@ -49,6 +49,27 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail @SerializedName("CancelURL") private String cancelUrl; + @SerializedName("PaypalPayerID") + private String paypalPayerId; + + @SerializedName("BuyerCountry") + private String buyerCountry; + + @SerializedName("BuyerFirstname") + private String buyerFirstname; + + @SerializedName("BuyerLastname") + private String buyerLastname; + + @SerializedName("BuyerPhone") + private String buyerPhone; + + @SerializedName("PaypalOrderID") + private String paypalOrderID; + + @SerializedName("Trackings") + private PayPalWebTrackingData trackings; + public ShippingAddress getShippingAddress() { return shippingAddress; } @@ -127,4 +148,60 @@ public String getReference() { public void setReference(String reference) { this.reference = reference; } + + public String getPaypalPayerId() { + return paypalPayerId; + } + + public void setPaypalPayerId(String paypalPayerId) { + this.paypalPayerId = paypalPayerId; + } + + public String getBuyerCountry() { + return buyerCountry; + } + + public void setBuyerCountry(String buyerCountry) { + this.buyerCountry = buyerCountry; + } + + public String getBuyerFirstname() { + return buyerFirstname; + } + + public void setBuyerFirstname(String buyerFirstname) { + this.buyerFirstname = buyerFirstname; + } + + public String getBuyerLastname() { + return buyerLastname; + } + + public void setBuyerLastname(String buyerLastname) { + this.buyerLastname = buyerLastname; + } + + public String getBuyerPhone() { + return buyerPhone; + } + + public void setBuyerPhone(String buyerPhone) { + this.buyerPhone = buyerPhone; + } + + public String getPaypalOrderID() { + return paypalOrderID; + } + + public void setPaypalOrderID(String paypalOrderID) { + this.paypalOrderID = paypalOrderID; + } + + public PayPalWebTrackingData getTrackings() { + return trackings; + } + + public void setTrackings(PayPalWebTrackingData trackings) { + this.trackings = trackings; + } } diff --git a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java b/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java new file mode 100644 index 00000000..94624b20 --- /dev/null +++ b/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java @@ -0,0 +1,51 @@ +package com.mangopay.entities.subentities; + +import com.google.gson.annotations.SerializedName; +import com.mangopay.core.Dto; + +public class PayPalWebTrackingData extends Dto { + + /** + * The shipment’s tracking number provided by the carrier. + */ + @SerializedName("TrackingNumber") + private String trackingNumber; + /** + * The carrier for the shipment. Use the country-specific version of the carrier if it exists, + * otherwise use its global version. + * Returned values: One of the carriers supported by PayPal. + */ + @SerializedName("Carrier") + private String carrier; + /** + * If true, sends an email notification to the PaypalBuyerAccountEmail containing the TrackingNumber and Carrier, + * which allows the end user to track their shipment with the carrier. + * Default value: false + */ + @SerializedName("NotifyBuyer") + private boolean notifyBuyer; + + public String getTrackingNumber() { + return trackingNumber; + } + + public void setTrackingNumber(String trackingNumber) { + this.trackingNumber = trackingNumber; + } + + public String getCarrier() { + return carrier; + } + + public void setCarrier(String carrier) { + this.carrier = carrier; + } + + public boolean isNotifyBuyer() { + return notifyBuyer; + } + + public void setNotifyBuyer(boolean notifyBuyer) { + this.notifyBuyer = notifyBuyer; + } +} From 1a274836b9edfefb7658a9b71f932cf3b95e5809 Mon Sep 17 00:00:00 2001 From: Mihai Moiseanu Date: Wed, 27 Mar 2024 11:53:50 +0200 Subject: [PATCH 4/9] added new fields to serializers --- .../core/deserializer/PayInDeserializer.java | 25 ++++++++++++++++++- .../core/serializer/PayInSerializer.java | 7 ++++++ .../PayInPaymentDetailsPayPal.java | 20 +++++++-------- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java index 6dc8f6ea..7ce5c4b1 100644 --- a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java +++ b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java @@ -84,6 +84,28 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont if (object.has("CancelURL") && !object.get("CancelURL").isJsonNull()) { payInPaymentDetailsPayPal.setCancelUrl(object.get("CancelURL").getAsString()); } + if (object.has("PaypalPayerID") && !object.get("PaypalPayerID").isJsonNull()) { + payInPaymentDetailsPayPal.setPaypalOrderID(object.get("PaypalPayerID").getAsString()); + } + if (object.has("BuyerCountry") && !object.get("BuyerCountry").isJsonNull()) { + payInPaymentDetailsPayPal.setBuyerCountry(object.get("BuyerCountry").getAsString()); + } + if (object.has("BuyerFirstname") && !object.get("BuyerFirstname").isJsonNull()) { + payInPaymentDetailsPayPal.setBuyerFirstName(object.get("BuyerFirstname").getAsString()); + } + if (object.has("BuyerLastname") && !object.get("BuyerLastname").isJsonNull()) { + payInPaymentDetailsPayPal.setBuyerLastName(object.get("BuyerLastname").getAsString()); + } + if (object.has("BuyerPhone") && !object.get("BuyerPhone").isJsonNull()) { + payInPaymentDetailsPayPal.setBuyerPhone(object.get("BuyerPhone").getAsString()); + } + if (object.has("PaypalOrderID") && !object.get("PaypalOrderID").isJsonNull()) { + payInPaymentDetailsPayPal.setPaypalOrderID(object.get("PaypalOrderID").getAsString()); + } + if (object.has("Trackings") && !object.get("Trackings").isJsonNull()) { + payInPaymentDetailsPayPal.setTrackings((PayPalWebTrackingData) context.deserialize(object.get("Trackings"), PayPalWebTrackingData.class)); + } + payIn.setPaymentDetails(payInPaymentDetailsPayPal); break; case PAYCONIQ: @@ -181,7 +203,8 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont case KLARNA: PayInPaymentDetailsKlarna payInPaymentDetailsKlarna = new PayInPaymentDetailsKlarna(); if (object.has("LineItems") && !object.get("LineItems").isJsonNull()) { - Type listType = new TypeToken>(){}.getType(); + Type listType = new TypeToken>() { + }.getType(); payInPaymentDetailsKlarna.setLineItems((List) context.deserialize(object.get("LineItems"), listType)); } if (object.has("Shipping") && !object.get("Shipping").isJsonNull()) diff --git a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java index 01e6e0f9..f2d72be9 100644 --- a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java +++ b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java @@ -51,6 +51,13 @@ public JsonElement serialize(PayIn src, Type typeOfSrc, JsonSerializationContext object.add("ShippingPreference", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getShippingPreference())); object.add("Reference", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getReference())); object.add("CancelURL", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getCancelUrl())); + object.add("PaypalPayerID", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getPaypalPayerId())); + object.add("BuyerCountry", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getBuyerCountry())); + object.add("BuyerFirstname", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getBuyerFirstName())); + object.add("BuyerLastname", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getBuyerLastName())); + object.add("BuyerPhone", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getBuyerPhone())); + object.add("PaypalOrderID", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getPaypalOrderID())); + object.add("Trackings", context.serialize(((PayInPaymentDetailsPayPal) src.getPaymentDetails()).getTrackings())); break; case "PayInPaymentDetailsPayconiq": object.add("Country", context.serialize(((PayInPaymentDetailsPayconiq) src.getPaymentDetails()).getCountry())); diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java index ca4b4f41..294972d5 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java @@ -56,10 +56,10 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail private String buyerCountry; @SerializedName("BuyerFirstname") - private String buyerFirstname; + private String buyerFirstName; @SerializedName("BuyerLastname") - private String buyerLastname; + private String buyerLastName; @SerializedName("BuyerPhone") private String buyerPhone; @@ -165,20 +165,20 @@ public void setBuyerCountry(String buyerCountry) { this.buyerCountry = buyerCountry; } - public String getBuyerFirstname() { - return buyerFirstname; + public String getBuyerFirstName() { + return buyerFirstName; } - public void setBuyerFirstname(String buyerFirstname) { - this.buyerFirstname = buyerFirstname; + public void setBuyerFirstName(String buyerFirstname) { + this.buyerFirstName = buyerFirstname; } - public String getBuyerLastname() { - return buyerLastname; + public String getBuyerLastName() { + return buyerLastName; } - public void setBuyerLastname(String buyerLastname) { - this.buyerLastname = buyerLastname; + public void setBuyerLastName(String buyerLastname) { + this.buyerLastName = buyerLastname; } public String getBuyerPhone() { From aefe4de8c4af4d69df0b15ae806b07c4732458d4 Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Wed, 27 Mar 2024 12:40:52 +0200 Subject: [PATCH 5/9] small changes to setters --- .../PayInPaymentDetailsPayPal.java | 38 +++++++++++-------- .../subentities/PayPalWebTrackingData.java | 9 +++-- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java index 294972d5..651da04e 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java @@ -24,10 +24,6 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail @SerializedName("ShippingAddress") private ShippingAddress shippingAddress; - @Deprecated - @SerializedName("PaypalBuyerAccountEmail") - private String paypalBuyerAccountEmail; - /// V2 /// @@ -67,6 +63,9 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail @SerializedName("PaypalOrderID") private String paypalOrderID; + @SerializedName("PaypalBuyerAccountEmail") + private String paypalBuyerAccountEmail; + @SerializedName("Trackings") private PayPalWebTrackingData trackings; @@ -137,71 +136,80 @@ public ShippingPreference getShippingPreference() { return shippingPreference; } - public void setShippingPreference(ShippingPreference shippingPreference) { + public PayInPaymentDetailsPayPal setShippingPreference(ShippingPreference shippingPreference) { this.shippingPreference = shippingPreference; + return this; } public String getReference() { return reference; } - public void setReference(String reference) { + public PayInPaymentDetailsPayPal setReference(String reference) { this.reference = reference; + return this; } public String getPaypalPayerId() { return paypalPayerId; } - public void setPaypalPayerId(String paypalPayerId) { + public PayInPaymentDetailsPayPal setPaypalPayerId(String paypalPayerId) { this.paypalPayerId = paypalPayerId; + return this; } public String getBuyerCountry() { return buyerCountry; } - public void setBuyerCountry(String buyerCountry) { + public PayInPaymentDetailsPayPal setBuyerCountry(String buyerCountry) { this.buyerCountry = buyerCountry; + return this; } public String getBuyerFirstName() { return buyerFirstName; } - public void setBuyerFirstName(String buyerFirstname) { - this.buyerFirstName = buyerFirstname; + public PayInPaymentDetailsPayPal setBuyerFirstName(String buyerFirstName) { + this.buyerFirstName = buyerFirstName; + return this; } public String getBuyerLastName() { return buyerLastName; } - public void setBuyerLastName(String buyerLastname) { - this.buyerLastName = buyerLastname; + public PayInPaymentDetailsPayPal setBuyerLastName(String buyerLastName) { + this.buyerLastName = buyerLastName; + return this; } public String getBuyerPhone() { return buyerPhone; } - public void setBuyerPhone(String buyerPhone) { + public PayInPaymentDetailsPayPal setBuyerPhone(String buyerPhone) { this.buyerPhone = buyerPhone; + return this; } public String getPaypalOrderID() { return paypalOrderID; } - public void setPaypalOrderID(String paypalOrderID) { + public PayInPaymentDetailsPayPal setPaypalOrderID(String paypalOrderID) { this.paypalOrderID = paypalOrderID; + return this; } public PayPalWebTrackingData getTrackings() { return trackings; } - public void setTrackings(PayPalWebTrackingData trackings) { + public PayInPaymentDetailsPayPal setTrackings(PayPalWebTrackingData trackings) { this.trackings = trackings; + return this; } } diff --git a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java b/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java index 94624b20..5fdd7a2f 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java +++ b/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java @@ -29,23 +29,26 @@ public String getTrackingNumber() { return trackingNumber; } - public void setTrackingNumber(String trackingNumber) { + public PayPalWebTrackingData setTrackingNumber(String trackingNumber) { this.trackingNumber = trackingNumber; + return this; } public String getCarrier() { return carrier; } - public void setCarrier(String carrier) { + public PayPalWebTrackingData setCarrier(String carrier) { this.carrier = carrier; + return this; } public boolean isNotifyBuyer() { return notifyBuyer; } - public void setNotifyBuyer(boolean notifyBuyer) { + public PayPalWebTrackingData setNotifyBuyer(boolean notifyBuyer) { this.notifyBuyer = notifyBuyer; + return this; } } From 9c2121c3e97a8de94f28089bfbad7b25451596de Mon Sep 17 00:00:00 2001 From: Mihai Moiseanu Date: Wed, 27 Mar 2024 13:40:19 +0200 Subject: [PATCH 6/9] fix trackings paypal endpoint --- .../com/mangopay/core/deserializer/PayInDeserializer.java | 4 +++- .../entities/subentities/PayInPaymentDetailsPayPal.java | 6 +++--- .../entities/subentities/PayPalWebTrackingData.java | 4 ++-- src/main/resources/com/mangopay/core/mangopay.properties | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java index 7ce5c4b1..1379b540 100644 --- a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java +++ b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java @@ -103,7 +103,9 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont payInPaymentDetailsPayPal.setPaypalOrderID(object.get("PaypalOrderID").getAsString()); } if (object.has("Trackings") && !object.get("Trackings").isJsonNull()) { - payInPaymentDetailsPayPal.setTrackings((PayPalWebTrackingData) context.deserialize(object.get("Trackings"), PayPalWebTrackingData.class)); + Type listType = new TypeToken>() { + }.getType(); + payInPaymentDetailsPayPal.setTrackings((List) context.deserialize(object.get("Trackings"), listType)); } payIn.setPaymentDetails(payInPaymentDetailsPayPal); diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java index 651da04e..08e0355b 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java @@ -67,7 +67,7 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail private String paypalBuyerAccountEmail; @SerializedName("Trackings") - private PayPalWebTrackingData trackings; + private List trackings; public ShippingAddress getShippingAddress() { return shippingAddress; @@ -204,11 +204,11 @@ public PayInPaymentDetailsPayPal setPaypalOrderID(String paypalOrderID) { return this; } - public PayPalWebTrackingData getTrackings() { + public List getTrackings() { return trackings; } - public PayInPaymentDetailsPayPal setTrackings(PayPalWebTrackingData trackings) { + public PayInPaymentDetailsPayPal setTrackings(List trackings) { this.trackings = trackings; return this; } diff --git a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java b/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java index 5fdd7a2f..0fbb2798 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java +++ b/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java @@ -1,9 +1,9 @@ package com.mangopay.entities.subentities; import com.google.gson.annotations.SerializedName; -import com.mangopay.core.Dto; +import com.mangopay.core.EntityBase; -public class PayPalWebTrackingData extends Dto { +public class PayPalWebTrackingData extends EntityBase { /** * The shipment’s tracking number provided by the carrier. diff --git a/src/main/resources/com/mangopay/core/mangopay.properties b/src/main/resources/com/mangopay/core/mangopay.properties index a3ee0ba1..347799b2 100644 --- a/src/main/resources/com/mangopay/core/mangopay.properties +++ b/src/main/resources/com/mangopay/core/mangopay.properties @@ -1,2 +1,2 @@ -#Fri Feb 16 11:11:37 EET 2024 +#Wed Mar 27 13:36:37 EET 2024 version=2.36.0 From 0de2031c9c52f0ac1be7546ee0c593ef5b7247d0 Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Thu, 28 Mar 2024 09:26:13 +0200 Subject: [PATCH 7/9] added SecureMode to CardValidation --- .../com/mangopay/entities/CardValidation.java | 15 +++++++++++++++ src/test/java/com/mangopay/core/BaseTest.java | 1 + .../java/com/mangopay/core/CardApiImplTest.java | 1 + 3 files changed, 17 insertions(+) diff --git a/src/main/java/com/mangopay/entities/CardValidation.java b/src/main/java/com/mangopay/entities/CardValidation.java index c4cc8371..4d56a9f5 100644 --- a/src/main/java/com/mangopay/entities/CardValidation.java +++ b/src/main/java/com/mangopay/entities/CardValidation.java @@ -41,6 +41,12 @@ public class CardValidation extends EntityBase { @SerializedName("SecureModeNeeded") private String secureModeNeeded; + /** + * The mode applied for the 3DS2 protocol for CB, Visa, and Mastercard + */ + @SerializedName("SecureMode") + private SecureMode secureMode; + @SerializedName("IpAddress") private String ipAddress; @@ -230,6 +236,15 @@ public void setSecureModeReturnUrl(String secureModeReturnUrl) { public void setApplied3DSVersion(String applied3DSVersion) { this.applied3DSVersion = applied3DSVersion; } + public SecureMode getSecureMode() { + return secureMode; + } + + public CardValidation setSecureMode(SecureMode secureMode) { + this.secureMode = secureMode; + return this; + } + /** * Gets map which property is an object and what type of object. * To be overridden in child class if has any sub objects. diff --git a/src/test/java/com/mangopay/core/BaseTest.java b/src/test/java/com/mangopay/core/BaseTest.java index 4987f6b2..3a50f291 100644 --- a/src/test/java/com/mangopay/core/BaseTest.java +++ b/src/test/java/com/mangopay/core/BaseTest.java @@ -1195,6 +1195,7 @@ protected CardValidation createJohnsCardValidation() throws Exception { cardValidation.setAuthorId(user.getId()); cardValidation.setSecureModeReturnUrl("http://test.com"); + cardValidation.setSecureMode(SecureMode.NO_CHOICE); cardValidation.setBrowserInfo(getNewBrowserInfo()); cardValidation.setIpAddress("2001:0620:0000:0000:0211:24FF:FE80:C12C"); diff --git a/src/test/java/com/mangopay/core/CardApiImplTest.java b/src/test/java/com/mangopay/core/CardApiImplTest.java index e32dd9ec..c818911b 100644 --- a/src/test/java/com/mangopay/core/CardApiImplTest.java +++ b/src/test/java/com/mangopay/core/CardApiImplTest.java @@ -57,6 +57,7 @@ public void validateCard() throws Exception{ assertNotNull(cardValidation); assertNotNull(cardValidation.getId()); + assertNotNull(cardValidation.getSecureMode()); assertEquals(TransactionType.CARD_VALIDATION, cardValidation.getType()); } From bb6181da57fd43860ea30355dea7e0961340d178 Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Thu, 28 Mar 2024 09:50:36 +0200 Subject: [PATCH 8/9] updated test --- src/test/java/com/mangopay/core/WalletApiImplTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/mangopay/core/WalletApiImplTest.java b/src/test/java/com/mangopay/core/WalletApiImplTest.java index 0610f1e4..35dab398 100644 --- a/src/test/java/com/mangopay/core/WalletApiImplTest.java +++ b/src/test/java/com/mangopay/core/WalletApiImplTest.java @@ -59,7 +59,7 @@ public void getWalletTransactions() throws Exception { filter.setType(TransactionType.PAYIN); // wait 2 seconds for the transactions to be created in the API - Thread.sleep(2); + Thread.sleep(2000); List transactions = this.api.getWalletApi().getTransactions(wallet.getId(), pagination, filter); From c9d127ecc05c8978bce12fd4ebf2c046292be410 Mon Sep 17 00:00:00 2001 From: Iulian Masar Date: Thu, 28 Mar 2024 11:03:19 +0200 Subject: [PATCH 9/9] renamed param --- src/main/java/com/mangopay/core/APIs/PayInApi.java | 4 ++-- .../mangopay/core/APIs/implementation/PayInApiImpl.java | 4 ++-- .../com/mangopay/core/deserializer/PayInDeserializer.java | 4 ++-- .../entities/subentities/PayInPaymentDetailsPayPal.java | 6 +++--- ...{PayPalWebTrackingData.java => PayPalWebTracking.java} | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) rename src/main/java/com/mangopay/entities/subentities/{PayPalWebTrackingData.java => PayPalWebTracking.java} (82%) diff --git a/src/main/java/com/mangopay/core/APIs/PayInApi.java b/src/main/java/com/mangopay/core/APIs/PayInApi.java index 2fca425e..5f0a7bda 100644 --- a/src/main/java/com/mangopay/core/APIs/PayInApi.java +++ b/src/main/java/com/mangopay/core/APIs/PayInApi.java @@ -4,7 +4,7 @@ import com.mangopay.core.Sorting; import com.mangopay.entities.*; import com.mangopay.entities.subentities.CreateCardPreAuthorizedDepositPayIn; -import com.mangopay.entities.subentities.PayPalWebTrackingData; +import com.mangopay.entities.subentities.PayPalWebTracking; import java.util.List; @@ -155,5 +155,5 @@ public interface PayInApi { * @param trackingData trackingInformation object * @return {PayIn} object returned by the API */ - PayIn addPayPalTrackingInformation(String payInId, PayPalWebTrackingData trackingData) throws Exception; + PayIn addPayPalTrackingInformation(String payInId, PayPalWebTracking trackingData) throws Exception; } diff --git a/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java b/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java index fb02ec23..b02f3e12 100644 --- a/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java +++ b/src/main/java/com/mangopay/core/APIs/implementation/PayInApiImpl.java @@ -11,7 +11,7 @@ import com.mangopay.core.serializer.PayInSerializer; import com.mangopay.entities.*; import com.mangopay.entities.subentities.CreateCardPreAuthorizedDepositPayIn; -import com.mangopay.entities.subentities.PayPalWebTrackingData; +import com.mangopay.entities.subentities.PayPalWebTracking; import java.util.List; @@ -137,7 +137,7 @@ public PaymentMethodMetadata getPaymentMethodMetadata(PaymentMethodMetadata meta } @Override - public PayIn addPayPalTrackingInformation(String payInId, PayPalWebTrackingData trackingData) throws Exception { + public PayIn addPayPalTrackingInformation(String payInId, PayPalWebTracking trackingData) throws Exception { return this.updateObject(PayIn.class, "add_tracking_info", trackingData, payInId); } } diff --git a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java index 1379b540..19d038ad 100644 --- a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java +++ b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java @@ -103,9 +103,9 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont payInPaymentDetailsPayPal.setPaypalOrderID(object.get("PaypalOrderID").getAsString()); } if (object.has("Trackings") && !object.get("Trackings").isJsonNull()) { - Type listType = new TypeToken>() { + Type listType = new TypeToken>() { }.getType(); - payInPaymentDetailsPayPal.setTrackings((List) context.deserialize(object.get("Trackings"), listType)); + payInPaymentDetailsPayPal.setTrackings((List) context.deserialize(object.get("Trackings"), listType)); } payIn.setPaymentDetails(payInPaymentDetailsPayPal); diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java index 08e0355b..d2e7952b 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsPayPal.java @@ -67,7 +67,7 @@ public class PayInPaymentDetailsPayPal extends Dto implements PayInPaymentDetail private String paypalBuyerAccountEmail; @SerializedName("Trackings") - private List trackings; + private List trackings; public ShippingAddress getShippingAddress() { return shippingAddress; @@ -204,11 +204,11 @@ public PayInPaymentDetailsPayPal setPaypalOrderID(String paypalOrderID) { return this; } - public List getTrackings() { + public List getTrackings() { return trackings; } - public PayInPaymentDetailsPayPal setTrackings(List trackings) { + public PayInPaymentDetailsPayPal setTrackings(List trackings) { this.trackings = trackings; return this; } diff --git a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java b/src/main/java/com/mangopay/entities/subentities/PayPalWebTracking.java similarity index 82% rename from src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java rename to src/main/java/com/mangopay/entities/subentities/PayPalWebTracking.java index 0fbb2798..9c738a0a 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayPalWebTrackingData.java +++ b/src/main/java/com/mangopay/entities/subentities/PayPalWebTracking.java @@ -3,7 +3,7 @@ import com.google.gson.annotations.SerializedName; import com.mangopay.core.EntityBase; -public class PayPalWebTrackingData extends EntityBase { +public class PayPalWebTracking extends EntityBase { /** * The shipment’s tracking number provided by the carrier. @@ -29,7 +29,7 @@ public String getTrackingNumber() { return trackingNumber; } - public PayPalWebTrackingData setTrackingNumber(String trackingNumber) { + public PayPalWebTracking setTrackingNumber(String trackingNumber) { this.trackingNumber = trackingNumber; return this; } @@ -38,7 +38,7 @@ public String getCarrier() { return carrier; } - public PayPalWebTrackingData setCarrier(String carrier) { + public PayPalWebTracking setCarrier(String carrier) { this.carrier = carrier; return this; } @@ -47,7 +47,7 @@ public boolean isNotifyBuyer() { return notifyBuyer; } - public PayPalWebTrackingData setNotifyBuyer(boolean notifyBuyer) { + public PayPalWebTracking setNotifyBuyer(boolean notifyBuyer) { this.notifyBuyer = notifyBuyer; return this; }