Skip to content

Commit

Permalink
Merge pull request #1670 from Adyen/develop
Browse files Browse the repository at this point in the history
Release 5.5.0
  • Loading branch information
jreij authored Jun 21, 2024
2 parents c08b028 + 76011ec commit f945b9c
Show file tree
Hide file tree
Showing 222 changed files with 13,983 additions and 571 deletions.
10 changes: 7 additions & 3 deletions .github/workflows/check_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ jobs:
uses: ./.github/workflows/run_tests.yml
needs: assemble
sonar_cloud:
name: SonarCloud
uses: ./.github/workflows/sonar_cloud.yml
secrets: inherit
name: SonarCloud
uses: ./.github/workflows/sonar_cloud.yml
secrets: inherit
validate_public_api:
name: Validate public API
uses: ./.github/workflows/validate_public_api.yml
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/publish_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

# Deploy to GitHub Pages
- name: Deploy GitHub Pages
uses: JamesIves/[email protected].0
uses: JamesIves/[email protected].1
with:
BRANCH: gh-pages
FOLDER: build/docs/
43 changes: 43 additions & 0 deletions .github/workflows/validate_public_api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Validate public API

on:
workflow_call

jobs:
validate_public_api:
name: Validate public API
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Gradle cache
uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: true

- name: Check public API
run: |
( ./gradlew apiCheck --continue 2> "${{ github.workspace }}/api_changes.txt" ) || true
bash ./scripts/process_api_changes.sh
- name: Comment on PR
uses: thollander/actions-comment-pull-request@v2
with:
filePath: "${{ github.workspace }}/api_changes.md"
comment_tag: api_changes
mode: recreate

- name: Check if successful
run : |
if [ -s api_changes.txt ]
then
# Fail workflow if there are API changes
exit 1
fi
127 changes: 127 additions & 0 deletions 3ds2/api/3ds2.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
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 {
public static final field Companion Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Component$Companion;
public static final field PROVIDER Lcom/adyen/checkout/components/core/internal/provider/ActionComponentProvider;
public fun canHandleAction (Lcom/adyen/checkout/components/core/action/Action;)Z
public fun getDelegate ()Lcom/adyen/checkout/adyen3ds2/internal/ui/Adyen3DS2Delegate;
public synthetic fun getDelegate ()Lcom/adyen/checkout/components/core/internal/ui/ComponentDelegate;
public fun getViewFlow ()Lkotlinx/coroutines/flow/Flow;
public fun handleAction (Lcom/adyen/checkout/components/core/action/Action;Landroid/app/Activity;)V
public fun handleIntent (Landroid/content/Intent;)V
public fun setOnRedirectListener (Lkotlin/jvm/functions/Function0;)V
}

public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Component$Companion {
}

public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Configuration : com/adyen/checkout/components/core/internal/Configuration {
public static final field CREATOR Landroid/os/Parcelable$Creator;
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
public fun describeContents ()I
public fun getAmount ()Lcom/adyen/checkout/components/core/Amount;
public fun getAnalyticsConfiguration ()Lcom/adyen/checkout/components/core/AnalyticsConfiguration;
public fun getClientKey ()Ljava/lang/String;
public fun getEnvironment ()Lcom/adyen/checkout/core/Environment;
public fun getShopperLocale ()Ljava/util/Locale;
public final fun getThreeDSRequestorAppURL ()Ljava/lang/String;
public final fun getUiCustomization ()Lcom/adyen/threeds2/customization/UiCustomization;
public fun writeToParcel (Landroid/os/Parcel;I)V
}

