Releases: Adyen/adyen-android
5.7.1
5.7.0
New
- You can now use Adyen Test Cards Android to autofill test payment method information, to test your integration more quickly.
- For Twint:
- You can now store payment details and pay with stored payment details.
Warning
For Twint Components integrations, you must now use TwintComponent
instead of InstantPaymentComponent
.
-
For French meal vouchers, the following payment method types are now available:
- Up. Payment method type: mealVoucher_FR_groupeup.
- Natixis. Payment method type: mealVoucher_FR_natixis.
- Sodexo. Payment method type: mealVoucher_FR_sodexo.
- Learn to configure French meal vouchers.
-
For API-only integrations with encrypted card details, you can now use the following classes to validate corresponding fields:
Class Description CardNumberValidator
Validates the card number field. CardExpiryDateValidator
Validates the expiry date field. CardSecurityCodeValidator
Validates the security code field. -
Support for the following locales:
Locale Values Catalan ca-ES Icelandic is-IS Bulgarian bg-BG Estonian et-EE Latvian lv-LV Lithuanian lt-lT
Fixed
- When parsing JSON objects with explicit null values, JSON deserialization no longer returns the coerced
null
string.
Improved
- For UPI Intent, if the shopper selects the Continue button without selecting an UPI option, an error message now shows.
- For Drop-in, in the navigation bar, the accessibility of the Back/Close button is improved.
Changed
- For Drop-in, headers of preselected stored payment screen and payment methods list screen are updated.
- When you set
analyticsConfiguration = AnalyticsConfiguration(AnalyticsLevel.NONE)
, only Drop-in/Components analytics are not sent to Adyen. - Dependency versions:
Name Version Adyen 3DS2 2.2.21 Cash App Pay 2.5.0 Android Gradle Plugin 8.5.1 AndroidX Fragment 1.8.3 AndroidX Activity 1.9.2 AndroidX Compose Activity 1.9.2 AndroidX Compose BOM 2024.06.00 AndroidX Lifecycle 2.8.3 AndroidX Lifecycle ViewModel Compose 2.8.3 AndroidX AppCompat 1.7.0
Deprecated
-
The style for payment method list headers. Use the new style instead.
Previous Now AdyenCheckout.TextAppearance.HeaderTitle
AdyenCheckout.TextAppearance.HeaderLabel
-
The
com.adyen.checkout.instant.ActionHandlingMethod
method. Use the new method instead.Previous Now com.adyen.checkout.instant.ActionHandlingMethod
com.adyen.checkout.components.core.ActionHandlingMethod
5.6.0
New
- For Google Pay on Advanced flow,
onSubmit
now returnsthreeDS2SdkVersion
in thepaymentMethod
object that you must pass in your/payments
request to correctly trigger the 3D Secure 2 flow.
Fixed
- On Android API versions 21 to 25, the
NoSuchMethodError
no longer occurs during the 3D Secure 2 challenge flow. - When using R8 to shrink your code,
CIRCULAR REFERENCE: com.android.tools.r8.utils.b: Missing class...
errors no longer occur.
Changed
- Dependency versions:
Name Version Adyen 3DS2 2.2.19 Kotlin 1.9.24 Android Gradle plugin 8.4.1 AndroidX Compose Compiler 1.5.14 Kotlin coroutines 1.8.1 AndroidX Fragment 1.7.1
4.13.6
Fixed
- On Android API versions 21 to 25, the
NoSuchMethodError
no longer occurs during the 3D Secure 2 challenge flow.
Changed
- Dependency versions:
Name Version Adyen 3DS2 2.2.19
5.5.0
New
- 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.
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
- Dependency versions:
Name Version AndroidX Compose BoM 2024.05.00 AndroidX Lifecycle 2.8.2 Material Design 1.12.0
Deprecated
We recommend that you remove the following from your integration.
- For
IdealComponent
:isConfirmationRequired()
submit()
- For iDEAL configuration:
setViewType()
setHideIssuerLogos()
setSubmitButtonVisible()
5.4.0
New
- For external redirects, you can now customize the colors of the toolbar and navigation bar displayed in 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:
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)
}
}
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 thesetEnableRemovingStoredPaymentMethods
flag in the Drop-in configuration was ignored.
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 2.2.18 Android Gradle plugin 8.3.2 AndroidX Browser 1.8.0 AndroidX Compose Activity 1.9.0 AndroidX Compose BoM 2024.04.01 AndroidX Compose Compiler 1.5.12 AndroidX Lifecycle 2.7.0 Google Pay 19.3.0 Google Pay Compose Button 1.0.0 Kotlin 1.9.23 Kotlin coroutines 1.8.0
4.13.5
Changed
- Dependency versions:
Name Version Adyen 3DS2 2.2.17
5.3.1
Fixed
- For Drop-in and Components, when
?android:attr/textColor
is not defined in your own theme, the Card Component no longer crashes. - The
onAdditionalDetails
event is now triggered only once. Previously, the event was triggered multiple times in some edge cases. - The build output no longer contains warnings about multiple substitutions specified in non-positional format in string resources.
- For the Card Component, we fixed localization issues that occurred when using the Address Lookup functionality.
- Overriding some of the XML styles without specifying a parent style no longer causes a build error.
Removed
- You can no longer use functions like
CheckoutConfiguration.getCardConfiguration()
orCheckoutConfiguration.getDropInConfiguration()
to get configurations from theCheckoutConfiguration
object. When starting Drop-in or Components, pass the fullCheckoutConfiguration
object.
Changed
- Dependency versions:
Name Version Android Gradle plugin 8.3.1
5.3.0
New
- A new way to create a configuration using DSL to be more declarative and concise:
CheckoutConfiguration(
environment = environment,
clientKey = clientKey,
shopperLocale = shopperLocale,
amount = amount,
) {
dropIn {
setEnableRemovingStoredPaymentMethods(true)
}
card {
setHolderNameRequired(true)
setShopperReference("...")
}
adyen3DS2 {
setThreeDSRequestorAppURL("...")
}
}
Warning
If you use the new configuration DSL, pass the CheckoutConfiguration
object as it is when starting Drop-in or Components.
Do not use the functions to get configurations (such as CheckoutConfiguration.getDropInConfiguration()
or CheckoutConfiguration.getCardConfiguration()
). These functions will be removed in the following release.
- For the Card Component, you can use the new Address Lookup functionality.
- For voucher actions: when the
url
ordownloadUrl
is not included, the shopper has the option to select Save as image and save the voucher to the device'sDownloads
folder. - You can now set your own
AdyenLogger
instance withAdyenLogger.setLogger
. This gives the ability to intercept logs and handle them in your own way. - Instructions to use the testing app in the repository. You can follow
How to migrate
section here. - Payment methods:
- Multibanco. Payment method type: multibanco.
- Pay Easy. Payment method type: econtext_atm.
- Convenience Stores Japan. Payment method type: econtext_stores
- Online Banking Japan. Payment method type: econtext_online.
- Seven-Eleven: Payment method type: econtext_seven_eleven
Fixed
- When building
minifyEnabled
without thekotlin-parcelize
plugin in your project, the build should no longer crash. - When handling actions, you no longer get the
IllegalArgumentException: Unsupported delegate type
error that causes a crash.
Deprecated
- When creating a configuration, the
Builder
constructors with aContext
is deprecated. You can now omit thecontext
parameter. PermissionException
. Handle permissions throughActionComponentCallback
,SessionComponentCallback
, orComponentCallback
callbacks instead.- The styles for vouchers have been changed:
-
Previous (v5.2.0 or earlier) Now (v5.3.0) AdyenCheckout.Voucher.Description.Bacs
AdyenCheckout.Voucher.Simple.Description
AdyenCheckout.Voucher.Description.Boleto
AdyenCheckout.Voucher.Full.Description
AdyenCheckout.Voucher.ExpirationDateLabel
AdyenCheckout.Voucher.InformationFieldLabel
AdyenCheckout.Voucher.ExpirationDate
AdyenCheckout.Voucher.InformationFieldValue
AdyenCheckout.Voucher.ButtonCopyCode
AdyenCheckout.Voucher.Button.CopyCode
AdyenCheckout.Voucher.ButtonDownloadPdf
AdyenCheckout.Voucher.Button.DownloadPdf
-
- Logger.LogLevel has been deprecated.
-
Previous (v5.2.0 or earlier) Now (v5.3.0) Logger.LogLevel
AdyenLogLevel
AdyenLogger.setLogLevel(logLevel: Int)
AdyenLogger.setLogLevel(level: AdyenLogLevel)
-
Changed
- When creating a configuration, the
shopperLocale
parameter is now optional.- Sessions flow: when you don't set it, the shopper locale is set to the value included in the
/sessions
request. - Advanced flow: when you don't set it, the shopper local is set to the primary user locale on the device.
- Sessions flow: when you don't set it, the shopper locale is set to the value included in the
- For Drop-in, all actions now start in expanded mode.
- For the Google Pay Component, you no longer need to manually import the
3ds2
module to handle transactions that require Native 3D Secure 2 challenge. - If you use
DropInServiceResult.Error
without specifying an error message, the default has changed fromError sending payment. Please try again.
toAn unknown error occurred
. - For the Sessions flow:
- When starting Drop-in (with
DropIn.startPayment
) or creating a Component (withYourComponent.PROVIDER.get
), theconfiguration
parameter is now optional. - When using
CheckoutSessionProvider.createSession
to create aCheckoutSession
, you can pass onlyenvironment
andclientKey
instead of the whole configuration. - Removing stored payment methods is now handled internally. You no longer need to override the
onRemoveStoredPaymentMethod
function.
- When starting Drop-in (with
- Dependency versions:
Name Version Kotlin 1.9.22 AndroidX Compose compiler 1.5.8 AndroidX Compose Activity 1.8.2 Material Design 1.11.0
5.2.0
New
- We added a UI customization guide, which explains how to customize the styles and string resources.
Improved
- The integration now uses JSON Web Encryption (JWE) with RSA OAEP 256 and AES GCM 256 for encryption. You do not need to make any changes to your integration.
Fixed
- For Drop-in, error dialogs no longer display user unfriendly messages when using the Sessions flow.
- Overriding some of the XML styles without specifying a parent style no longer causes a build error.
- The Await and QR Code action components no longer get stuck in a loading state after the payment is completed.
Changed
- Dependency versions:
Name Version Kotlin 1.9.21 Android Gradle plugin 8.2.0 AndroidX Compose compiler 1.5.7 AndroidX Compose Activity 1.8.1 AndroidX Browser 1.7.0