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;
}