public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Builder : com/adyen/checkout/components/core/internal/BaseConfigurationBuilder {
public fun <init> (Landroid/content/Context;Lcom/adyen/checkout/core/Environment;Ljava/lang/String;)V
public fun <init> (Lcom/adyen/checkout/core/Environment;Ljava/lang/String;)V
public fun <init> (Ljava/util/Locale;Lcom/adyen/checkout/core/Environment;Ljava/lang/String;)V
public synthetic fun buildInternal ()Lcom/adyen/checkout/components/core/internal/Configuration;
public final fun setThreeDSRequestorAppURL (Ljava/lang/String;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Builder;
public final fun setUiCustomization (Lcom/adyen/threeds2/customization/UiCustomization;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Builder;
}

public final class com/adyen/checkout/adyen3ds2/Adyen3DS2Configuration$Creator : android/os/Parcelable$Creator {
public fun <init> ()V
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/Adyen3DS2Configuration;
public synthetic fun newArray (I)[Ljava/lang/Object;
}

public final class com/adyen/checkout/adyen3ds2/Adyen3DS2ConfigurationKt {
public static final fun adyen3DS2 (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Lkotlin/jvm/functions/Function1;)Lcom/adyen/checkout/components/core/CheckoutConfiguration;
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;
}

public final class com/adyen/checkout/adyen3ds2/Authentication3DS2Exception : com/adyen/checkout/core/exception/ComponentException {
public static final field Companion Lcom/adyen/checkout/adyen3ds2/Authentication3DS2Exception$Companion;
public fun <init> (Ljava/lang/String;)V
}

public final class com/adyen/checkout/adyen3ds2/Authentication3DS2Exception$Companion {
}

public final class com/adyen/checkout/adyen3ds2/BuildConfig {
public static final field BUILD_TYPE Ljava/lang/String;
public static final field CHECKOUT_VERSION Ljava/lang/String;
public static final field DEBUG Z
public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String;
public fun <init> ()V
}

public final class com/adyen/checkout/adyen3ds2/Cancelled3DS2Exception : com/adyen/checkout/core/exception/ComponentException {
public static final field Companion Lcom/adyen/checkout/adyen3ds2/Cancelled3DS2Exception$Companion;
public fun <init> (Ljava/lang/String;)V
}

public final class com/adyen/checkout/adyen3ds2/Cancelled3DS2Exception$Companion {
}

public final class com/adyen/checkout/adyen3ds2/internal/data/model/ChallengeToken$Creator : android/os/Parcelable$Creator {
public fun <init> ()V
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/ChallengeToken;
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/ChallengeToken;
public synthetic fun newArray (I)[Ljava/lang/Object;
}

public final class com/adyen/checkout/adyen3ds2/internal/data/model/FingerprintToken$Creator : android/os/Parcelable$Creator {
public fun <init> ()V
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/FingerprintToken;
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/FingerprintToken;
public synthetic fun newArray (I)[Ljava/lang/Object;
}

public final class com/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintRequest$Creator : android/os/Parcelable$Creator {
public fun <init> ()V
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintRequest;
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintRequest;
public synthetic fun newArray (I)[Ljava/lang/Object;
}

public final class com/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintResponse$Creator : android/os/Parcelable$Creator {
public fun <init> ()V
public final fun createFromParcel (Landroid/os/Parcel;)Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintResponse;
public synthetic fun createFromParcel (Landroid/os/Parcel;)Ljava/lang/Object;
public final fun newArray (I)[Lcom/adyen/checkout/adyen3ds2/internal/data/model/SubmitFingerprintResponse;
public synthetic fun newArray (I)[Ljava/lang/Object;
}

public final class com/adyen/checkout/adyen3ds2/internal/provider/Adyen3DS2ComponentProvider : com/adyen/checkout/components/core/internal/provider/ActionComponentProvider {
public fun canHandleAction (Lcom/adyen/checkout/components/core/action/Action;)Z
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
public fun getDelegate (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Landroidx/lifecycle/SavedStateHandle;Landroid/app/Application;)Lcom/adyen/checkout/adyen3ds2/internal/ui/Adyen3DS2Delegate;
public synthetic fun getDelegate (Lcom/adyen/checkout/components/core/CheckoutConfiguration;Landroidx/lifecycle/SavedStateHandle;Landroid/app/Application;)Lcom/adyen/checkout/components/core/internal/ui/ActionDelegate;
public fun getSupportedActionTypes ()Ljava/util/List;
public fun providesDetails (Lcom/adyen/checkout/components/core/action/Action;)Z
}

10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,23 @@ Import the corresponding module in your `build.gradle` file.

For Drop-in:
```groovy
implementation "com.adyen.checkout:drop-in-compose:5.4.0"
implementation "com.adyen.checkout:drop-in-compose:5.5.0"
```
For the Credit Card component:
```groovy
implementation "com.adyen.checkout:card:5.4.0"
implementation "com.adyen.checkout:components-compose:5.4.0"
implementation "com.adyen.checkout:card:5.5.0"
implementation "com.adyen.checkout:components-compose:5.5.0"
```

### Without Jetpack Compose

For Drop-in:
```groovy
implementation "com.adyen.checkout:drop-in:5.4.0"
implementation "com.adyen.checkout:drop-in:5.5.0"
```
For the Credit Card component:
```groovy
implementation "com.adyen.checkout:card:5.4.0"
implementation "com.adyen.checkout:card:5.5.0"
```

The library is available on [Maven Central][mavenRepo].
Expand Down
60 changes: 25 additions & 35 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,44 +9,34 @@
[//]: # ( - Configurations public constructor are deprecated, please use each Configuration's builder to make a Configuration object)

## New
- 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).
- 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:
```kotlin
CheckoutConfiguration(
environment = environment,
clientKey = clientKey,
..
) {
// Optionally pass the payment method type to only configure it for the specific payment method.
instantPayment(PaymentMethodTypes.TWINT) {
setActionHandlingMethod(ActionHandlingMethod.PREFER_WEB)
}
}
```
- 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.
- The new iDEAL payment flow where the shopper is redirected to the iDEAL payment page to select their bank and authorize the payment.

## Fixed
- Fixed some memory leaks.
- In case of a debug build, Drop-in no longer overrides the log level.
- For cards, when a shopper does not select an address, the address lookup function now displays a validation error.
- Actions no longer crash when your app uses obfuscation.
- When handling a 3D Secure 2 challenge using Checkout API v66 or earlier, Drop-in no longer throws an error.
- If the app process unexpectedly terminates when handling actions, the state is now restored and you can proceed with the payment flow.
- 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.
## Improved
- Drop-in navigation:
- Added the top navigation bar.
- Disabled the dragging gesture that caused Drop-in to be dismissed.
- When the shopper navigates back from an additional action screen (for example Await), Drop-in is dismissed.

- Autofill support for the following:
- For gift cards, the gift card number and PIN fields.
- For UPI Virtual Payments, the address field.
- For payment methods that use them, the address input fields.

## Changed
- The phone number input field in the payment form now shows ISO codes instead of flags.
- The UI elements that were previously labelled **Country** are now **Country/Region**.
- Dependency versions:
| Name | Version |
|--------------------------------------------------------------------------------------------------------------|-------------------------------|
| [Adyen 3DS2](https://github.com/Adyen/adyen-3ds2-android/releases/tag/2.2.18) | **2.2.18** |
| [Android Gradle plugin](https://developer.android.com/build/releases/gradle-plugin) | **8.3.2** |
| [AndroidX Browser](https://developer.android.com/jetpack/androidx/releases/browser#1.8.0) | **1.8.0** |
| [AndroidX Compose Activity](https://developer.android.com/jetpack/androidx/releases/activity#1.9.0) | **1.9.0** |
| [AndroidX Compose BoM](https://developer.android.com/develop/ui/compose/bom/bom-mapping) | **2024.04.01** |
| [AndroidX Compose Compiler](https://developer.android.com/jetpack/androidx/releases/compose-compiler#1.5.12) | **1.5.12** |
| [AndroidX Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.7.0) | **2.7.0** |
| [Google Pay](https://developers.google.com/pay/api/android/support/release-notes#feb-24) | **19.3.0** |
| [Google Pay Compose Button](https://github.com/google-pay/compose-pay-button/releases/tag/v1.0.0) | **1.0.0** |
| [Kotlin](https://github.com/JetBrains/kotlin/releases/tag/v1.9.24) | **1.9.24** |
| [Kotlin coroutines](https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.8.0) | **1.8.0** |
| [AndroidX Compose BoM](https://developer.android.com/develop/ui/compose/bom/bom-mapping) | **2024.05.00** |
| [AndroidX Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.8.2) | **2.8.2** |
| [Material Design](https://github.com/material-components/material-components-android/releases/tag/1.12.0/) | **1.12.0** |

## Deprecated
We recommend that you remove the following from your integration.
- For `IdealComponent`:
- `isConfirmationRequired()`
- `submit()`
- For iDEAL configuration:
- `setViewType()`
- `setHideIssuerLogos()`
- `setSubmitButtonVisible()`
Loading

0 comments on commit f945b9c

Please sign in to comment.