Skip to content

Commit f945b9c

Browse files
authored
Merge pull request #1670 from Adyen/develop
Release 5.5.0
2 parents c08b028 + 76011ec commit f945b9c

File tree

222 files changed

+13983
-571
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

222 files changed

+13983
-571
lines changed

.github/workflows/check_pr.yml

+7-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ jobs:
2323
uses: ./.github/workflows/run_tests.yml
2424
needs: assemble
2525
sonar_cloud:
26-
name: SonarCloud
27-
uses: ./.github/workflows/sonar_cloud.yml
28-
secrets: inherit
26+
name: SonarCloud
27+
uses: ./.github/workflows/sonar_cloud.yml
28+
secrets: inherit
29+
validate_public_api:
30+
name: Validate public API
31+
uses: ./.github/workflows/validate_public_api.yml
32+
secrets: inherit

.github/workflows/publish_docs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838

3939
# Deploy to GitHub Pages
4040
- name: Deploy GitHub Pages
41-
uses: JamesIves/[email protected].0
41+
uses: JamesIves/[email protected].1
4242
with:
4343
BRANCH: gh-pages
4444
FOLDER: build/docs/
+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Validate public API
2+
3+
on:
4+
workflow_call
5+
6+
jobs:
7+
validate_public_api:
8+
name: Validate public API
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Set up JDK
15+
uses: actions/setup-java@v4
16+
with:
17+
distribution: 'zulu'
18+
java-version: 17
19+
20+
- name: Gradle cache
21+
uses: gradle/actions/setup-gradle@v3
22+
with:
23+
cache-read-only: true
24+
25+
- name: Check public API
26+
run: |
27+
( ./gradlew apiCheck --continue 2> "${{ github.workspace }}/api_changes.txt" ) || true
28+
bash ./scripts/process_api_changes.sh
29+
30+
- name: Comment on PR
31+
uses: thollander/actions-comment-pull-request@v2
32+
with:
33+
filePath: "${{ github.workspace }}/api_changes.md"
34+
comment_tag: api_changes
35+
mode: recreate
36+
37+
- name: Check if successful
38+
run : |
39+
if [ -s api_changes.txt ]
40+
then
41+
# Fail workflow if there are API changes
42+
exit 1
43+
fi

