From 59f5f672d917991f9c174abf941957aa69445ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Tue, 10 Sep 2024 17:04:45 +0300 Subject: [PATCH 01/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- .../java/com/cardinity/model/Payment.java | 2 +- .../cardinity/CardinityIntegrationTest.java | 58 +++++++++++++++++-- .../cardinity/model/SerializationTest.java | 3 +- .../validators/PaymentValidatorTest.java | 5 +- 4 files changed, 60 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/cardinity/model/Payment.java b/src/main/java/com/cardinity/model/Payment.java index 7512f6c..66a50ae 100644 --- a/src/main/java/com/cardinity/model/Payment.java +++ b/src/main/java/com/cardinity/model/Payment.java @@ -103,7 +103,7 @@ public BigDecimal getAmount() { } public void setAmount(BigDecimal amount) { - this.amount = amount.setScale(2, BigDecimal.ROUND_DOWN); + this.amount = amount; } public String getCurrency() { diff --git a/src/test/java/com/cardinity/CardinityIntegrationTest.java b/src/test/java/com/cardinity/CardinityIntegrationTest.java index 194fe88..fef75b4 100644 --- a/src/test/java/com/cardinity/CardinityIntegrationTest.java +++ b/src/test/java/com/cardinity/CardinityIntegrationTest.java @@ -6,6 +6,7 @@ import org.junit.Test; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -37,7 +38,7 @@ public static void setUpClass() throws Exception { private static Payment getBaseCCPayment() { Payment payment = new Payment(); payment.setCountry("LT"); - payment.setAmount(new BigDecimal(10)); + payment.setAmount(new BigDecimal(10).setScale(2, RoundingMode.HALF_EVEN)); payment.setCurrency("EUR"); payment.setDescription(TEST_PAYMENT_DESCRIPTION); payment.setPaymentMethod(Payment.Method.CARD); @@ -51,6 +52,13 @@ private static Payment getBaseCCPayment() { return payment; } + private static Payment getBaseCCPayment(String currency, BigDecimal amount) { + Payment payment = getBaseCCPayment(); + payment.setAmount(amount); + payment.setCurrency(currency); + return payment; + } + private static Threeds2Data getThreeds2Data() { Threeds2Data threeds2Data = new Threeds2Data(); threeds2Data.setNotificationUrl("http://notification.url"); @@ -109,7 +117,7 @@ public void testCreateApprovedPayment() { @Test public void testCreateDeclinedPayment() { Payment payment = getBaseCCPayment(); - payment.setAmount(new BigDecimal(160)); + payment.setAmount(new BigDecimal(160).setScale(2, RoundingMode.HALF_EVEN)); Result result = client.createPayment(payment); assertTrue(result.isValid()); @@ -157,7 +165,7 @@ public void testApprovedThreeDSecurePaymentV2() { public void testCreateApprovedRecurringPayment() { Payment initialResultPayment = createApprovedPayment(); Payment payment = getBaseCCPayment(); - payment.setAmount(new BigDecimal(20)); + payment.setAmount(new BigDecimal(20).setScale(2, RoundingMode.HALF_EVEN)); payment.setPaymentMethod(Payment.Method.RECURRING); Recurring recurringPayment = new Recurring(); recurringPayment.setPaymentId(initialResultPayment.getId()); @@ -171,7 +179,7 @@ public void testCreateApprovedRecurringPayment() { public void testCreateDeclinedRecurringPayment() { Payment initialResultPayment = createApprovedPayment(); Payment payment = getBaseCCPayment(); - payment.setAmount(new BigDecimal(160)); + payment.setAmount(new BigDecimal(160).setScale(2, RoundingMode.HALF_EVEN)); payment.setPaymentMethod(Payment.Method.RECURRING); Recurring recurringPayment = new Recurring(); recurringPayment.setPaymentId(initialResultPayment.getId()); @@ -476,6 +484,30 @@ public void testGetAllChargebacksWithLimit() { assertTrue(size <= limit); } + @Test + public void testCreateApprovedPaymentNoDecimal() { + Payment resultPayment = createApprovedPaymentJPY(); + assertEquals(APPROVED, resultPayment.getStatus()); + assertNotNull(resultPayment.getId()); + assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); + assertFalse(resultPayment.getLive()); + assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); + assertFalse(resultPayment.isThreedsV2()); + assertFalse(resultPayment.isThreedsV1()); + } + + @Test + public void testCreateApprovedPaymentMoreDecimal() { + Payment resultPayment = createApprovedPaymentKWD(); + assertEquals(APPROVED, resultPayment.getStatus()); + assertNotNull(resultPayment.getId()); + assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); + assertFalse(resultPayment.getLive()); + assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); + assertFalse(resultPayment.isThreedsV2()); + assertFalse(resultPayment.isThreedsV1()); + } + private Payment createApprovedPayment() { Payment payment = getBaseCCPayment(); Result initialResult = client.createPayment(payment); @@ -485,6 +517,24 @@ private Payment createApprovedPayment() { return resultPayment; } + private Payment createApprovedPaymentJPY() { + Payment payment = getBaseCCPayment("JPY", BigDecimal.valueOf(10).setScale(0, RoundingMode.HALF_EVEN)); + Result initialResult = client.createPayment(payment); + assertTrue(initialResult.isValid()); + Payment resultPayment = initialResult.getItem(); + assertEquals(APPROVED, resultPayment.getStatus()); + return resultPayment; + } + + private Payment createApprovedPaymentKWD() { + Payment payment = getBaseCCPayment("KWD", BigDecimal.valueOf(10.000).setScale(3, RoundingMode.HALF_EVEN)); + Result initialResult = client.createPayment(payment); + assertTrue(initialResult.isValid()); + Payment resultPayment = initialResult.getItem(); + assertEquals(APPROVED, resultPayment.getStatus()); + return resultPayment; + } + private Payment createPendingPayment(Payment payment, boolean v2) { Result result = client.createPayment(payment); assertTrue(result.isValid()); diff --git a/src/test/java/com/cardinity/model/SerializationTest.java b/src/test/java/com/cardinity/model/SerializationTest.java index 9f38628..28bd952 100644 --- a/src/test/java/com/cardinity/model/SerializationTest.java +++ b/src/test/java/com/cardinity/model/SerializationTest.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import static org.junit.Assert.assertEquals; @@ -14,7 +15,7 @@ public class SerializationTest extends CardinityBaseTest { @Test public void testSerializePaymentWithThreeds2Data() throws IOException { Payment payment = new Payment(); - payment.setAmount(new BigDecimal(20)); + payment.setAmount(new BigDecimal(20).setScale(2, RoundingMode.HALF_EVEN)); payment.setCurrency("EUR"); payment.setCountry("LT"); payment.setSettle(true); diff --git a/src/test/java/com/cardinity/validators/PaymentValidatorTest.java b/src/test/java/com/cardinity/validators/PaymentValidatorTest.java index 09c1bbe..0b85e50 100644 --- a/src/test/java/com/cardinity/validators/PaymentValidatorTest.java +++ b/src/test/java/com/cardinity/validators/PaymentValidatorTest.java @@ -8,6 +8,7 @@ import org.junit.Test; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.UUID; public class PaymentValidatorTest { @@ -18,7 +19,7 @@ public class PaymentValidatorTest { @Before public void setUp() { payment = new Payment(); - payment.setAmount(BigDecimal.ONE); + payment.setAmount(BigDecimal.ONE.setScale(2, RoundingMode.HALF_EVEN)); payment.setCountry("LT"); payment.setCurrency("EUR"); payment.setSettle(true); @@ -56,7 +57,7 @@ public void testValidateWrongCurrency() throws Exception { @Test(expected = ValidationException.class) public void testValidateWrongAmount() throws Exception { - payment.setAmount(BigDecimal.ZERO); + payment.setAmount(BigDecimal.ZERO.setScale(2, RoundingMode.HALF_EVEN)); paymentValidator.validate(payment); } From 66099d523e26822cb6c61c9490d16fb3c2a0a5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Tue, 10 Sep 2024 17:33:10 +0300 Subject: [PATCH 02/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) - version bump --- README.md | 4 ++-- VERSION | 2 +- pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 145cc98..52de596 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Add this dependency to your project's POM: com.cardinity cardinity-sdk-java - 1.9.0 + 1.11.0 ``` @@ -28,7 +28,7 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "com.cardinity:cardinity-sdk-java:1.9.0" +compile "com.cardinity:cardinity-sdk-java:1.11.0" ``` ### Other diff --git a/VERSION b/VERSION index abb1658..169f19b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.0 \ No newline at end of file +1.11.0 \ No newline at end of file diff --git a/pom.xml b/pom.xml index b05db20..a9699c3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.cardinity cardinity-sdk-java - 1.9.0 + 1.11.0 jar cardinity-sdk-java Cardinity payments API client for Java projects From 7e02d69e566ab1a610d3a8e72761a218d1deecf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Wed, 11 Sep 2024 10:35:56 +0300 Subject: [PATCH 03/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- README.md | 4 ++-- VERSION | 2 +- pom.xml | 2 +- .../java/com/cardinity/CardinityIntegrationTest.java | 10 ++++++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 52de596..145cc98 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Add this dependency to your project's POM: com.cardinity cardinity-sdk-java - 1.11.0 + 1.9.0 ``` @@ -28,7 +28,7 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "com.cardinity:cardinity-sdk-java:1.11.0" +compile "com.cardinity:cardinity-sdk-java:1.9.0" ``` ### Other diff --git a/VERSION b/VERSION index 169f19b..abb1658 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.11.0 \ No newline at end of file +1.9.0 \ No newline at end of file diff --git a/pom.xml b/pom.xml index a9699c3..b05db20 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.cardinity cardinity-sdk-java - 1.11.0 + 1.9.0 jar cardinity-sdk-java Cardinity payments API client for Java projects diff --git a/src/test/java/com/cardinity/CardinityIntegrationTest.java b/src/test/java/com/cardinity/CardinityIntegrationTest.java index fef75b4..945499e 100644 --- a/src/test/java/com/cardinity/CardinityIntegrationTest.java +++ b/src/test/java/com/cardinity/CardinityIntegrationTest.java @@ -19,6 +19,7 @@ public class CardinityIntegrationTest extends CardinityBaseTest { private static CardinityClient client; + private static CardinityClient passthroughClient; private static final String TEST_ORDER_ID = "cardinity-SDK-test"; private static final String TEST_PAYMENT_DESCRIPTION = "cardinity-SDK-payment"; @@ -33,6 +34,11 @@ public static void setUpClass() throws Exception { final String consumerSecret = System.getenv("CRD_SECRET"); if (consumerKey == null || consumerSecret == null) throw new Exception("Authorization keys missing"); client = new CardinityClient(consumerKey, consumerSecret); + + final String passthroughConsumerKey = System.getenv("PASSTHROUGH_CRD_KEY"); + final String passthroughConsumerSecret = System.getenv("PASSTHROUGH_CRD_SECRET"); + if (passthroughConsumerKey == null || passthroughConsumerSecret == null) throw new Exception("Authorization keys missing"); + passthroughClient = new CardinityClient(passthroughConsumerKey, passthroughConsumerSecret); } private static Payment getBaseCCPayment() { @@ -519,7 +525,7 @@ private Payment createApprovedPayment() { private Payment createApprovedPaymentJPY() { Payment payment = getBaseCCPayment("JPY", BigDecimal.valueOf(10).setScale(0, RoundingMode.HALF_EVEN)); - Result initialResult = client.createPayment(payment); + Result initialResult = passthroughClient.createPayment(payment); assertTrue(initialResult.isValid()); Payment resultPayment = initialResult.getItem(); assertEquals(APPROVED, resultPayment.getStatus()); @@ -528,7 +534,7 @@ private Payment createApprovedPaymentJPY() { private Payment createApprovedPaymentKWD() { Payment payment = getBaseCCPayment("KWD", BigDecimal.valueOf(10.000).setScale(3, RoundingMode.HALF_EVEN)); - Result initialResult = client.createPayment(payment); + Result initialResult = passthroughClient.createPayment(payment); assertTrue(initialResult.isValid()); Payment resultPayment = initialResult.getItem(); assertEquals(APPROVED, resultPayment.getStatus()); From f4716c8e579de22aadd17587a1f6120edd947095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Wed, 11 Sep 2024 12:50:17 +0300 Subject: [PATCH 04/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- src/test/java/com/cardinity/CardinityIntegrationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/cardinity/CardinityIntegrationTest.java b/src/test/java/com/cardinity/CardinityIntegrationTest.java index 945499e..49d4602 100644 --- a/src/test/java/com/cardinity/CardinityIntegrationTest.java +++ b/src/test/java/com/cardinity/CardinityIntegrationTest.java @@ -35,8 +35,8 @@ public static void setUpClass() throws Exception { if (consumerKey == null || consumerSecret == null) throw new Exception("Authorization keys missing"); client = new CardinityClient(consumerKey, consumerSecret); - final String passthroughConsumerKey = System.getenv("PASSTHROUGH_CRD_KEY"); - final String passthroughConsumerSecret = System.getenv("PASSTHROUGH_CRD_SECRET"); + final String passthroughConsumerKey = System.getenv("CRD_PASSTHROUGH_KEY"); + final String passthroughConsumerSecret = System.getenv("CRD_PASSTHROUGH_SECRET"); if (passthroughConsumerKey == null || passthroughConsumerSecret == null) throw new Exception("Authorization keys missing"); passthroughClient = new CardinityClient(passthroughConsumerKey, passthroughConsumerSecret); } From cb52bce6944ca556ce832115c92c0bd412c0881e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Wed, 11 Sep 2024 13:01:15 +0300 Subject: [PATCH 05/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- .github/workflows/maven-verify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/maven-verify.yml b/.github/workflows/maven-verify.yml index b12d531..2a188fc 100644 --- a/.github/workflows/maven-verify.yml +++ b/.github/workflows/maven-verify.yml @@ -25,4 +25,6 @@ jobs: env: CRD_KEY: ${{secrets.CRD_KEY}} CRD_SECRET: ${{secrets.CRD_SECRET}} + CRD_PASSTHROUGH_KEY: ${{secrets.CRD_PASSTHROUGH_KEY}} + CRD_PASSTHROUGH_SECRET: ${{secrets.CRD_PASSTHROUGH_SECRET}} run: mvn clean verify -Dgpg.skip=true \ No newline at end of file From ffe0d30cead3ac2286a87096b0086bab626feba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Thu, 12 Sep 2024 12:50:07 +0300 Subject: [PATCH 06/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- src/main/java/com/cardinity/model/Payment.java | 17 ++++++++++++++++- .../com/cardinity/CardinityIntegrationTest.java | 12 ++++++------ .../com/cardinity/model/SerializationTest.java | 2 +- .../validators/PaymentValidatorTest.java | 4 ++-- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/cardinity/model/Payment.java b/src/main/java/com/cardinity/model/Payment.java index 66a50ae..cfebf97 100644 --- a/src/main/java/com/cardinity/model/Payment.java +++ b/src/main/java/com/cardinity/model/Payment.java @@ -1,8 +1,11 @@ package com.cardinity.model; +import com.cardinity.exceptions.ValidationException; import com.google.gson.annotations.SerializedName; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Currency; import java.util.Date; import java.util.UUID; @@ -103,7 +106,11 @@ public BigDecimal getAmount() { } public void setAmount(BigDecimal amount) { - this.amount = amount; + if (currency != null) { + this.amount = amount.setScale(Currency.getInstance(currency).getDefaultFractionDigits(), RoundingMode.DOWN); + } else { + this.amount = amount; + } } public String getCurrency() { @@ -112,6 +119,14 @@ public String getCurrency() { public void setCurrency(String currency) { this.currency = currency; + if (currency != null && !currency.isEmpty()) { + try { + Currency currencyInstance = Currency.getInstance(currency); + if (amount != null) { + this.amount = this.amount.setScale(currencyInstance.getDefaultFractionDigits(), RoundingMode.DOWN); + } + } catch (IllegalArgumentException ignored){} + } } public Date getCreated() { diff --git a/src/test/java/com/cardinity/CardinityIntegrationTest.java b/src/test/java/com/cardinity/CardinityIntegrationTest.java index 49d4602..c3689a4 100644 --- a/src/test/java/com/cardinity/CardinityIntegrationTest.java +++ b/src/test/java/com/cardinity/CardinityIntegrationTest.java @@ -44,7 +44,7 @@ public static void setUpClass() throws Exception { private static Payment getBaseCCPayment() { Payment payment = new Payment(); payment.setCountry("LT"); - payment.setAmount(new BigDecimal(10).setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(new BigDecimal(10)); payment.setCurrency("EUR"); payment.setDescription(TEST_PAYMENT_DESCRIPTION); payment.setPaymentMethod(Payment.Method.CARD); @@ -123,7 +123,7 @@ public void testCreateApprovedPayment() { @Test public void testCreateDeclinedPayment() { Payment payment = getBaseCCPayment(); - payment.setAmount(new BigDecimal(160).setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(new BigDecimal(160)); Result result = client.createPayment(payment); assertTrue(result.isValid()); @@ -171,7 +171,7 @@ public void testApprovedThreeDSecurePaymentV2() { public void testCreateApprovedRecurringPayment() { Payment initialResultPayment = createApprovedPayment(); Payment payment = getBaseCCPayment(); - payment.setAmount(new BigDecimal(20).setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(new BigDecimal(20)); payment.setPaymentMethod(Payment.Method.RECURRING); Recurring recurringPayment = new Recurring(); recurringPayment.setPaymentId(initialResultPayment.getId()); @@ -185,7 +185,7 @@ public void testCreateApprovedRecurringPayment() { public void testCreateDeclinedRecurringPayment() { Payment initialResultPayment = createApprovedPayment(); Payment payment = getBaseCCPayment(); - payment.setAmount(new BigDecimal(160).setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(new BigDecimal(160)); payment.setPaymentMethod(Payment.Method.RECURRING); Recurring recurringPayment = new Recurring(); recurringPayment.setPaymentId(initialResultPayment.getId()); @@ -524,7 +524,7 @@ private Payment createApprovedPayment() { } private Payment createApprovedPaymentJPY() { - Payment payment = getBaseCCPayment("JPY", BigDecimal.valueOf(10).setScale(0, RoundingMode.HALF_EVEN)); + Payment payment = getBaseCCPayment("JPY", BigDecimal.valueOf(10)); Result initialResult = passthroughClient.createPayment(payment); assertTrue(initialResult.isValid()); Payment resultPayment = initialResult.getItem(); @@ -533,7 +533,7 @@ private Payment createApprovedPaymentJPY() { } private Payment createApprovedPaymentKWD() { - Payment payment = getBaseCCPayment("KWD", BigDecimal.valueOf(10.000).setScale(3, RoundingMode.HALF_EVEN)); + Payment payment = getBaseCCPayment("KWD", BigDecimal.valueOf(10.000)); Result initialResult = passthroughClient.createPayment(payment); assertTrue(initialResult.isValid()); Payment resultPayment = initialResult.getItem(); diff --git a/src/test/java/com/cardinity/model/SerializationTest.java b/src/test/java/com/cardinity/model/SerializationTest.java index 28bd952..95c1279 100644 --- a/src/test/java/com/cardinity/model/SerializationTest.java +++ b/src/test/java/com/cardinity/model/SerializationTest.java @@ -15,7 +15,7 @@ public class SerializationTest extends CardinityBaseTest { @Test public void testSerializePaymentWithThreeds2Data() throws IOException { Payment payment = new Payment(); - payment.setAmount(new BigDecimal(20).setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(new BigDecimal(20)); payment.setCurrency("EUR"); payment.setCountry("LT"); payment.setSettle(true); diff --git a/src/test/java/com/cardinity/validators/PaymentValidatorTest.java b/src/test/java/com/cardinity/validators/PaymentValidatorTest.java index 0b85e50..a085663 100644 --- a/src/test/java/com/cardinity/validators/PaymentValidatorTest.java +++ b/src/test/java/com/cardinity/validators/PaymentValidatorTest.java @@ -19,7 +19,7 @@ public class PaymentValidatorTest { @Before public void setUp() { payment = new Payment(); - payment.setAmount(BigDecimal.ONE.setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(BigDecimal.ONE); payment.setCountry("LT"); payment.setCurrency("EUR"); payment.setSettle(true); @@ -57,7 +57,7 @@ public void testValidateWrongCurrency() throws Exception { @Test(expected = ValidationException.class) public void testValidateWrongAmount() throws Exception { - payment.setAmount(BigDecimal.ZERO.setScale(2, RoundingMode.HALF_EVEN)); + payment.setAmount(BigDecimal.ZERO); paymentValidator.validate(payment); } From e6e48fdcfb6f5eb2a9b4144845a6bab9524b64f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Thu, 12 Sep 2024 13:18:14 +0300 Subject: [PATCH 07/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- src/test/java/com/cardinity/model/SerializationTest.java | 1 - src/test/java/com/cardinity/validators/PaymentValidatorTest.java | 1 - 2 files changed, 2 deletions(-) diff --git a/src/test/java/com/cardinity/model/SerializationTest.java b/src/test/java/com/cardinity/model/SerializationTest.java index 95c1279..9f38628 100644 --- a/src/test/java/com/cardinity/model/SerializationTest.java +++ b/src/test/java/com/cardinity/model/SerializationTest.java @@ -6,7 +6,6 @@ import java.io.IOException; import java.math.BigDecimal; -import java.math.RoundingMode; import java.text.ParseException; import static org.junit.Assert.assertEquals; diff --git a/src/test/java/com/cardinity/validators/PaymentValidatorTest.java b/src/test/java/com/cardinity/validators/PaymentValidatorTest.java index a085663..09c1bbe 100644 --- a/src/test/java/com/cardinity/validators/PaymentValidatorTest.java +++ b/src/test/java/com/cardinity/validators/PaymentValidatorTest.java @@ -8,7 +8,6 @@ import org.junit.Test; import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.UUID; public class PaymentValidatorTest { From 1e2943f303b33a9666bf4487fb6bf4a235de6450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Thu, 12 Sep 2024 14:14:50 +0300 Subject: [PATCH 08/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- src/main/java/com/cardinity/model/Payment.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cardinity/model/Payment.java b/src/main/java/com/cardinity/model/Payment.java index cfebf97..ef76dbe 100644 --- a/src/main/java/com/cardinity/model/Payment.java +++ b/src/main/java/com/cardinity/model/Payment.java @@ -107,7 +107,12 @@ public BigDecimal getAmount() { public void setAmount(BigDecimal amount) { if (currency != null) { - this.amount = amount.setScale(Currency.getInstance(currency).getDefaultFractionDigits(), RoundingMode.DOWN); + try { + Currency currencyInstance = Currency.getInstance(currency); + if (amount != null) { + this.amount = amount.setScale(currencyInstance.getDefaultFractionDigits(), RoundingMode.DOWN); + } + } catch (IllegalArgumentException ignored){} } else { this.amount = amount; } From 0526764aa94c821f659d5499388a527a65a8d506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Thu, 12 Sep 2024 16:14:33 +0300 Subject: [PATCH 09/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- .../java/com/cardinity/model/Payment.java | 4 +- .../cardinity/CardinityIntegrationTest.java | 60 ++++++------------- 2 files changed, 20 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/cardinity/model/Payment.java b/src/main/java/com/cardinity/model/Payment.java index ef76dbe..651dc95 100644 --- a/src/main/java/com/cardinity/model/Payment.java +++ b/src/main/java/com/cardinity/model/Payment.java @@ -111,11 +111,11 @@ public void setAmount(BigDecimal amount) { Currency currencyInstance = Currency.getInstance(currency); if (amount != null) { this.amount = amount.setScale(currencyInstance.getDefaultFractionDigits(), RoundingMode.DOWN); + return; } } catch (IllegalArgumentException ignored){} - } else { - this.amount = amount; } + this.amount = amount; } public String getCurrency() { diff --git a/src/test/java/com/cardinity/CardinityIntegrationTest.java b/src/test/java/com/cardinity/CardinityIntegrationTest.java index c3689a4..c76959e 100644 --- a/src/test/java/com/cardinity/CardinityIntegrationTest.java +++ b/src/test/java/com/cardinity/CardinityIntegrationTest.java @@ -6,7 +6,6 @@ import org.junit.Test; import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -111,13 +110,7 @@ private static Threeds2Data getThreeds2Data() { @Test public void testCreateApprovedPayment() { Payment resultPayment = createApprovedPayment(); - assertEquals(APPROVED, resultPayment.getStatus()); - assertNotNull(resultPayment.getId()); - assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); - assertFalse(resultPayment.getLive()); - assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); - assertFalse(resultPayment.isThreedsV2()); - assertFalse(resultPayment.isThreedsV1()); + assertResultPayment(resultPayment); } @Test @@ -144,13 +137,7 @@ public void testCreateApprovedPaymentWithDescriptorSuffix() { Result initialResult = client.createPayment(payment); assertTrue(initialResult.isValid()); Payment resultPayment = initialResult.getItem(); - assertEquals(APPROVED, resultPayment.getStatus()); - assertNotNull(resultPayment.getId()); - assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); - assertFalse(resultPayment.getLive()); - assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); - assertFalse(resultPayment.isThreedsV2()); - assertFalse(resultPayment.isThreedsV1()); + assertResultPayment(resultPayment); } @Test @@ -492,26 +479,14 @@ public void testGetAllChargebacksWithLimit() { @Test public void testCreateApprovedPaymentNoDecimal() { - Payment resultPayment = createApprovedPaymentJPY(); - assertEquals(APPROVED, resultPayment.getStatus()); - assertNotNull(resultPayment.getId()); - assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); - assertFalse(resultPayment.getLive()); - assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); - assertFalse(resultPayment.isThreedsV2()); - assertFalse(resultPayment.isThreedsV1()); + Payment resultPayment = createApprovedPassthroughPayment("JPY"); + assertResultPayment(resultPayment); } @Test public void testCreateApprovedPaymentMoreDecimal() { - Payment resultPayment = createApprovedPaymentKWD(); - assertEquals(APPROVED, resultPayment.getStatus()); - assertNotNull(resultPayment.getId()); - assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); - assertFalse(resultPayment.getLive()); - assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); - assertFalse(resultPayment.isThreedsV2()); - assertFalse(resultPayment.isThreedsV1()); + Payment resultPayment = createApprovedPassthroughPayment("KWD"); + assertResultPayment(resultPayment); } private Payment createApprovedPayment() { @@ -523,17 +498,8 @@ private Payment createApprovedPayment() { return resultPayment; } - private Payment createApprovedPaymentJPY() { - Payment payment = getBaseCCPayment("JPY", BigDecimal.valueOf(10)); - Result initialResult = passthroughClient.createPayment(payment); - assertTrue(initialResult.isValid()); - Payment resultPayment = initialResult.getItem(); - assertEquals(APPROVED, resultPayment.getStatus()); - return resultPayment; - } - - private Payment createApprovedPaymentKWD() { - Payment payment = getBaseCCPayment("KWD", BigDecimal.valueOf(10.000)); + private Payment createApprovedPassthroughPayment(String currency) { + Payment payment = getBaseCCPayment(currency, BigDecimal.valueOf(10)); Result initialResult = passthroughClient.createPayment(payment); assertTrue(initialResult.isValid()); Payment resultPayment = initialResult.getItem(); @@ -561,4 +527,14 @@ private Payment createPendingPayment(Payment payment, boolean v2) { } return resultPayment; } + + private void assertResultPayment(Payment resultPayment) { + assertEquals(APPROVED, resultPayment.getStatus()); + assertNotNull(resultPayment.getId()); + assertThat(resultPayment.getPaymentInstrument(), instanceOf(Card.class)); + assertFalse(resultPayment.getLive()); + assertEquals(TEST_PAYMENT_DESCRIPTION, resultPayment.getDescription()); + assertFalse(resultPayment.isThreedsV2()); + assertFalse(resultPayment.isThreedsV1()); + } } From da2bbf6c746c97688101bfd60b9fb0a070f7206e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Bre=C5=BEinskas?= Date: Thu, 12 Sep 2024 16:31:36 +0300 Subject: [PATCH 10/10] [CRD-788] add test cases for exotic currencies (decimal point != 2) --- README.md | 4 ++-- VERSION | 2 +- pom.xml | 2 +- src/main/java/com/cardinity/model/Payment.java | 6 ++---- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 15c9fc1..52de596 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Add this dependency to your project's POM: com.cardinity cardinity-sdk-java - 1.10.0 + 1.11.0 ``` @@ -28,7 +28,7 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "com.cardinity:cardinity-sdk-java:1.10.0" +compile "com.cardinity:cardinity-sdk-java:1.11.0" ``` ### Other diff --git a/VERSION b/VERSION index ed21137..169f19b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.0 \ No newline at end of file +1.11.0 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0e2f2f5..a9699c3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.cardinity cardinity-sdk-java - 1.10.0 + 1.11.0 jar cardinity-sdk-java Cardinity payments API client for Java projects diff --git a/src/main/java/com/cardinity/model/Payment.java b/src/main/java/com/cardinity/model/Payment.java index 651dc95..308539a 100644 --- a/src/main/java/com/cardinity/model/Payment.java +++ b/src/main/java/com/cardinity/model/Payment.java @@ -108,9 +108,8 @@ public BigDecimal getAmount() { public void setAmount(BigDecimal amount) { if (currency != null) { try { - Currency currencyInstance = Currency.getInstance(currency); if (amount != null) { - this.amount = amount.setScale(currencyInstance.getDefaultFractionDigits(), RoundingMode.DOWN); + this.amount = amount.setScale(Currency.getInstance(currency).getDefaultFractionDigits(), RoundingMode.DOWN); return; } } catch (IllegalArgumentException ignored){} @@ -126,9 +125,8 @@ public void setCurrency(String currency) { this.currency = currency; if (currency != null && !currency.isEmpty()) { try { - Currency currencyInstance = Currency.getInstance(currency); if (amount != null) { - this.amount = this.amount.setScale(currencyInstance.getDefaultFractionDigits(), RoundingMode.DOWN); + this.amount = this.amount.setScale(Currency.getInstance(currency).getDefaultFractionDigits(), RoundingMode.DOWN); } } catch (IllegalArgumentException ignored){} }