diff --git a/CHANGELOG.md b/CHANGELOG.md index 1710408..1c28f4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # CHANGELOG +## 4.1.2 (2024-05-27) +- fix JCB card detection and expiry date + ## 4.1.1 (20240-01-26) - Support mid_label in create token and unbundled create authentication diff --git a/README.md b/README.md index 89f40c3..15a70bb 100644 --- a/README.md +++ b/README.md @@ -31,24 +31,24 @@ Maven: com.xendit xendit-android - 4.1.1 + 4.1.2 pom ``` Gradle: ``` -compile 'com.xendit:xendit-android:4.1.1' +compile 'com.xendit:xendit-android:4.1.2' ``` Ivy: ``` - + ``` -For more information, visit https://central.sonatype.dev/artifact/com.xendit/xendit-android/4.1.1/versions +For more information, visit https://central.sonatype.dev/artifact/com.xendit/xendit-android/4.1.2/versions **Note**: diff --git a/xendit-android/build.gradle b/xendit-android/build.gradle index 3963364..544f77b 100644 --- a/xendit-android/build.gradle +++ b/xendit-android/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'com.jfrog.bintray' apply plugin: 'signing' group 'com.xendit' -version '4.1.1' +version '4.1.2' ext { bintrayOrg = 'xendit' @@ -38,7 +38,7 @@ android { minSdkVersion 21 targetSdkVersion 34 versionCode 1 - versionName '4.1.1' + versionName '4.1.2' testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { diff --git a/xendit-android/src/main/java/com/xendit/utils/CardValidator.java b/xendit-android/src/main/java/com/xendit/utils/CardValidator.java index 73d2133..6d5517f 100644 --- a/xendit-android/src/main/java/com/xendit/utils/CardValidator.java +++ b/xendit-android/src/main/java/com/xendit/utils/CardValidator.java @@ -77,14 +77,15 @@ public static boolean isExpiryValid(String expirationMonth, String expirationYea return false; } + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + String cleanMonth = removeWhitespace(expirationMonth); String cleanYear = removeWhitespace(expirationYear); return isNumeric(cleanMonth) && isNumeric(cleanYear) && parseNumberSafely(cleanMonth) >= 1 && parseNumberSafely(cleanMonth) <= 12 && - parseNumberSafely(cleanYear) >= 2017 && - parseNumberSafely(cleanYear) <= 2100 && + parseNumberSafely(cleanYear) <= (currentYear + 100) && isNotInThePast(cleanMonth, cleanYear); } @@ -293,7 +294,7 @@ private static boolean isCardDankort(String cardNumber) { private static boolean isCardJCB(String cardNumber) { if (cardNumber != null && cardNumber.length() >= 4) { int startingNumber = number(cardNumber.substring(0, 4)); - return startingNumber >= 3528 && startingNumber <= 3589; + return (startingNumber >= 3528 && startingNumber <= 3589) || cardNumber.startsWith("308800") || cardNumber.startsWith("333755"); } else { return false; }