diff --git a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java index 94d96c96..e9a062f6 100644 --- a/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java +++ b/src/main/java/com/mangopay/core/deserializer/PayInDeserializer.java @@ -201,6 +201,12 @@ public PayIn deserialize(JsonElement json, Type typeOfT, JsonDeserializationCont PayInPaymentDetailsBlik payInPaymentDetailsBlik = new PayInPaymentDetailsBlik(); if (object.has("StatementDescriptor") && !object.get("StatementDescriptor").isJsonNull()) payInPaymentDetailsBlik.setStatementDescriptor(object.get("StatementDescriptor").getAsString()); + if (object.has("Code") && !object.get("Code").isJsonNull()) + payInPaymentDetailsBlik.setCode(object.get("Code").getAsString()); + if (object.has("IpAddress") && !object.get("IpAddress").isJsonNull()) + payInPaymentDetailsBlik.setIpAddress(object.get("IpAddress").getAsString()); + if (object.has("BrowserInfo") && !object.get("BrowserInfo").isJsonNull()) + payInPaymentDetailsBlik.setBrowserInfo((BrowserInfo) context.deserialize(object.get("BrowserInfo"), BrowserInfo.class)); payIn.setPaymentDetails(payInPaymentDetailsBlik); break; case MULTIBANCO: diff --git a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java index 981b13c4..9aa97e17 100644 --- a/src/main/java/com/mangopay/core/serializer/PayInSerializer.java +++ b/src/main/java/com/mangopay/core/serializer/PayInSerializer.java @@ -99,6 +99,9 @@ public JsonElement serialize(PayIn src, Type typeOfSrc, JsonSerializationContext break; case "PayInPaymentDetailsBlik": object.add("StatementDescriptor", context.serialize(((PayInPaymentDetailsBlik) src.getPaymentDetails()).getStatementDescriptor())); + object.add("Code", context.serialize(((PayInPaymentDetailsBlik) src.getPaymentDetails()).getCode())); + object.add("IpAddress", context.serialize(((PayInPaymentDetailsBlik) src.getPaymentDetails()).getIpAddress())); + object.add("BrowserInfo", context.serialize(((PayInPaymentDetailsBlik) src.getPaymentDetails()).getBrowserInfo())); break; case "PayInPaymentDetailsMultibanco": object.add("StatementDescriptor", context.serialize(((PayInPaymentDetailsMultibanco) src.getPaymentDetails()).getStatementDescriptor())); diff --git a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsBlik.java b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsBlik.java index 67f2f529..96142f2f 100644 --- a/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsBlik.java +++ b/src/main/java/com/mangopay/entities/subentities/PayInPaymentDetailsBlik.java @@ -14,6 +14,30 @@ public class PayInPaymentDetailsBlik extends Dto implements PayInPaymentDetails */ @SerializedName("StatementDescriptor") private String statementDescriptor; + + + /// Blik with "code" /// + + /** + * The 6-digit code from the user’s banking application. + * Required when creating a Blik PayIn with code. + */ + @SerializedName("Code") + private String code; + + /** + * The IP address of the end user initiating the transaction, in IPV4 or IPV6 format. + * Required when creating a Blik PayIn with code. + */ + @SerializedName("IpAddress") + private String ipAddress; + + /** + * Information about the browser used by the end user (author) to perform the payment. + * Required when creating a Blik PayIn with code. + */ + @SerializedName("BrowserInfo") + private BrowserInfo browserInfo; public String getStatementDescriptor() { return statementDescriptor; @@ -24,5 +48,30 @@ public PayInPaymentDetailsBlik setStatementDescriptor(String statementDescriptor return this; } - + public BrowserInfo getBrowserInfo() { + return browserInfo; + } + + public PayInPaymentDetailsBlik setBrowserInfo(BrowserInfo browserInfo) { + this.browserInfo = browserInfo; + return this; + } + + public String getIpAddress() { + return ipAddress; + } + + public PayInPaymentDetailsBlik setIpAddress(String ipAddress) { + this.ipAddress = ipAddress; + return this; + } + + public String getCode() { + return code; + } + + public PayInPaymentDetailsBlik setCode(String code) { + this.code = code; + return this; + } } diff --git a/src/test/java/com/mangopay/core/BaseTest.java b/src/test/java/com/mangopay/core/BaseTest.java index eb1e08b0..eb701060 100644 --- a/src/test/java/com/mangopay/core/BaseTest.java +++ b/src/test/java/com/mangopay/core/BaseTest.java @@ -721,6 +721,16 @@ protected PayIn getNewPayInBlikWeb(String userId) throws Exception { return this.api.getPayInApi().create(payIn); } + protected PayIn getNewPayInBlikWebWithCode(String userId) throws Exception { + PayIn payIn = getPayInBlikWeb(userId); + + ((PayInPaymentDetailsBlik) payIn.getPaymentDetails()).setCode("777365"); + ((PayInPaymentDetailsBlik) payIn.getPaymentDetails()).setIpAddress("159.180.248.187"); + ((PayInPaymentDetailsBlik) payIn.getPaymentDetails()).setBrowserInfo(getNewBrowserInfo()); + + return this.api.getPayInApi().create(payIn); + } + protected PayIn getNewPayInMultibancoWeb(String userId) throws Exception { PayIn payIn = getPayInMultibancoWeb(userId); diff --git a/src/test/java/com/mangopay/core/PayInApiImplTest.java b/src/test/java/com/mangopay/core/PayInApiImplTest.java index 5caf5eda..9d655611 100644 --- a/src/test/java/com/mangopay/core/PayInApiImplTest.java +++ b/src/test/java/com/mangopay/core/PayInApiImplTest.java @@ -1202,6 +1202,31 @@ public void createBlikWebPayIn() { } } + @Test + public void createBlikWebPayInWithCode() { + try { + UserNatural user = this.getJohn(); + PayIn created = this.getNewPayInBlikWebWithCode(user.getId()); + + assertNotNull(created); + assertEquals(TransactionStatus.CREATED, created.getStatus()); + assertEquals(PayInPaymentType.BLIK, created.getPaymentType()); + assertEquals(PayInExecutionType.WEB, created.getExecutionType()); + assertNotNull(((PayInPaymentDetailsBlik) created.getPaymentDetails()).getCode()); + assertNotNull(((PayInPaymentDetailsBlik) created.getPaymentDetails()).getIpAddress()); + assertNotNull(((PayInPaymentDetailsBlik) created.getPaymentDetails()).getBrowserInfo()); + + PayIn fetched = api.getPayInApi().get(created.getId()); + assertNotNull(fetched); + assertEquals(created.getId(), fetched.getId()); + assertNotNull(((PayInPaymentDetailsBlik) fetched.getPaymentDetails()).getCode()); + assertNotNull(((PayInPaymentDetailsBlik) fetched.getPaymentDetails()).getIpAddress()); + assertNotNull(((PayInPaymentDetailsBlik) fetched.getPaymentDetails()).getBrowserInfo()); + } catch (Exception ex) { + fail(ex.getMessage()); + } + } + @Test public void createMultibancoWebPayIn() { try {