diff --git a/src/main/java/com/mangopay/core/APIs/ApiBase.java b/src/main/java/com/mangopay/core/APIs/ApiBase.java index d9c0e972..1e416cfa 100644 --- a/src/main/java/com/mangopay/core/APIs/ApiBase.java +++ b/src/main/java/com/mangopay/core/APIs/ApiBase.java @@ -101,6 +101,7 @@ protected MangoPayApi getRoot() { 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("payins_bancontact-web_create", new String[]{"/payins/payment-methods/bancontact", RequestType.POST.toString()}); + put("payins_twint-web_create", new String[]{"/payins/payment-methods/twint", 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/deserializer/PayInDeserializer.java b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java index 24509b49..94d96c96 100644 --- a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java +++ b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java @@ -262,6 +262,12 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont payInPaymentDetailsBancontact.setRecurring(object.get("Recurring").getAsBoolean()); payIn.setPaymentDetails(payInPaymentDetailsBancontact); break; + case TWINT: + PayInPaymentDetailsTwint payInPaymentDetailsTwint = new PayInPaymentDetailsTwint(); + if (object.has("StatementDescriptor") && !object.get("StatementDescriptor").isJsonNull()) + payInPaymentDetailsTwint.setStatementDescriptor(object.get("StatementDescriptor").getAsString()); + payIn.setPaymentDetails(payInPaymentDetailsTwint); + break; default: return null; } diff --git a/src/main/java/com/mangopay/core/enumerations/PayInPaymentType.java b/src/main/java/com/mangopay/core/enumerations/PayInPaymentType.java index 21ee035d..a0192319 100644 --- a/src/main/java/com/mangopay/core/enumerations/PayInPaymentType.java +++ b/src/main/java/com/mangopay/core/enumerations/PayInPaymentType.java @@ -97,7 +97,10 @@ public enum PayInPaymentType { /** * BANCONTACT payment type */ - BCMC - + BCMC, + /** + * TWINT payment type + */ + TWINT } diff --git a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java index 78d94850..981b13c4 100644 --- a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java +++ b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java @@ -128,6 +128,9 @@ public JsonElement serialize(PayIn src, Type typeOfSrc, JsonSerializationContext object.add("StatementDescriptor", context.serialize(((PayInPaymentDetailsBancontact) src.getPaymentDetails()).getStatementDescriptor())); object.add("Recurring", context.serialize(((PayInPaymentDetailsBancontact) src.getPaymentDetails()).getRecurring())); break; + case "PayInPaymentDetailsTwint": + object.add("StatementDescriptor", context.serialize(((PayInPaymentDetailsTwint) src.getPaymentDetails()).getStatementDescriptor())); + break; default: return null; } diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsTwint.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsTwint.java new file mode 100644 index 00000000..13ecdec9 --- /dev/null +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsTwint.java @@ -0,0 +1,30 @@ +package com.mangopay.entities.subentities; + +import com.google.gson.annotations.SerializedName; +import com.mangopay.core.Dto; +import com.mangopay.core.interfaces.PayInPaymentDetails; + +/** + * Class representing the TWINT type for mean of payment in PayIn entity. + */ +public class PayInPaymentDetailsTwint extends Dto implements PayInPaymentDetails { + + /** + * Max. length: 10 characters; only alphanumeric and spaces + *
+ * Custom description to appear on the user’s bank statement along with the platform name. + * Different banks may show more or less information. See the Customizing bank statement references article for details. + */ + @SerializedName("StatementDescriptor") + private String statementDescriptor; + + public String getStatementDescriptor() { + return statementDescriptor; + } + + public PayInPaymentDetailsTwint setStatementDescriptor(String statementDescriptor) { + this.statementDescriptor = statementDescriptor; + return this; + } + +} diff --git a/src/test/java/com/mangopay/core/BaseTest.java b/src/test/java/com/mangopay/core/BaseTest.java index 04e3d97f..71c15f21 100644 --- a/src/test/java/com/mangopay/core/BaseTest.java +++ b/src/test/java/com/mangopay/core/BaseTest.java @@ -439,6 +439,19 @@ protected Wallet getJohnsWallet() throws Exception { return BaseTest.JOHNS_WALLET; } + protected Wallet getNewWallet(CurrencyIso currencyIso) throws Exception { + UserNatural john = this.getJohn(); + + Wallet wallet = new Wallet(); + wallet.setOwners(new ArrayList