3ds2/api/3ds2.api

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Component : androidx/lifecycle/ViewModel, com/adyen/checkout/components/core/RedirectableActionComponent, com/adyen/checkout/components/core/internal/ActionComponent, com/adyen/checkout/components/core/internal/IntentHandlingComponent, com/adyen/checkout/ui/core/internal/ui/ViewableComponent {
2+
public static final field Companion Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component$Companion;
3+
public static final field PROVIDER Lcom/adyen/checkout/components/core/internal/provider/ActionComponentProvider;
4+
public fun canHandleAction (Lcom/adyen/checkout/components/core/action/Action;)Z
5+
public fun getDelegate ()Lcom/adyen/checkout/adyen3ds2/internal/ui/Adyen3DS2Delegate;
6+
public synthetic fun getDelegate ()Lcom/adyen/checkout/components/core/internal/ui/ComponentDelegate;
7+
public fun getViewFlow ()Lkotlinx/coroutines/flow/Flow;
8+
public fun handleAction (Lcom/adyen/checkout/components/core/action/Action;Landroid/app/Activity;)V
9+
public fun handleIntent (Landroid/content/Intent;)V
10+
public fun setOnRedirectListener (Lkotlin/jvm/functions/Function0;)V
11+
}
12+
13+
public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Component$Companion {
14+
}
15+
16+
public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Configuration : com/adyen/checkout/components/core/internal/Configuration {
17+
public static final field CREATOR Landroid/os/Parcelable$Creator;
18+
public synthetic fun <init> (Ljava/util/Locale;Lcom/adyen/checkout/core/Environment;Ljava/lang/String;Lcom/adyen/checkout/components/core/AnalyticsConfiguration;Lcom/adyen/checkout/components/core/Amount;Lcom/adyen/threeds2/customization/UiCustomization;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
19+
public fun describeContents ()I
20+
public fun getAmount ()Lcom/adyen/checkout/components/core/Amount;
21+
public fun getAnalyticsConfiguration ()Lcom/adyen/checkout/components/core/AnalyticsConfiguration;
22+
public fun getClientKey ()Ljava/lang/String;
23+
public fun getEnvironment ()Lcom/adyen/checkout/core/Environment;
24+
public fun getShopperLocale ()Ljava/util/Locale;
25+
public final fun getThreeDSRequestorAppURL ()Ljava/lang/String;
26+
public final fun getUiCustomization ()Lcom/adyen/threeds2/customization/UiCustomization;
27+
public fun writeToParcel (Landroid/os/Parcel;I)V
28+
}
29+
30+
public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Builder : com/adyen/checkout/components/core/internal/BaseConfigurationBuilder {
31+
public fun <init> (Landroid/content/Context;Lcom/adyen/checkout/core/Environment;Ljava/lang/String;)V
32+
public fun <init> (Lcom/adyen/checkout/core/Environment;Ljava/lang/String;)V
33+
public fun <init> (Ljava/util/Locale;Lcom/adyen/checkout/core/Environment;Ljava/lang/String;)V
34+
public synthetic fun buildInternal ()Lcom/adyen/checkout/components/core/internal/Configuration;
35+
public final fun setThreeDSRequestorAppURL (Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Builder;
36+
public final fun setUiCustomization (Lcom/adyen/threeds2/customization/UiCustomization;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Builder;
37+
}
38+
39+
public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Creator : android/os/Parcelable$Creator {
40+
public fun <init> ()V
41+
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;
42+
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
43+
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;
44+
public synthetic fun newArray (I)[Ljava/lang/Object;
45+
}
46+
47+
public final class com/adyen/checkout/adyen3ds2/Adyen3DS2ConfigurationKt {
48+
public static final fun adyen3DS2 (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lkotlin/jvm/functions/Function1;)Lcom/adyen/checkout/components/core/CheckoutConfiguration;
49+
public static synthetic fun adyen3DS2$default (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/adyen/checkout/components/core/CheckoutConfiguration;
50+
}
51+
52+
public final class com/adyen/checkout/adyen3ds2/Authentication3DS2Exception : com/adyen/checkout/core/exception/ComponentException {
53+
public static final field Companion Lcom/adyen/checkout/adyen3ds2/Authentication3DS2Exception$Companion;
54+
public fun <init> (Ljava/lang/String;)V
55+
}
56+
57+
public final class com/adyen/checkout/adyen3ds2/Authentication3DS2Exception$Companion {
58+
}
59+
60+
public final class com/adyen/checkout/adyen3ds2/BuildConfig {
61+
public static final field BUILD_TYPE Ljava/lang/String;
62+
public static final field CHECKOUT_VERSION Ljava/lang/String;
63+
public static final field DEBUG Z
64+
public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String;
65+
public fun <init> ()V
66+
}
67+
68+
public final class com/adyen/checkout/adyen3ds2/Cancelled3DS2Exception : com/adyen/checkout/core/exception/ComponentException {
69+
public static final field Companion Lcom/adyen/checkout/adyen3ds2/Cancelled3DS2Exception$Companion;
70+
public fun <init> (Ljava/lang/String;)V
71+
}
72+
73+
public final class com/adyen/checkout/adyen3ds2/Cancelled3DS2Exception$Companion {
74+
}
75+
76+
public final class com/adyen/checkout/adyen3ds2/internal/data/model/ChallengeToken$Creator : android/os/Parcelable$Creator {
77+
public fun <init> ()V
78+
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/ChallengeToken;
79+
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
80+
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/ChallengeToken;
81+
public synthetic fun newArray (I)[Ljava/lang/Object;
82+
}
83+
84+
public final class com/adyen/checkout/adyen3ds2/internal/data/model/FingerprintToken$Creator : android/os/Parcelable$Creator {
85+
public fun <init> ()V
86+
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/FingerprintToken;
87+
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
88+
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/FingerprintToken;
89+
public synthetic fun newArray (I)[Ljava/lang/Object;
90+
}
91+
92+
public final class com/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintRequest$Creator : android/os/Parcelable$Creator {
93+
public fun <init> ()V
94+
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintRequest;
95+
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
96+
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintRequest;
97+
public synthetic fun newArray (I)[Ljava/lang/Object;
98+
}
99+
100+
public final class com/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintResponse$Creator : android/os/Parcelable$Creator {
101+
public fun <init> ()V
102+
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintResponse;
103+
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
104+
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintResponse;
105+
public synthetic fun newArray (I)[Ljava/lang/Object;
106+
}
107+
108+
public final class com/adyen/checkout/adyen3ds2/internal/provider/Adyen3DS2ComponentProvider : com/adyen/checkout/components/core/internal/provider/ActionComponentProvider {
109+
public fun canHandleAction (Lcom/adyen/checkout/components/core/action/Action;)Z
110+
public fun get (Landroidx/activity/ComponentActivity;Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component;
111+
public fun get (Landroidx/activity/ComponentActivity;Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component;
112+
public synthetic fun get (Landroidx/activity/ComponentActivity;Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/components/core/internal/ActionComponent;
113+
public synthetic fun get (Landroidx/activity/ComponentActivity;Lcom/adyen/checkout/components/core/internal/Configuration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/components/core/internal/ActionComponent;
114+
public fun get (Landroidx/fragment/app/Fragment;Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component;
115+
public fun get (Landroidx/fragment/app/Fragment;Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component;
116+
public synthetic fun get (Landroidx/fragment/app/Fragment;Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/components/core/internal/ActionComponent;
117+
public synthetic fun get (Landroidx/fragment/app/Fragment;Lcom/adyen/checkout/components/core/internal/Configuration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/components/core/internal/ActionComponent;
118+
public fun get (Landroidx/savedstate/SavedStateRegistryOwner;Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/LifecycleOwner;Landroid/app/Application;Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component;
119+
public fun get (Landroidx/savedstate/SavedStateRegistryOwner;Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/LifecycleOwner;Landroid/app/Application;Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component;
120+
public synthetic fun get (Landroidx/savedstate/SavedStateRegistryOwner;Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/LifecycleOwner;Landroid/app/Application;Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/components/core/internal/ActionComponent;
121+
public synthetic fun get (Landroidx/savedstate/SavedStateRegistryOwner;Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/LifecycleOwner;Landroid/app/Application;Lcom/adyen/checkout/components/core/internal/Configuration;Lcom/adyen/checkout/components/core/ActionComponentCallback;Ljava/lang/String;)Lcom/adyen/checkout/components/core/internal/ActionComponent;
122+
public fun getDelegate (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Landroidx/lifecycle/SavedStateHandle;Landroid/app/Application;)Lcom/adyen/checkout/adyen3ds2/internal/ui/Adyen3DS2Delegate;
123+
public synthetic fun getDelegate (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Landroidx/lifecycle/SavedStateHandle;Landroid/app/Application;)Lcom/adyen/checkout/components/core/internal/ui/ActionDelegate;
124+
public fun getSupportedActionTypes ()Ljava/util/List;
125+
public fun providesDetails (Lcom/adyen/checkout/components/core/action/Action;)Z
126+
}
127+

README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,23 @@ Import the corresponding module in your `build.gradle` file.
3131

3232
For Drop-in:
3333
```groovy
34-
implementation "com.adyen.checkout:drop-in-compose:5.4.0"
34+
implementation "com.adyen.checkout:drop-in-compose:5.5.0"
3535
```
3636
For the Credit Card component:
3737
```groovy
38-
implementation "com.adyen.checkout:card:5.4.0"
39-
implementation "com.adyen.checkout:components-compose:5.4.0"
38+
implementation "com.adyen.checkout:card:5.5.0"
39+
implementation "com.adyen.checkout:components-compose:5.5.0"
4040
```
4141

4242
### Without Jetpack Compose
4343

4444
For Drop-in:
4545
```groovy
46-
implementation "com.adyen.checkout:drop-in:5.4.0"
46+
implementation "com.adyen.checkout:drop-in:5.5.0"
4747
```
4848
For the Credit Card component:
4949
```groovy
50-
implementation "com.adyen.checkout:card:5.4.0"
50+
implementation "com.adyen.checkout:card:5.5.0"
5151
```
5252

5353
The library is available on [Maven Central][mavenRepo].

RELEASE_NOTES.md

+25-35
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,34 @@
99
[//]: # ( - Configurations public constructor are deprecated, please use each Configuration's builder to make a Configuration object)
1010

1111
## New
12-
- For external redirects, you can now [customize the colors of the toolbar and navigation bar](docs/UI_CUSTOMIZATION.md#styling-custom-tabs) displayed in [Custom Tabs](https://developer.chrome.com/docs/android/custom-tabs).
13-
- TWINT is now supported with a native flow, and you no longer need to redirect shoppers through the browser. To use the redirect flow, set the following configuration:
14-
```kotlin
15-
CheckoutConfiguration(
16-
environment = environment,
17-
clientKey = clientKey,
18-
..
19-
) {
20-
// Optionally pass the payment method type to only configure it for the specific payment method.
21-
instantPayment(PaymentMethodTypes.TWINT) {
22-
setActionHandlingMethod(ActionHandlingMethod.PREFER_WEB)
23-
}
24-
}
25-
```
12+
- Support for the UPI Intent flow, where the shopper can choose a UPI app to pay through. They are redirected to and complete the payment on the selected app.
13+
- The new iDEAL payment flow where the shopper is redirected to the iDEAL payment page to select their bank and authorize the payment.
2614

27-
## Fixed
28-
- Fixed some memory leaks.
29-
- In case of a debug build, Drop-in no longer overrides the log level.
30-
- For cards, when a shopper does not select an address, the address lookup function now displays a validation error.
31-
- Actions no longer crash when your app uses obfuscation.
32-
- When handling a 3D Secure 2 challenge using Checkout API v66 or earlier, Drop-in no longer throws an error.
33-
- If the app process unexpectedly terminates when handling actions, the state is now restored and you can proceed with the payment flow.
34-
- For `/sessions`, fixed an issue where the `setEnableRemovingStoredPaymentMethods` flag in the [Drop-in configuration](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow/?platform=Android&integration=Drop-in#3-optional-add-a-configuration-object) was ignored.
15+
## Improved
16+
- Drop-in navigation:
17+
- Added the top navigation bar.
18+
- Disabled the dragging gesture that caused Drop-in to be dismissed.
19+
- When the shopper navigates back from an additional action screen (for example Await), Drop-in is dismissed.
20+
21+
- Autofill support for the following:
22+
- For gift cards, the gift card number and PIN fields.
23+
- For UPI Virtual Payments, the address field.
24+
- For payment methods that use them, the address input fields.
3525

3626
## Changed
37-
- The phone number input field in the payment form now shows ISO codes instead of flags.
38-
- The UI elements that were previously labelled **Country** are now **Country/Region**.
3927
- Dependency versions:
4028
| Name | Version |
4129
|--------------------------------------------------------------------------------------------------------------|-------------------------------|
42-
| [Adyen 3DS2](https://github.com/Adyen/adyen-3ds2-android/releases/tag/2.2.18) | **2.2.18** |
43-
| [Android Gradle plugin](https://developer.android.com/build/releases/gradle-plugin) | **8.3.2** |
44-
| [AndroidX Browser](https://developer.android.com/jetpack/androidx/releases/browser#1.8.0) | **1.8.0** |
45-
| [AndroidX Compose Activity](https://developer.android.com/jetpack/androidx/releases/activity#1.9.0) | **1.9.0** |
46-
| [AndroidX Compose BoM](https://developer.android.com/develop/ui/compose/bom/bom-mapping) | **2024.04.01** |
47-
| [AndroidX Compose Compiler](https://developer.android.com/jetpack/androidx/releases/compose-compiler#1.5.12) | **1.5.12** |
48-
| [AndroidX Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.7.0) | **2.7.0** |
49-
| [Google Pay](https://developers.google.com/pay/api/android/support/release-notes#feb-24) | **19.3.0** |
50-
| [Google Pay Compose Button](https://github.com/google-pay/compose-pay-button/releases/tag/v1.0.0) | **1.0.0** |
51-
| [Kotlin](https://github.com/JetBrains/kotlin/releases/tag/v1.9.24) | **1.9.24** |
52-
| [Kotlin coroutines](https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.8.0) | **1.8.0** |
30+
| [AndroidX Compose BoM](https://developer.android.com/develop/ui/compose/bom/bom-mapping) | **2024.05.00** |
31+
| [AndroidX Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.8.2) | **2.8.2** |
32+
| [Material Design](https://github.com/material-components/material-components-android/releases/tag/1.12.0/) | **1.12.0** |
33+
34+
## Deprecated
35+
We recommend that you remove the following from your integration.
36+
- For `IdealComponent`:
37+
- `isConfirmationRequired()`
38+
- `submit()`
39+
- For iDEAL configuration:
40+
- `setViewType()`
41+
- `setHideIssuerLogos()`
42+
- `setSubmitButtonVisible()`

0 commit comments

Comments
 (0)